<?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>226623</bug_id>
          
          <creation_ts>2021-06-03 21:38:42 -0700</creation_ts>
          <short_desc>Use Vector&lt;uint8_t&gt; instead of Vector&lt;char&gt; to store bytes in SharedBuffer</short_desc>
          <delta_ts>2021-06-04 21:08:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766660</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 21:38:42 -0700</bug_when>
    <thetext>Use Vector&lt;uint8_t&gt; instead of Vector&lt;char&gt; to store bytes in SharedBuffer. Also have SharedBuffer::data() return a `const uint8_t*` instead of `const char*`.
This is our preferred type to store bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766663</commentid>
    <comment_count>1</comment_count>
      <attachid>430537</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 21:45:00 -0700</bug_when>
    <thetext>Created attachment 430537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766671</commentid>
    <comment_count>2</comment_count>
      <attachid>430542</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 22:54:15 -0700</bug_when>
    <thetext>Created attachment 430542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766675</commentid>
    <comment_count>3</comment_count>
      <attachid>430543</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 22:59:05 -0700</bug_when>
    <thetext>Created attachment 430543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766677</commentid>
    <comment_count>4</comment_count>
      <attachid>430545</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 23:06:59 -0700</bug_when>
    <thetext>Created attachment 430545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766682</commentid>
    <comment_count>5</comment_count>
      <attachid>430549</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 23:14:49 -0700</bug_when>
    <thetext>Created attachment 430549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766688</commentid>
    <comment_count>6</comment_count>
      <attachid>430552</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-03 23:27:01 -0700</bug_when>
    <thetext>Created attachment 430552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766757</commentid>
    <comment_count>7</comment_count>
      <attachid>430575</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 07:38:18 -0700</bug_when>
    <thetext>Created attachment 430575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766760</commentid>
    <comment_count>8</comment_count>
      <attachid>430576</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 07:45:13 -0700</bug_when>
    <thetext>Created attachment 430576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766767</commentid>
    <comment_count>9</comment_count>
      <attachid>430577</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 08:06:49 -0700</bug_when>
    <thetext>Created attachment 430577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766845</commentid>
    <comment_count>10</comment_count>
      <attachid>430577</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-04 11:04:44 -0700</bug_when>
    <thetext>Comment on attachment 430577
Patch

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

We may want to work harder to make sure continue to adopt vectors in cases where this patch changes us to copy instead.

We may also want to use const void* and void* more on functions that take and process bytes, rather than using a specific byte pointer types.

&gt; Source/WTF/wtf/FileSystem.h:156
&gt; +WTF_EXPORT_PRIVATE int writeToFile(PlatformFileHandle, const char* data, int length); // FIXME: Should use `const uint8_t*`.

Maybe it should take const void* like the POSIX write() function.

&gt; Source/WTF/wtf/FileSystem.h:158
&gt; +WTF_EXPORT_PRIVATE int readFromFile(PlatformFileHandle, char* data, int length); // FIXME: Should use `uint8_t*`.

Maybe it should take void* like the POSIX read() function.

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:197
&gt; +        const char* nextBoundary = static_cast&lt;const char*&gt;(memmem(currentBoundary + boundaryLength, length - (currentBoundary + boundaryLength - reinterpret_cast&lt;const char*&gt;(data)), boundary.data(), boundaryLength));

Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:203
&gt; +            nextBoundary = static_cast&lt;const char*&gt;(memmem(nextBoundary + boundaryLength, length - (nextBoundary + boundaryLength - reinterpret_cast&lt;const char*&gt;(data)), boundary.data(), boundaryLength));

Ditto.

&gt; Source/WebCore/Modules/highlight/AppHighlight.h:55
&gt; +    encoder.encodeFixedLengthData(reinterpret_cast&lt;const uint8_t*&gt;(highlight-&gt;data()), highlight-&gt;size(), 1);

Why is a cast needed here? Doesn’t data() return a uint8_t*?

&gt; Source/WebCore/Modules/indexeddb/IDBGetResult.cpp:37
&gt; +    m_value = ThreadSafeDataBuffer::create({ buffer.data(), buffer.size() });

No cleaner idiom? Maybe a std::span or Vector?

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:172
&gt; +        const uint8_t* data = reinterpret_cast&lt;const uint8_t*&gt;(buffer-&gt;data.data&lt;uint8_t&gt;());

auto would be better here.

Why is reinterpret_cast needed here? What type does data&lt;uint8_t&gt;() return? Why not uint8_t*?

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:168
&gt; -                    m_generatedOTFBuffer = SharedBuffer::create(WTFMove(otfFont.value()));
&gt; +                    m_generatedOTFBuffer = SharedBuffer::create(otfFont-&gt;data(), otfFont-&gt;size());

I think this is now copying instead of adopting the Vector. That’s not as good.

&gt; Source/WebCore/fileapi/Blob.cpp:117
&gt; +    blobParts.append(Vector { buffer.data(), buffer.size() });

This seems to call for std::span. Or doesn’t SharedBuffer have a function that returns a Vector?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:583
&gt; +        NetworkResourcesData::ResourceData const* resourceData = m_resourcesData-&gt;maybeAddResourceData(requestId, reinterpret_cast&lt;const uint8_t*&gt;(data), dataLength);

Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?

&gt; Source/WebCore/loader/NetscapePlugInStreamLoader.cpp:159
&gt; +        m_client-&gt;didReceiveData(this, buffer ? buffer-&gt;data() : reinterpret_cast&lt;const uint8_t*&gt;(data), buffer ? buffer-&gt;size() : length);

Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?

&gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:157
&gt; -        content-&gt;append(WTFMove(part));
&gt; +        content-&gt;append(part.data(), part.size());

I think this is now copying instead of adopting the Vector. That’s not as good.

&gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:198
&gt; +        auto decodedData = base64Decode(content-&gt;data()   , content-&gt;size());

Should probably get rid of the extra spaces here.

&gt; Source/WebCore/loader/cache/CachedSVGFont.cpp:92
&gt; -            m_convertedFont = SharedBuffer::create(WTFMove(convertedFont.value()));
&gt; +            m_convertedFont = SharedBuffer::create(convertedFont-&gt;data(), convertedFont-&gt;size());

Is this changing from adopting data to copying it, or did the old version already copy the data?

&gt; Source/WebCore/platform/SharedBuffer.cpp:142
&gt; -    auto arrayBuffer = ArrayBuffer::tryCreateUninitialized(static_cast&lt;unsigned&gt;(size()), sizeof(char));
&gt; +    auto arrayBuffer = ArrayBuffer::tryCreateUninitialized(static_cast&lt;unsigned&gt;(size()), sizeof(uint8_t));

Not new: What guarantees size() fits in unsigned?

Both of these sizeof expression are silly ways to write the number 1. I think we could just write 1.

&gt; Source/WebCore/platform/SharedBuffer.cpp:232
&gt; +        [](const RetainPtr&lt;CFDataRef&gt;&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(CFDataGetBytePtr(data.get())); },

No typecast needed any more: CFDataGetBytePtr returns const uint8_t*.

&gt; Source/WebCore/platform/SharedBuffer.cpp:235
&gt; +        [](const GRefPtr&lt;GBytes&gt;&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(g_bytes_get_data(data.get(), nullptr)); },

This should be static_cast, not reinterpret_cast; it’s a cast from a void*.

&gt; Source/WebCore/platform/SharedBuffer.cpp:238
&gt; +        [](const RefPtr&lt;GstMappedOwnedBuffer&gt;&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(data-&gt;data()); },

No typecast needed any more: GstMappedOwnedBuffer::data returns const uint8_t*.

&gt; Source/WebCore/platform/SharedBuffer.cpp:240
&gt; +        [](const FileSystem::MappedFileData&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(data.data()); }

This should be static_cast, not reinterpret_cast; it’s a cast from a void*.

&gt; Source/WebCore/platform/SharedBuffer.cpp:357
&gt; +    char* p = reinterpret_cast&lt;char*&gt;(buffer.data());

Always a sad moment when we have to add a reinterpret_cast; any way to avoid this one?

&gt; Source/WebCore/platform/SharedBuffer.cpp:370
&gt; +    buffer.shrink(p - reinterpret_cast&lt;char*&gt;(buffer.data()));

Always a sad moment when we have to add a reinterpret_cast; any way to avoid this one?

&gt; Source/WebCore/platform/SharedBufferChunkReader.cpp:103
&gt; +                chunk.append(reinterpret_cast&lt;const uint8_t*&gt;(m_separator.data()), m_separatorIndex);

Always a sad moment when we have to add a reinterpret_cast; any way to avoid this one?

&gt; Source/WebCore/platform/graphics/WOFFFileFormat.cpp:297
&gt; -        buffer = SharedBuffer::create(WTFMove(convertedFont));
&gt; +        buffer = SharedBuffer::create(convertedFont.data(), convertedFont.size());

I think this is now copying instead of adopting the Vector. That’s not as good.

&gt; Source/WebCore/platform/graphics/cg/ImageDecoderCG.cpp:239
&gt; +    const uint8_t* source = sharedBuffer-&gt;data() + position;

auto

&gt; Source/WebCore/platform/graphics/opentype/OpenTypeTypes.h:89
&gt; +        size_t offset = reinterpret_cast&lt;const uint8_t*&gt;(position) - buffer.data();

This can be static_cast instead of reinterpret_cast since it’s from a void*.

&gt; Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:318
&gt; +    return strncmp(&amp;m_data-&gt;dataAsCharPtr()[imageOffset], &quot;\x89PNG&quot;, 4) ? BMP : PNG;

This should use memcmp instead of strncmp--it was never useful to use strncmp here, no reason to handle null characters specially--and then we will not need dataAsCharPtr here.

&gt; Source/WebCore/platform/network/FormData.cpp:417
&gt; +    auto bytes = flatten();
&gt; +    return SharedBuffer::create(bytes.data(), bytes.size());

I think this is now copying instead of adopting the Vector. That’s not as good.

&gt; Source/WebCore/platform/win/SharedBufferWin.cpp:55
&gt; +        if (ReadFile(fileHandle, (LPVOID)buffer.data(), bytesToRead, &amp;bytesRead, 0) &amp;&amp; bytesToRead == bytesRead)

Why was this new typecast needed?

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:362
&gt; -    OffsetBuffer(Vector&lt;char&gt; buffer)
&gt; +    OffsetBuffer(Vector&lt;uint8_t&gt;&amp;&amp; buffer)

Nice optimization.

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:364
&gt;          , m_currentOffset(0)

We should move this initialization down to where the data member is defined below.

&gt; Source/WebKit/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:120
&gt; +    deliverData(reinterpret_cast&lt;const uint8_t*&gt;(resultCString.data()), resultCString.length());

Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1172
&gt; +    m_pluginView-&gt;manualLoadDidReceiveData(reinterpret_cast&lt;const uint8_t*&gt;(data), length);

Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766873</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 12:16:35 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 430577 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430577&amp;action=review
&gt; 
&gt; We may want to work harder to make sure continue to adopt vectors in cases
&gt; where this patch changes us to copy instead.

Yes, I am definitely planning to follow-up to fix any case that got worse.

&gt; 
&gt; We may also want to use const void* and void* more on functions that take
&gt; and process bytes, rather than using a specific byte pointer types.

Yes, I think that&apos;s a good idea.

&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.h:156
&gt; &gt; +WTF_EXPORT_PRIVATE int writeToFile(PlatformFileHandle, const char* data, int length); // FIXME: Should use `const uint8_t*`.
&gt; 
&gt; Maybe it should take const void* like the POSIX write() function.

Doing this one in this patch since it is a significant improvement at call sites.

&gt; &gt; Source/WTF/wtf/FileSystem.h:158
&gt; &gt; +WTF_EXPORT_PRIVATE int readFromFile(PlatformFileHandle, char* data, int length); // FIXME: Should use `uint8_t*`.
&gt; 
&gt; Maybe it should take void* like the POSIX read() function.

Agree, will add a FIXME comment and address in a follow-up.

&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:197
&gt; &gt; +        const char* nextBoundary = static_cast&lt;const char*&gt;(memmem(currentBoundary + boundaryLength, length - (currentBoundary + boundaryLength - reinterpret_cast&lt;const char*&gt;(data)), boundary.data(), boundaryLength));
&gt; 
&gt; Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:203
&gt; &gt; +            nextBoundary = static_cast&lt;const char*&gt;(memmem(nextBoundary + boundaryLength, length - (nextBoundary + boundaryLength - reinterpret_cast&lt;const char*&gt;(data)), boundary.data(), boundaryLength));
&gt; 
&gt; Ditto.

Will check.

&gt; 
&gt; &gt; Source/WebCore/Modules/highlight/AppHighlight.h:55
&gt; &gt; +    encoder.encodeFixedLengthData(reinterpret_cast&lt;const uint8_t*&gt;(highlight-&gt;data()), highlight-&gt;size(), 1);
&gt; 
&gt; Why is a cast needed here? Doesn’t data() return a uint8_t*?

Will drop.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBGetResult.cpp:37
&gt; &gt; +    m_value = ThreadSafeDataBuffer::create({ buffer.data(), buffer.size() });
&gt; 
&gt; No cleaner idiom? Maybe a std::span or Vector?
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:172
&gt; &gt; +        const uint8_t* data = reinterpret_cast&lt;const uint8_t*&gt;(buffer-&gt;data.data&lt;uint8_t&gt;());
&gt; 
&gt; auto would be better here.
&gt; 
&gt; Why is reinterpret_cast needed here? What type does data&lt;uint8_t&gt;() return?
&gt; Why not uint8_t*?

Will use auto and drop the cast.

&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFaceSource.cpp:168
&gt; &gt; -                    m_generatedOTFBuffer = SharedBuffer::create(WTFMove(otfFont.value()));
&gt; &gt; +                    m_generatedOTFBuffer = SharedBuffer::create(otfFont-&gt;data(), otfFont-&gt;size());
&gt; 
&gt; I think this is now copying instead of adopting the Vector. That’s not as
&gt; good.

It is. I am planning to look into this in a follow-up.

&gt; &gt; Source/WebCore/fileapi/Blob.cpp:117
&gt; &gt; +    blobParts.append(Vector { buffer.data(), buffer.size() });
&gt; 
&gt; This seems to call for std::span. Or doesn’t SharedBuffer have a function
&gt; that returns a Vector?

AFAIK, std::span is not a thing YET in WebKit :) SharedBuffer doesn&apos;t have a function that returns a Vector at the moment.

&gt; 
&gt; &gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:583
&gt; &gt; +        NetworkResourcesData::ResourceData const* resourceData = m_resourcesData-&gt;maybeAddResourceData(requestId, reinterpret_cast&lt;const uint8_t*&gt;(data), dataLength);
&gt; 
&gt; Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?
&gt; 
&gt; &gt; Source/WebCore/loader/NetscapePlugInStreamLoader.cpp:159
&gt; &gt; +        m_client-&gt;didReceiveData(this, buffer ? buffer-&gt;data() : reinterpret_cast&lt;const uint8_t*&gt;(data), buffer ? buffer-&gt;size() : length);
&gt; 
&gt; Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?

Will check.

&gt; 
&gt; &gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:157
&gt; &gt; -        content-&gt;append(WTFMove(part));
&gt; &gt; +        content-&gt;append(part.data(), part.size());
&gt; 
&gt; I think this is now copying instead of adopting the Vector. That’s not as
&gt; good.
&gt; 
&gt; &gt; Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:198
&gt; &gt; +        auto decodedData = base64Decode(content-&gt;data()   , content-&gt;size());
&gt; 
&gt; Should probably get rid of the extra spaces here.

Will fix.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedSVGFont.cpp:92
&gt; &gt; -            m_convertedFont = SharedBuffer::create(WTFMove(convertedFont.value()));
&gt; &gt; +            m_convertedFont = SharedBuffer::create(convertedFont-&gt;data(), convertedFont-&gt;size());
&gt; 
&gt; Is this changing from adopting data to copying it, or did the old version
&gt; already copy the data?
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:142
&gt; &gt; -    auto arrayBuffer = ArrayBuffer::tryCreateUninitialized(static_cast&lt;unsigned&gt;(size()), sizeof(char));
&gt; &gt; +    auto arrayBuffer = ArrayBuffer::tryCreateUninitialized(static_cast&lt;unsigned&gt;(size()), sizeof(uint8_t));
&gt; 
&gt; Not new: What guarantees size() fits in unsigned?
&gt; 
&gt; Both of these sizeof expression are silly ways to write the number 1. I
&gt; think we could just write 1.

Will use 1.

&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:232
&gt; &gt; +        [](const RetainPtr&lt;CFDataRef&gt;&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(CFDataGetBytePtr(data.get())); },
&gt; 
&gt; No typecast needed any more: CFDataGetBytePtr returns const uint8_t*.
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:235
&gt; &gt; +        [](const GRefPtr&lt;GBytes&gt;&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(g_bytes_get_data(data.get(), nullptr)); },
&gt; 
&gt; This should be static_cast, not reinterpret_cast; it’s a cast from a void*.
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:238
&gt; &gt; +        [](const RefPtr&lt;GstMappedOwnedBuffer&gt;&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(data-&gt;data()); },
&gt; 
&gt; No typecast needed any more: GstMappedOwnedBuffer::data returns const
&gt; uint8_t*.
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:240
&gt; &gt; +        [](const FileSystem::MappedFileData&amp; data) { return reinterpret_cast&lt;const uint8_t*&gt;(data.data()); }
&gt; 
&gt; This should be static_cast, not reinterpret_cast; it’s a cast from a void*.

Fixing all those.

&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:357
&gt; &gt; +    char* p = reinterpret_cast&lt;char*&gt;(buffer.data());
&gt; 
&gt; Always a sad moment when we have to add a reinterpret_cast; any way to avoid
&gt; this one?
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:370
&gt; &gt; +    buffer.shrink(p - reinterpret_cast&lt;char*&gt;(buffer.data()));
&gt; 
&gt; Always a sad moment when we have to add a reinterpret_cast; any way to avoid
&gt; this one?
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBufferChunkReader.cpp:103
&gt; &gt; +                chunk.append(reinterpret_cast&lt;const uint8_t*&gt;(m_separator.data()), m_separatorIndex);
&gt; 
&gt; Always a sad moment when we have to add a reinterpret_cast; any way to avoid
&gt; this one?

Will check.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/WOFFFileFormat.cpp:297
&gt; &gt; -        buffer = SharedBuffer::create(WTFMove(convertedFont));
&gt; &gt; +        buffer = SharedBuffer::create(convertedFont.data(), convertedFont.size());
&gt; 
&gt; I think this is now copying instead of adopting the Vector. That’s not as
&gt; good.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageDecoderCG.cpp:239
&gt; &gt; +    const uint8_t* source = sharedBuffer-&gt;data() + position;
&gt; 
&gt; auto
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opentype/OpenTypeTypes.h:89
&gt; &gt; +        size_t offset = reinterpret_cast&lt;const uint8_t*&gt;(position) - buffer.data();
&gt; 
&gt; This can be static_cast instead of reinterpret_cast since it’s from a void*.
&gt; 
&gt; &gt; Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:318
&gt; &gt; +    return strncmp(&amp;m_data-&gt;dataAsCharPtr()[imageOffset], &quot;\x89PNG&quot;, 4) ? BMP : PNG;
&gt; 
&gt; This should use memcmp instead of strncmp--it was never useful to use
&gt; strncmp here, no reason to handle null characters specially--and then we
&gt; will not need dataAsCharPtr here.
&gt; 
&gt; &gt; Source/WebCore/platform/network/FormData.cpp:417
&gt; &gt; +    auto bytes = flatten();
&gt; &gt; +    return SharedBuffer::create(bytes.data(), bytes.size());
&gt; 
&gt; I think this is now copying instead of adopting the Vector. That’s not as
&gt; good.
&gt; 
&gt; &gt; Source/WebCore/platform/win/SharedBufferWin.cpp:55
&gt; &gt; +        if (ReadFile(fileHandle, (LPVOID)buffer.data(), bytesToRead, &amp;bytesRead, 0) &amp;&amp; bytesToRead == bytesRead)
&gt; 
&gt; Why was this new typecast needed?

Probably not needed, will drop.

&gt; 
&gt; &gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:362
&gt; &gt; -    OffsetBuffer(Vector&lt;char&gt; buffer)
&gt; &gt; +    OffsetBuffer(Vector&lt;uint8_t&gt;&amp;&amp; buffer)
&gt; 
&gt; Nice optimization.
&gt; 
&gt; &gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:364
&gt; &gt;          , m_currentOffset(0)
&gt; 
&gt; We should move this initialization down to where the data member is defined
&gt; below.

Will fix.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:120
&gt; &gt; +    deliverData(reinterpret_cast&lt;const uint8_t*&gt;(resultCString.data()), resultCString.length());
&gt; 
&gt; Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1172
&gt; &gt; +    m_pluginView-&gt;manualLoadDidReceiveData(reinterpret_cast&lt;const uint8_t*&gt;(data), length);
&gt; 
&gt; Always a sad day when we have to add a reinterpret_cast. Any way to avoid it?

Will check. Part of the issue is that I was trying to keep the size of this patch small. Switching to uint8_t propagates through the code base quickly. Right now, all the didReceiveData() functions take a const char* and I was planning to switch them all to const uint8_t* in the follow-up given the size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766937</commentid>
    <comment_count>12</comment_count>
      <attachid>430613</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 14:32:06 -0700</bug_when>
    <thetext>Created attachment 430613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766941</commentid>
    <comment_count>13</comment_count>
      <attachid>430614</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 14:43:16 -0700</bug_when>
    <thetext>Created attachment 430614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766945</commentid>
    <comment_count>14</comment_count>
      <attachid>430615</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 14:50:23 -0700</bug_when>
    <thetext>Created attachment 430615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766947</commentid>
    <comment_count>15</comment_count>
      <attachid>430617</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 15:01:48 -0700</bug_when>
    <thetext>Created attachment 430617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766956</commentid>
    <comment_count>16</comment_count>
      <attachid>430620</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 15:26:23 -0700</bug_when>
    <thetext>Created attachment 430620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766960</commentid>
    <comment_count>17</comment_count>
      <attachid>430622</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 15:32:58 -0700</bug_when>
    <thetext>Created attachment 430622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766965</commentid>
    <comment_count>18</comment_count>
      <attachid>430624</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 15:43:44 -0700</bug_when>
    <thetext>Created attachment 430624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766975</commentid>
    <comment_count>19</comment_count>
      <attachid>430628</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 16:05:12 -0700</bug_when>
    <thetext>Created attachment 430628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766984</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 16:17:55 -0700</bug_when>
    <thetext>Not to throw a wrench into this, but should we consider std::byte instead? That would be my preference all things being equal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766985</commentid>
    <comment_count>21</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 16:18:51 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #20)
&gt; Not to throw a wrench into this, but should we consider std::byte instead?
&gt; That would be my preference all things being equal.

That said, this is a great improvement, and we can always make that change another time if we want to, so don&apos;t block yourself on this question too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766986</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 16:19:13 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #20)
&gt; Not to throw a wrench into this, but should we consider std::byte instead?
&gt; That would be my preference all things being equal.

lol, you&apos;re killing me. I saw you switch code from `const char*` to `const uint8_t*` just recently in one of your patches :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766992</commentid>
    <comment_count>23</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-04 16:32:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #22)
&gt; (In reply to Sam Weinig from comment #20)
&gt; &gt; Not to throw a wrench into this, but should we consider std::byte instead?
&gt; &gt; That would be my preference all things being equal.
&gt; 
&gt; lol, you&apos;re killing me. I saw you switch code from `const char*` to `const
&gt; uint8_t*` just recently in one of your patches :)

Ha! Sorry! As I said, I think this is a great improvement and makes things way more consistent. std::byte is more controversial, so I didn&apos;t want to make that change while making the base64 change. Having this in will make that kind of change much easier, so its all win-win. I just thought you and Darin would be a good audience for the question :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766999</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-04 16:59:04 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #23)
&gt; (In reply to Chris Dumez from comment #22)
&gt; &gt; (In reply to Sam Weinig from comment #20)
&gt; &gt; &gt; Not to throw a wrench into this, but should we consider std::byte instead?
&gt; &gt; &gt; That would be my preference all things being equal.
&gt; &gt; 
&gt; &gt; lol, you&apos;re killing me. I saw you switch code from `const char*` to `const
&gt; &gt; uint8_t*` just recently in one of your patches :)
&gt; 
&gt; Ha! Sorry! As I said, I think this is a great improvement and makes things
&gt; way more consistent. std::byte is more controversial, so I didn&apos;t want to
&gt; make that change while making the base64 change. Having this in will make
&gt; that kind of change much easier, so its all win-win. I just thought you and
&gt; Darin would be a good audience for the question :).

I hadn&apos;t heard about std::byte before honestly. I kinda like the strong typing. However, I have a feeling that using it may cause us to have have to reinterpret_cast more, in cases where we call into library functions or system calls that expect a &quot;const uint8_t*&quot;? There&apos;s plenty of usage of `const uint8_t*` / `const unsigned char*` out there but not much `const std::byte*`.

For now, my priority is for us to be consistent. Right now we have some classes that use uint8_t and some others char.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767023</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-04 18:16:52 -0700</bug_when>
    <thetext>Committed r278516 (238515@main): &lt;https://commits.webkit.org/238515@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430628.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767024</commentid>
    <comment_count>26</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-04 18:17:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/78894758&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767088</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-04 21:08:51 -0700</bug_when>
    <thetext>Wow, getting to std::byte at *some* point seems pretty neat. I want to learn more about it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430537</attachid>
            <date>2021-06-03 21:45:00 -0700</date>
            <delta_ts>2021-06-03 22:54:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210603214500.patch</filename>
            <type>text/plain</type>
            <size>125791</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi41ZDFk
OGJkNGQ5MzYwNWRkMTQ0ZDRiZDQwNzIyZmFkYmQzNTkzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi43ZGMz
MWM3MzkyY2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkK
KyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
QEAgLTE1MCw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKQpAQCAtMTY3LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4s
CisgICAgICAgIFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjAzLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsK
KyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKQEAgLTIzNSw3ICsyMzQsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAj
aWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYy
MDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJm
MzMyMzgyMmZlOGYzNDE2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEu
aXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsy
MDYsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAh
aW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMzZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3
MTkuLjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2MyZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4
UHRyKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAppbmRleCAzYmE0YjhjOTBlYjBmMjE5MDdhNDI4ZTMzN2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcw
NDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVkMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKICAgICBp
ZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAgICAgbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJ
dGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1l
bWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0
aCk7CisgICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2Rl
ZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXgg
NDQ5ODM3MzY2MWE3ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMxNi4uMTcxMzVhMTQxY2Q2ZmEy
Y2U2YTg3MmM3NzMxOWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBA
IC0yNzAsNyArMjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKIAogdm9pZCBDRE1JbnN0
YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2Vy
dGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBPcGVuQ0RNRXJy
b3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRl
clN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGFBc1VJ
bnQ4UHRyKCkpLAorICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9z
ZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4
X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7
CiAgICAgY2FsbGJhY2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTM0MCw3
ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1NUX0RF
QlVHKCJwYXJzaW5nIGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAg
ICAgR1NUX01FTURVTVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3IHBheWxvYWQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmlldz4gdHlwZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQog
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwotICAg
IEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVz
c2FnZS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRh
dGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYWxsZW5nZUNh
bGxiYWNrIDogbV9jaGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAgIGNoYWxsZW5nZUNhbGxiYWNr
KCk7CiAgICAgbV9jaGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsKQEAgLTUwNywxMSArNTA3LDEx
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0RGF0YSA9IEluaXREYXRhKGlu
c3RhbmNlLT5rZXlTeXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNoYXJlZEJ1ZmZlcikpOwogCiAg
ICAgR1NUX1RSQUNFKCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNlc3Npb24gaWQsIGluaXQgZGF0
YSBzaXplICV6dSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgIEdTVF9NRU1E
VU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwg
bV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAoImluaXQgZGF0
YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5z
aXplKCkpOwogCiAgICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIG9w
ZW5jZG1fY29uc3RydWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVuZGVyU3lzdGVtKCksIHRodW5k
ZXJMaWNlbnNlVHlwZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlwZS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLAotICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwg
bV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAgbV9pbml0RGF0YS5wYXlsb2Fk
KCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1f
dGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Np
b24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQo
KTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUco
ImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigp
LCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVz
c2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5
cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVk
KTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGlmICgh
bV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBk
YXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNl
LT5zaXplKCkpKQorICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8
fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25GYWlsdXJlKCk7CiB9CiAKQEAg
LTYwNyw3ICs2MDcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAg
IGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBt
ZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNz
YWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIs
IG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVl
c3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NW
YWx1ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5ZmI1OTk4NjIxNWI5ZDVkYWUx
NzlkMmQ3NTljZWY3NDE4MTQ3Ni4uNTk2NmMzZjI1OTcwMzAwNjM2ZmU1OTA5YjQ3NjM1ZDFmMzVj
ODM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBvc2l0aW9uKSAtIGJ1ZmZl
ci5kYXRhKCk7CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9
IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaAppbmRleCA2MDM3NWRlNWJjZGNiNDc2YWUwZWY0MTc1Y2U3MWIxZTFkNjE1NWZmLi4w
NTQ0MjhkNTBkYzYxYWFhZDUxODg3OWQyMmNiYzJmOTc3OTE1MDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29u
c3QgQ1N0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hh
ciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVk
YTFhYzk4N2VhZTg4OWRmOWYyNzQyLi5kZDA1ZWYwZmJkM2U3MzA5NzQzNTA1YWNjYzAxMDE0ZWY0
ZDljNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENE
YXRhQ2hhbm5lbFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0Rh
dGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdEVycm9yKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVj
cmVhc2luZyhzaXplX3QpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
U291cmNlQ29ubmVjdGlvbi5oCmluZGV4IDQxMjQ3ZjY4NGY3NjA5MGE2ZDJiZTI1MGE1NTg4NjRj
Y2YwNDIxNTcuLmM5YzkzYmE2MDExOGY5MTlkMTE2MDI5MzJkYWU4M2Q3OTk0NjdmYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRl
KFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0Rh
dGEoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ciwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRl
Y3RFcnJvcihSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXpl
X3QpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JU
Q0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAppbmRleCBkMDMwMDUzNmVkOTMwZmJmOWMy
MDJiYjk3MjYxMGQ0YzVmODlhOGM0Li45M2JkOTYyZDRkZWFkNDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5
ZWVlYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiBzdHJp
bmcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
azo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXpl
KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggNGE1MTA5MmJjNDFmMmNm
OWY3ZjNkMDRmMjc3YTc1YzI5NGUxY2FhNS4uZTA3MGJkYjEzZTg3MjU4N2M1M2UwNGY0OTYxN2Zl
ZDU1OWEwYTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdE
YXRhKGNvbnN0IENTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNo
YXIqLCBzaXplX3QpIGZpbmFsOworICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCos
IHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggYjc3ZjkwMDc4MTlmZmVjMjk1
YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uYzg3ZDg4ODA0Mzc1OTc5NzA3MTE5YWRhNzIyNmMyOTFh
NTA4ZjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKQEAgLTQxMyw3ICs0MTMsOCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNT
aGFyZWRCdWZmZXIoKSBjb25zdAogICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
VmVjdG9yPGNoYXI+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAg
IGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JV
UkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmVi
ZTcwNDg4NGUyZTczNjZmLi42NDM2YWFjNTlkODMxODRlZWNmMTNjMjA4YWRjMWU1MDM3M2UzZWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YUFz
Q2hhclB0cigpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJj
M2I5M2YxZDVhZjdkZWU1Ni4uMGIxZmQ3NDVlYmEyZjYxZWVjZTYxYTFjYTU4MTMxZWRlZGU5ZmRl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFu
Z2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlz
Vmlld1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBi
eXRlSW5kZXggKyAxKTsKICAgICAgICAgICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmll
d1RvRGVsaXZlcjsKLSAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWRE
YXRhOmJ1ZmZlclZpZXcuZGF0YSgpIGxlbmd0aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcl07
CisgICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpidWZmZXJW
aWV3LmRhdGFBc0NoYXJQdHIoKSBsZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChieXRlSW5kZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAg
ICAgICBbdGFzayByZXNvdXJjZUZpbmlzaGVkOm51bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1l
dHJpY3MgeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5o
CmluZGV4IDA1ZDE3NzE3NzUxZTAwYTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2RiMmUw
ZGQ5YjQyODBmMjUxNTczZGJhNmI1YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3Ro
LCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5nIGRl
Y29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlY29k
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBkZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2Rh
YmxlSGFuZGxpbmcsIE5GQ05vcm1hbGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsKICAg
ICBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZykg
Y29uc3QgZmluYWwgeyByZXR1cm4gZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZzo6
VVJMRW5jb2RlZEVudGl0aWVzLCBORkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1
NDNkYTYyZDczOGMwZmU2Li5lY2I2YmFlMTY4OTU2MTY3ZjYxZmFmM2RjYTI5MzY0NmNkY2FkNDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0
NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+
aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
c2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBk
b2N1bWVudAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
YWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGFBc0No
YXJQdHIoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCA1N2VlNWRlZDI0YmRhMjc1ZTU4NmJkZjYx
MzJhNTI0NTVhYmFjYzk2Li5kZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hh
ciogdXJpLAogCiAgICAgICAgIC8vIFdlIGRvbid0IHNwZWNpZnkgYW4gZW5jb2RpbmcgaGVyZS4g
TmVpdGhlciBHZWNrbyBub3IgV2luSUUgcmVzcGVjdHMKICAgICAgICAgLy8gdGhlIGVuY29kaW5n
IHNwZWNpZmllZCBpbiB0aGUgSFRUUCBoZWFkZXJzLgotICAgICAgICB4bWxEb2NQdHIgZG9jID0g
eG1sUmVhZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOworICAgICAgICB4bWxE
b2NQdHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDog
bnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9w
dGlvbnMpOwogCiAgICAgICAgIHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoMCwgMCk7CiAgICAg
ICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMoMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMWQ4ZGFk
YmU0Njc2MTkyZjY1YWU4ZTA4YzU2ODFjNmIwY2NlOTc4Zi4uMWZkZTJlOGQ2MDM1MzQyNmRiYjZk
ZGYzMjM4ZTc2MTM1NzUyODdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIHN0
YXRpYyBpbnQgbWF0Y2hGdW5jKGNvbnN0IGNoYXIqKQogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPZmZzZXRCdWZmZXIoVmVj
dG9yPGNoYXI+IGJ1ZmZlcikKKyAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAgICAgLCBtX2N1
cnJlbnRPZmZzZXQoMCkKICAgICB7CkBAIC0zNzcsNyArMzc3LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fYnVmZmVyOwogICAgIHVuc2lnbmVkIG1fY3VycmVudE9mZnNldDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBjM2YxODNi
MmRiNWJiNTk0YzMwOWNkODliNzIwMjBlYTAxYWQyMWE3Li43ZTBkOGRiZTE5MDI1OTlkMDJiYzEw
OGU1NjNhNmUzZGYxODMyZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KIAotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51
bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXgg
NGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNi4uY2JkMDRkOTliN2MyNzE2
NzFjODc1MmIxOGE5MmU0MjE1ODU2YzllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBA
QCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdAogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3Ry
ZWFtSUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC01MDcsNyArNTA3
LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYKICAgICBpZiAobV9wbHVnaW5DYW5jZWxlZE1h
bnVhbFN0cmVhbUxvYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGx1Z2luLT5tYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9s
bGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAppbmRleCBjNzgwYmM0ZjgxMWFmOGZiMzg3ZmIwZDIy
YzdmZGU0ZjFkMTM2MDg5Li5lNWFhNzBjZDBjMmQ3N2ViMmI4YjdlNGM5ZTkxNmI4NmRiZTllNmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIHdyaXRlVG9EaXNrKHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+JiYg
ZW5jb2RlciwgU3RyaW5nJiYgcGF0aCkKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3Jp
dHRlbkJ5dGVzID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRh
KCksIHJhd0RhdGEtPnNpemUoKSk7CisgICAgYXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGFBc0NoYXJQdHIoKSwgcmF3RGF0YS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAog
ICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+c2l6
ZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IGYwYzhlZWY1M2QzNTk3ZTBlYThhMTFkYjEwMWVhOTQ2MDE0MTllMTcuLjZjMjc3NDQ5
NjQzMzhjZGFhNWM4MjczMzJiN2RhYTViMDVjOGU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzA2MSw3ICszMDYxLDcgQEAgc3Rh
dGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUoY29uc3QgU2NyaXAKICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUgeyB9OwogCiAgICAgYXV0byYgc2VnbWVudCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4o
KS0+c2VnbWVudDsKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1h
cChjb25zdF9jYXN0PGNoYXIqPihzZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8dWludDhfdCo+KHNlZ21lbnQtPmRh
dGEoKSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAppbmRleCBlNzM1N2QxMTI1MGQ2MGVjOGM4MzhhODcwODE3MGUxZjJjNjhmNWRk
Li4xZTE0OWNmMjM3MGE3MTE1MTY5OTU0YTY1YjliYzllMjhiNzc5ODcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAg
ZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgbV9zeW5jRGF0YS0+c2l6ZSgp
IH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEt
PnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3Bv
bnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRj
NmEuLjk5Y2ExZDg4YjgzMmIwZmEzZDRjNzJmMTU1YjM2ZGRkNWExYzNiMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
eyBidWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBkMGNiNzllNWQxZTY1ZjhlMWJkMTk5
YzU0M2RlZDA5MThlODRmNTFhLi43ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2
OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtNTgsOSArNTgsOSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNv
Y2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNv
YwogICAgIHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsK
ICAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlVGV4dCwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAg
ICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6
U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0
ZjhTdHJpbmcubGVuZ3RoKCkpOwotICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAg
ICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6
OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICB9LCBbJmNo
YW5uZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7CisgICAgICAg
IGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJp
bmFyeSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5l
bDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwg
Ynl0ZUxlbmd0aCk7CiAgICAgfSwgWyZjaGFubmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNv
ZGUpIHsKICAgICAgICAgYXV0byBjb2RlID0gc3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2Rl
KTsKICAgICAgICAgY2hhbm5lbC5mYWlsKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIEJsb2I6
IGV4Y2VwdGlvbiBjb2RlID0gIiwgY29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyLmNwcAppbmRleCA0OTlkYTE4ZDE3NGZlNzg5MjhiODczY2E3MmNiN2VlMWFl
MGE1ZDlmLi43ZWIxMDc4NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3
IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291CiB7CiAgICAgaWYgKGF1dG8qIHNvdXJjZSA9IHNv
dXJjZUZyb21JZGVudGlmaWVyKHNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChpc1Jh
dykKLSAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgICAgICBzb3VyY2Ut
PnNlbmRSYXdEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMTQy
LDcgKzE0Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpjaGFuZ2VSZWFk
eVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpCiAKIHZvaWQgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIGJvb2wgaXNSYXcsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKIHsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gYnVmZmVyOworICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGlzUmF3KQog
ICAgICAgICBidWZmZXIgPSBkYXRhLnZlY3RvcigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbElkZW50aWZpZXIKIAogICAgIHBvc3RUYXNrVG9IYW5kbGVyKGhhbmRsZXJJZGVudGlm
aWVyLCBbaXNSYXcsIHRleHQgPSBXVEZNb3ZlKHRleHQpLmlzb2xhdGVkQ29weSgpLCBidWZmZXIg
PSBXVEZNb3ZlKGJ1ZmZlcildKGF1dG8mIGhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAo
aXNSYXcpCi0gICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVN0cmlu
Z0RhdGEoV1RGTW92ZSh0ZXh0KSk7CiAgICAgfSk7CkBAIC0yMzAsOSArMjMwLDkgQEAgdm9pZCBS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJl
Y2VpdmVTdHJpbmdEYXRhKFcKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZh
bHNlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPih0ZXh0LmRhdGEoKSksIHRleHQubGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAotdm9pZCBS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJl
Y2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVy
LCB0cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihkYXRhKSwgc2l6ZSAgfSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7
IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgIH0gfSwg
MCk7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VD
b25uZWN0aW9uOjpkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaApp
bmRleCA2ZDEyYjdjMzVmMDA0YTQ3YzU1NGZkYjE1ZWUyMzlkZTYyYjM1MGNlLi5mOGMwNWU1Mzc0
MTdkNzk0ZDVhNjE1ZTc4OGUxZTZhZWRhMGE3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlci5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
dm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxTdGF0ZSkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RGV0ZWN0RXJyb3IoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIsIHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcAppbmRleCAwMDY3ODk5MDkzMmM0MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3
Li4zZGM5MjhkYzU3YTk3ZDAyYzkyODQ1MzMxMWNmMzFjYmYyYjg1YzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5QRXJy
b3IgcGFyc2VQb3N0QnVmZmVyKGJvb2wgaXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQz
Ml90IGxlbmd0aCwKICAgICAgICAgaWYgKCFmaWxlQ29udGVudHMpCiAgICAgICAgICAgICByZXR1
cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKLSAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250
ZW50cy0+ZGF0YSgpOworICAgICAgICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhQXND
aGFyUHRyKCk7CiAgICAgICAgIHBvc3RCdWZmZXJTaXplID0gZmlsZUNvbnRlbnRzLT5zaXplKCk7
CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBOUEFQSSBzcGVjIHN0YXRlcyB0aGF0IHRoZSBmaWxl
IHNob3VsZCBiZSBkZWxldGVkIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjE3
ZDdkNzZjMGE4YTVlYjlkYmE1N2E4YTgwNmJjNjA4NjI2ZjQ1Yy4uMDkwZDVhNDBjZWJkNzhjMWVk
NzJiYWJhN2JmNmUwNzIzM2IyNWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtODY2
LDcgKzg2Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwCiAgICAgICAgIHBsdWdpblN0cmVh
bS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewog
ICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQKICAgICBtX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBo
ZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIEFTU0VSVChtX3Nob3VsZFVz
ZU1hbnVhbExvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCAyNDc0OTE0NmQ5MGY0NTVm
NjlmNTQzNTk2NGUwYjNiY2EzMWRjY2YyLi5hNTgyYjY2NTJmYTUwMWQ2ZTc3ZGMyNDI5MDZiNDFk
ZWEyYjA1ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3Bv
bnNlU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJl
YW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlE
LCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBt
YW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAyYTYwMWNjMDhiNDBlNzVmOWFlMThhNjI1
YTgyYzI2MWZmZDdjMjdlLi5lOTE4Zjg5MmI3YmUwODA1NjE0YWVlNDllYmUyOTNhMzIyMDFlMDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzCiAgICAgc3RhcnQocmVzcG9uc2VVUkwuc3RyaW5nKCks
IHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQog
Ci12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIERlbGl2ZXJp
bmcgdGhlIGRhdGEgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gc3RyZWFtIHRvIGdvIGF3YXkgc28g
d2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdCBoZXJlLgogICAgIFJlZjxOZXRzY2FwZVBsdWdpblN0
cmVhbT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAg
ICAgaWYgKCFzdGFydChtX3JlcXVlc3RVUkxTdHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCks
IDAsICJ0ZXh0L3BsYWluIiwgIiIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0
YShyZXN1bHRDU3RyaW5nLmRhdGEoKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVs
aXZlckRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0cmluZy5k
YXRhKCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwog
fQogCkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQo
Y29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWEKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NF
UlQobV9pc1N0YXJ0ZWQpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
blN0cmVhbTo6ZGVsaXZlckRhdGFUb1BsdWdpbigpCiAgICAgfQogfQogCi12b2lkIE5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVs
bCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgpAQCAtMjc2LDcgKzI3
Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxl
SGFuZGxlLCBieXRlcywgbGVuZ3RoKTsKKyAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihi
eXRlcyksIGxlbmd0aCk7CiAgICAgaWYgKGJ5dGVDb3VudCAhPSBsZW5ndGgpIHsKICAgICAgICAg
Ly8gVGhpcyBoYXBwZW5zIG9ubHkgcmFyZWx5LCB3aGVuIHdlIGFyZSBvdXQgb2YgZGlzayBzcGFj
ZSBvciBoYXZlIGEgZGlzayBJL08gZXJyb3IuCiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShtX2ZpbGVIYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMTBj
N2YyZDllODc0NjNhY2JlNzhmODdkNDNlNTIxZjA4OTkyM2FiZS4uOWIwNzA5OTg4NDcyMDQzMWEz
YjEzZTQwMWVlNDg4ODM4YmE2MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJl
ZGlyZWN0UmVzcG9uc2VTdGF0dXMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZygpOwogICAgIHZvaWQgZGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCk7CiAKQEAgLTczLDkg
KzczLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgbm90aWZ5QW5k
RGVzdHJveVN0cmVhbShOUFJlYXNvbik7CiAKLSAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRlbGl2ZXJEYXRhVG9QbHVnaW4oKTsK
LSAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKTsKIAogICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4gbV9wbHVnaW47CiAgICAgdWludDY0
X3QgbV9zdHJlYW1JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCA2Y2RiZWRjZDA4NTcyZTBiNjU5OTg1NDNmZGY0MmYyNTg0MDIy
MDVhLi5hNjUzMWI2NGI5NzczMDZkMGZmZDgyYWNjODJmMjhiMDljZmUwMjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNzYs
MTEgKzE3NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQg
c3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwg
eyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lk
IHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7
CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNl
bGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwo
Ym9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25z
dCBXZWJNb3VzZUV2ZW50JikgZmluYWw7CkBAIC0zNjYsNyArMzY2LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhcios
IGludCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggYzAyZjg0MGM0MDc0ODAxYmQ4NzRmNmNmODMyZTk3Yjg4NDFmNWM0OS4uMTUxM2UwNGVm
NGU4NTZmYTg3MmM1NTI4YTdjYmJkMDcxMWY3ZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTU3LDcgKzExNTcsNyBA
QCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdAogICAgIH0KIH0KIAotdm9pZCBQREZQbHVnaW46OlBE
RlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGNvdW50KQordm9pZCBQ
REZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGNvdW50KQogewogICAgIGlmICghbV9wZGZQbHVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTEx
NjYsNyArMTE2Niw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtCiAgICAgaWYgKCFyZXF1ZXN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LT5hZGREYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShk
YXRhLCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJD
bGllbnQ6OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpCkBAIC0xNjg0LDE0ICsxNjg0LDE0IEBAIHZvaWQgUERGUGx1Z2luOjpz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVp
bnQzMl90CiAgICAgICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVn
aW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0
SUQpOwogCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRlcyksIGxlbmd0aCk7CisgICAg
Q0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0
cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogfQogCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIFBE
RlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAg
ICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0g
Y3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKaW5kZXggZDNjN2FjNzA1MTFmYzcyYzg3MDg0YjhhMzc0ZjlkNmM3MjY4NTliMC4uMTM1
NWNmZjRlYjc3ZjZmNzE3ZGI5MjBlMjE0MDU4ZmMxNmIyZmVjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
PSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNo
ZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhl
IHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBiZmY4
MDRiMzg4NWFhNThiYTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNmLi45Y2VkN2RhMDc1MDJmNjJiYWM2
YWY2NzllMTYxMGQ0ZTY1OWUwN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0zMzAsOSArMzMwLDkgQEAgdm9pZCBQbHVnaW5Q
cm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBV
UkwmIHJlc3BvbnMKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFt
SUQsIHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUs
IG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXZvaWQgUGx1Z2luUHJveHk6OnN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclBy
b3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2lu
SW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQs
IElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7
CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
c3RyZWFtSUQpCkBAIC0zNTAsOSArMzUwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl8KICAg
ICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJv
bGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwuc3Ry
aW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMp
LCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCi12b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1
Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRl
cyksIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1f
cGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURp
ZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKaW5kZXggMDA4YzIwMjE2ZGU1YjdhMTk3ZjFmMjQyNGExMmU1NjEyYzZmZGU0
MC4uM2YxYjM5ZWFiN2RhZTA4MTY4ZGQzYTczOGZlZDJiMGRjMDcxNDRiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04NywxMSArODcs
MTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVh
bVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3
YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggYjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcwZWQzMjAyMS4uM2EwOTY4M2VlYzdh
YTIxZTYxZGVhMTBjODgyOWMzMDc2ODQwN2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRl
OgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhf
dCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0y
MzksNyArMjM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25z
ZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXct
Pm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUs
IGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFt
OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0
cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOwogfQpAQCAtNDA3
LDcgKzQwNyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFs
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RN
b2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0
byBpbml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggODI4ZDMwYTA2ZTlkOGZkZDc4YjU5OGRm
OTBhNjYzOTMxZGEwZThkMy4uNGExZjVhYzU3YTlkNzc1NGU2NDA3OGY3ZGE0MmI1NzZhMzM0Mzlk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29u
c3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0K
IAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIG1hbnVh
bExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDVlZDIzMWM4NTVjMDU5ZWRhZjczNDgxZDUwYjkzMThlNGVlNjIxMDIuLjE3Njc0
ZGYwMmMzMmExM2VkYTg1MDZlMjcwZGZkNzYzNzAzNTBhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTE2OSw3ICsxMTY5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBk
YXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdp
blZpZXcgPSB0cnVlOwogICAgIH0KLSAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShkYXRhLCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXgg
MDI4ZThjNmUzZTg4NjRjYzE2NTU5MGE0OWNiYWVlN2Q4YmI2YTViYi4uMmFjMjVkY2QzOWU0ODBk
ZjkzNmM2YWViNzllYzIwYWZlYzJkNDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0
IGNoZWNrIHRoZSBvdmVycmlkZXMuCi0gICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlk
ZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9z
dGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYzUzNjI1YTE4ODM4
ZmQwZDI3M2Y2YjQ2NGU5NmMwM2FhY2MwMGMwOS4uMTUyMDBlY2Q5MTkyNjhjMzQwN2Q5MTljMDY2
NzE4YzkzMjQ2MTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNl
KE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUg
bWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNTdhYTRhODJkNmE2
NzE4MTVlNDNiYTgwNTk0ODZiNzU2NWU1MGU2OS4uMDg2MTVlNDlmNTEzMDNhNGY1OWNhZDA1Mzlj
ZmZlN2Q5YTA1YjBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0K
QEAgLTExNSwxMiArMTE1LDEyIEBAIHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0
YXJ0U3RyZWFtKE5TVVJMICpyZXNwb25zZVVSTCwgbG9uZyBsb25nIGV4cGVjCiAgICAgICAgICAg
ICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihbaGVhZGVycyBieXRlc10pKSwgW2hlYWRlcnMgbGVuZ3RoXSk7CiB9CiAgICAgICAgICAgICAg
ICAgICAgICAKLXZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRh
KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpCit2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIF9XS1BIU3RyZWFtRGlkUmVjZWl2ZURhdGEobV9p
bnN0YW5jZS0+aG9zdFByb3h5KCktPnBvcnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5zdGFuY2UtPnBsdWdpbklEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3N0cmVhbUlELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxj
aGFyKj4oYnl0ZXMpLCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMpKSwgbGVu
Z3RoKTsKIH0KICAgICAKIHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDc1NDI2OTM4MTJlNzhiN2Y4OWE4
ZTM0NDAzNzMzMDA4YWZjM2YyOTUuLmVkMGUzMTQzZWY4YzA2YWNjOTg4YWEyNGFiODgyN2EzOThm
NWJhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcy
NSw3ICs3MjUsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVK
YXZhU2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29u
dGVudExlbmd0aDpbSlNEYXRhIGxlbmd0aF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6
bmlsXSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UocmVzcG9uc2Uu
Z2V0KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHN0
cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtKU0Rh
dGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAgc3RyZWFtLT5kaWRGaW5pc2hM
b2FkaW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbQppbmRleCA3NjExNzFjZWE3Y2E1ZmE2NzI4YzlkYzAwZDJlYjdiMmQxOGY3NzgwLi42NGMy
NzdiNWY0M2QxNTFiZGE0MTViZWM5YjU5ZDVmM2NjZmMwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC01MTksNyArNTE5LDcgQEAgLSAodm9pZClwbHVn
aW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
KiBtYW51YWxTdHJlYW0gPSBfcHJveHktPm1hbnVhbFN0cmVhbSgpKQotICAgICAgICBtYW51YWxT
dHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZl
RGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyBy
ZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAyYmM5
NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzViODNlYzEzMDZjLi4xOTM5MGI1YzAyYTc1Zjc5Zjk2
NmY4MWE0MWEyZDcwNTY1NzhmMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lTdHJlYW1XaXRoRXJyb3IoTlNFcnJvciAqKTsK
IAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUgbWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGY4ODkwZDA1MTZiMjEyYWNmZTc2OTY2NDI1ZGU1NDQx
MDRjOWE2OTQuLjRiNGRkYzAwNGEyNmEzZWE2NDljMjY5MTU4MTRlNTY2MjBjOTU1MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5tbQpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQog
ICAgIGRlc3Ryb3lTdHJlYW1XaXRoUmVhc29uKE5QUkVTX0RPTkUpOwogfQogCi12b2lkIFdlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRlcyBsZW5n
dGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDMzYmE1
N2MxNTVmMThhNzIwY2ZjNzlkNDZhZjM1NWQ3OGUwOTVlOWMuLmE4YTJlZTgxNzFhMmRiOGQ4MmM4
YmIwNWE5OWRkMDA0MTY5ZWFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMDUxLDcgKzEwNTEs
NyBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRh
OihOU0RhdGEgKilkYXRhCiAgICAgfQogCiAgICAgaWYgKF9tYW51YWxTdHJlYW0tPnBsdWdpbigp
KQotICAgICAgICBfbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBfbWFu
dWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzoo
TlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTEx
MjcsNyArMTEyNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDoo
V2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKICAgICAgICAgCiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRo
UmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRh
KDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVu
Z3RoXSk7CisgICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAg
c3RyZWFtLT5kaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NDdlMTZiMmE0ZmIwMjhlNDhjODQw
OWU4NjhjYTcyMzg0ZWFhMDliLi5jYjk0NTM0YzI3YmVhMmQ2ZThlYTdhZWRkMDFmZGFlZjExNGU1
NTg4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+
IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZl
Y3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIuIEFsc28gaGF2ZSBTaGFy
ZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3QgdWludDhfdCpgIGluc3Rl
YWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVkIHR5cGUgdG8gc3RvcmUg
Ynl0ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjaGVja0J1ZmZlcik6CisKIDIwMjEtMDYtMDMgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
Mjc4MzU2LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcAppbmRleCBiZWM3ZDExOWVhODE5YjAxOTlhODczZjAyMDc2NmQ0MTkyMDFhYzJh
Li5lYTczMmE4ZTBlMGMyNmM5ZDkwYTEyMzU5NDBhY2RlNTdlMjE2M2E2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMTAz
LDkgKzEwMyw5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
cikKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VT
ZWdtZW50cykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMCgweDQwMDAsICdhJyk7Ci0gICAg
VmVjdG9yPGNoYXI+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0
b3IyKDB4NDAwMCwgJ2MnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdh
Jyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOworICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwpAQCAtMTYwLDcg
KzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIo
Y29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBl
Y3RlZCkKK3N0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCiB7CiAgICAgLy8gZXhwZWN0
ZWQgaXMgbnVsbCB0ZXJtaW5hdGVkLCBidWZmZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGgg
PSBzdHJsZW4oZXhwZWN0ZWQpOwpAQCAtMTcxLDkgKzE3MSw5IEBAIHN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
ciogZXhwCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBW
ZWN0b3I8Y2hhcj4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8Y2hhcj4g
czIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczMgPSB7J2knLCAn
aicsICdrJywgJ2wnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywg
J2QnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKICAgICAKICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMSkpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBnZXRTb21lRGF0YSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsK
LSAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3RvcjxjaGFyPj4mJiBjb250ZW50
cykgeworICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYm
IGNvbnRlbnRzKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCiAgICAgICAgICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0
KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3RvcjxjaGFyPih7
J2EnLCAnYicsICdjJywgJ2QnfSkpOworICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhf
dD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdl
dCgpKTsKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7CiAg
ICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hl
eFN0cmluZykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0
MSkpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430542</attachid>
            <date>2021-06-03 22:54:15 -0700</date>
            <delta_ts>2021-06-03 23:04:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210603225414.patch</filename>
            <type>text/plain</type>
            <size>128304</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi41ZDFk
OGJkNGQ5MzYwNWRkMTQ0ZDRiZDQwNzIyZmFkYmQzNTkzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi43ZGMz
MWM3MzkyY2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkK
KyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
QEAgLTE1MCw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKQpAQCAtMTY3LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4s
CisgICAgICAgIFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjAzLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsK
KyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKQEAgLTIzNSw3ICsyMzQsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAj
aWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYy
MDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJm
MzMyMzgyMmZlOGYzNDE2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEu
aXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsy
MDYsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAh
aW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBh
YTlkOWMwNTQ1ZDk2YTM1YTY2M2NkYjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0
ZjAwODFlODEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwog
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90
KTsKIAogICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkp
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJT
aXplKTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAg
ICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAg
ICBjbGVhcigpOwpAQCAtMjA1LDkgKzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVt
dWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4
ZWxzLT5zaXplKCkgfTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1f
cGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAx
Y2E5NzYzM2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4Zjhi
NTU1NmNjMmY2YTY3MWU1OTk2YWQxZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKQEAgLTU2LDcgKzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpLCAxKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIw
ZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0
NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0
ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJ
dGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9m
TGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHko
bG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRB
cHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2Vk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1
MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVh
MmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAg
aWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6
ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFi
bGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VM
b25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0g
RlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0
PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0
YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApp
bmRleCA0NDk4MzczNjYxYTdlYjA5OWZiOTg0NTZlOTRhNDFkODRhZGIxYzE2Li4xNzEzNWExNDFj
ZDZmYTJjZTZhODcyYzc3MzE5ZTQzM2IzODc2MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogCiB2b2lkIENE
TUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIE9wZW5D
RE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90
aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0
YUFzVUludDhQdHIoKSksCisgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1f
c2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8
dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKICAgICBjYWxsYmFjayghZXJyb3IgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAt
MzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBH
U1RfREVCVUcoInBhcnNpbmcgYnVmZmVyIG9mIHNpemUgJXp1IiwgYnVmZmVyLT5zaXplKCkpOwot
ICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhQXNVSW50OFB0cigpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgICAgIFN0cmluZ1ZpZXcgcGF5bG9hZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmdWaWV3PiB0eXBlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiOlR5cGU6IiksIDYpOwpAQCAtNDg2LDcgKzQ4Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFj
aygpCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7
Ci0gICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigp
LCBtZXNzYWdlLT5zaXplKCkpOworICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2Fn
ZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgY2hhbGxl
bmdlQ2FsbGJhY2sgOiBtX2NoYWxsZW5nZUNhbGxiYWNrcykKICAgICAgICAgY2hhbGxlbmdlQ2Fs
bGJhY2soKTsKICAgICBtX2NoYWxsZW5nZUNhbGxiYWNrcy5jbGVhcigpOwpAQCAtNTA3LDExICs1
MDcsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICBtX2luaXREYXRhID0gSW5pdERh
dGEoaW5zdGFuY2UtPmtleVN5c3RlbSgpLCBXVEZNb3ZlKGluaXREYXRhU2hhcmVkQnVmZmVyKSk7
CiAKICAgICBHU1RfVFJBQ0UoIkdvaW5nIHRvIHJlcXVlc3QgYSBuZXcgc2Vzc2lvbiBpZCwgaW5p
dCBkYXRhIHNpemUgJXp1IiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgR1NU
X01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNVSW50OFB0
cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiaW5p
dCBkYXRhIiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7CiAKICAgICBPcGVuQ0RNU2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxwdHI7CiAg
ICAgb3BlbmNkbV9jb25zdHJ1Y3Rfc2Vzc2lvbigmaW5zdGFuY2UtPnRodW5kZXJTeXN0ZW0oKSwg
dGh1bmRlckxpY2Vuc2VUeXBlKGxpY2Vuc2VUeXBlKSwgaW5pdERhdGFUeXBlLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksCi0gICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNVSW50OFB0
cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVy
U2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOworICAgICAgICBtX2luaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAw
LCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICgh
c2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIp
OwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAg
ICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9E
RUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAg
ICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4
UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1Q
KCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNj
ZWVkZWQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAg
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAg
aWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lv
bl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+ZGF0YUFzVUludDhQdHIoKSwgcmVz
cG9uc2UtPnNpemUoKSkpCisgICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0
eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKSkKICAgICAgICAgc2Vzc2lvbkZhaWx1cmUoKTsKIH0K
IApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAg
ICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVz
cG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygi
Z290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAgICAgICAg
ICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCks
IG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNz
YWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNl
UmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3Vj
Y2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBlODlmYjU5OTg2MjE1Yjlk
NWRhZTE3OWQyZDc1OWNlZjc0MTgxNDc2Li41OTY2YzNmMjU5NzAzMDA2MzZmZTU5MDliNDc2MzVk
MWYzNWM4MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihwb3NpdGlvbikgLSBidWZmZXIuZGF0YSgpOworICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocG9zaXRpb24pIC0g
YnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAv
LyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCmluZGV4IDYwMzc1ZGU1YmNkY2I0NzZhZTBlZjQxNzVjZTcxYjFlMWQ2MTU1
ZmYuLjA1NDQyOGQ1MGRjNjFhYWFkNTE4ODc5ZDIyY2JjMmY5Nzc5MTUwM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0
YShjb25zdCBDU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25z
dCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCmluZGV4IDlmNmRkODBmMjVhMWUw
Njc1NWRhMWFjOTg3ZWFlODg5ZGY5ZjI3NDIuLmRkMDVlZjBmYmQzZTczMDk3NDM1MDVhY2NjMDEw
MTRlZjRkOWM1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRl
KFJUQ0RhdGFDaGFubmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50
SXNEZWNyZWFzaW5nKHNpemVfdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKaW5kZXggNDEyNDdmNjg0Zjc2MDkwYTZkMmJlMjUwYTU1
ODg2NGNjZjA0MjE1Ny4uYzljOTNiYTYwMTE4ZjkxOWQxMTYwMjkzMmRhZTgzZDc5OTQ2N2ZiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5
U3RhdGUoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKFJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmF3RGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdEVycm9yKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIs
IHNpemVfdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCmluZGV4IGQwMzAwNTM2ZWQ5MzBm
YmY5YzIwMmJiOTcyNjEwZDRjNWY4OWE4YzQuLjkzYmQ5NjJkNGRlYWQ0MDM5ZTVkMDE1NDdiNTU4
MjA4ZDllZWVhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29s
IFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcm
IHN0cmluZykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEs
IHNpemUpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRleCA0YTUxMDkyYmM0
MWYyY2Y5ZjdmM2QwNGYyNzdhNzVjMjk0ZTFjYWE1Li5lMDcwYmRiMTNlODcyNTg3YzUzZTA0ZjQ5
NjE3ZmVkNTU5YTBhODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtNDEsNyArNDEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIGJvb2wgc2VuZFN0
cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBiNzdmOTAwNzgxOWZm
ZWMyOTViNjA1Mjk0OGFlOTk0ZGFlMjQ2MWRmLi5jODdkODg4MDQzNzU5Nzk3MDcxMTlhZGE3MjI2
YzI5MWE1MDhmOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcApAQCAtNDEzLDcgKzQxMyw4IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7
CisgICAgYXV0byBieXRlcyA9IGZsYXR0ZW4oKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFz
QmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFl
YTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjY0MzZhYWM1OWQ4MzE4NGVlY2YxM2MyMDhhZGMxZTUwMzcz
ZTNlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxl
Q2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5k
YXRhQXNDaGFyUHRyKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCA0MjE5YmI1M2MyMDU2OTc1M2Iw
YjE5MmMzYjkzZjFkNWFmN2RlZTU2Li4wYjFmZDc0NWViYTJmNjFlZWNlNjFhMWNhNTgxMzFlZGVk
ZTlmZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0xMzAsNyArMTMwLDcg
QEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVz
SW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKIAogICAgICAgICAgICAgc2l6ZV90IGJ5dGVzRnJv
bVRoaXNWaWV3VG9EZWxpdmVyID0gc3RkOjptaW4oYnVmZmVyVmlldy5zaXplKCksIHJhbmdlLmVu
ZCAtIGJ5dGVJbmRleCArIDEpOwogICAgICAgICAgICAgYnl0ZUluZGV4ICs9IGJ5dGVzRnJvbVRo
aXNWaWV3VG9EZWxpdmVyOwotICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNl
aXZlZERhdGE6YnVmZmVyVmlldy5kYXRhKCkgbGVuZ3RoOmJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxp
dmVyXTsKKyAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOmJ1
ZmZlclZpZXcuZGF0YUFzQ2hhclB0cigpIGxlbmd0aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZl
cl07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAg
ICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtM
b2FkTWV0cmljcyB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nLmgKaW5kZXggMDVkMTc3MTc3NTFlMDBhNTJhNmEwNWViMDA2ZjdiNGMxN2YxZDRiYi4uZWJj
ZGIyZTBkZDliNDI4MGYyNTE1NzNkYmE2YjViZDA2ZGZmZDViYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBs
ZW5ndGgsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKSBjb25zdDsKICAgICBTdHJp
bmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBTdHJpbmcg
ZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJu
IGRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGUoU3RyaW5nVmlldywgVW5l
bmNvZGFibGVIYW5kbGluZywgTkZDTm9ybWFsaXplID0gTkZDTm9ybWFsaXplOjpZZXMpIGNvbnN0
OwogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbmNvZGUoc3RyaW5nLCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpVUkxFbmNvZGVkRW50aXRpZXMsIE5GQ05vcm1hbGl6ZTo6Tm8pOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDAwOTRmNDdkNDY0MDFkNTlhY2I4
NWY3NjU0M2RhNjJkNzM4YzBmZTYuLmVjYjZiYWUxNjg5NTYxNjdmNjFmYWYzZGNhMjkzNjQ2Y2Rj
YWQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDY2
LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZy
YW1lLT5pbml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0
ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVt
cHR5IGRvY3VtZW50Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0
ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUoKSk7CisgICAgICAgIGxv
YWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0
YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDU3ZWU1ZGVkMjRiZGEyNzVlNTg2
YmRmNjEzMmE1MjQ1NWFiYWNjOTYuLmRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMz
MTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApA
QCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4
bWxDaGFyKiB1cmksCiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3BlY2lmeSBhbiBlbmNvZGluZyBo
ZXJlLiBOZWl0aGVyIEdlY2tvIG5vciBXaW5JRSByZXNwZWN0cwogICAgICAgICAvLyB0aGUgZW5j
b2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMuCi0gICAgICAgIHhtbERvY1B0ciBk
b2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0aW9ucyk7CisgICAgICAg
IHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhQXNDaGFyUHRy
KCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwg
MCwgb3B0aW9ucyk7CiAKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYygwLCAwKTsK
ICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAx
ZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5NzhmLi4xZmRlMmU4ZDYwMzUzNDI2
ZGJiNmRkZjMyMzhlNzYxMzU3NTI4N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNTksNyArMzU5LDcg
QEAgc3RhdGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciopCiBjbGFzcyBPZmZzZXRCdWZmZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9mZnNldEJ1ZmZl
cihWZWN0b3I8Y2hhcj4gYnVmZmVyKQorICAgIE9mZnNldEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
JiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgICAgICAs
IG1fY3VycmVudE9mZnNldCgwKQogICAgIHsKQEAgLTM3Nyw3ICszNzcsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8
dWludDhfdD4gbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IGMz
ZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcuLjdlMGQ4ZGJlMTkwMjU5OWQw
MmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQog
ICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgp
IDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApp
bmRleCA0YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2Li5jYmQwNGQ5OWI3
YzI3MTY3MWM4NzUyYjE4YTkyZTQyMTU4NTZjOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDgxLDcgKzQ4
MSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0
YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlE
LCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTUwNyw3
ICs1MDcsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJgogICAgIGlmIChtX3BsdWdpbkNhbmNl
bGVkTWFudWFsU3RyZWFtTG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4tPm1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IGM3ODBiYzRmODExYWY4ZmIzODdm
YjBkMjJjN2ZkZTRmMWQxMzYwODkuLmU1YWE3MGNkMGMyZDc3ZWIyYjhiN2U0YzllOTE2Yjg2ZGJl
OWU2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgd3JpdGVUb0Rpc2soc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rl
cj4mJiBlbmNvZGVyLCBTdHJpbmcmJiBwYXRoKQogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEt
PmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBhdXRvIHdyaXR0ZW5CeXRlcyA9IEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YUFzQ2hhclB0cigpLCByYXdE
YXRhLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUp
OwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYXdEYXRh
LT5zaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNy4uNmMy
Nzc0NDk2NDMzOGNkYWE1YzgyNzMzMmI3ZGFhNWIwNWM4ZTcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMDYxLDcgKzMwNjEsNyBA
QCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVS
ZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZlcigpLT5i
ZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3
cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNpemUo
KSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBzaGFyZWRN
ZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4oc2VnbWVu
dC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYwZWM4YzgzOGE4NzA4MTcwZTFmMmM2
OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJjOWUyOGI3Nzk4NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMjEsNyArMjIx
LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAg
ICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX3N5bmNEYXRhLT5z
aXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5j
RGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5j
UmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4
YWYxZGM2YS4uOTljYTFkODhiODMyYjBmYTNkNGM3MmYxNTViMzZkZGQ1YTFjM2IyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
RGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGQwY2I3OWU1ZDFlNjVmOGUx
YmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdkMWI1MTNl
YjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5kUXVldWUg
V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwg
V2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmlu
ZykgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7
CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFu
bmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpIH0g
fSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfSwgWyZjaGFubmVsXShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIGRhdGEsIGJ5dGVMZW5ndGgp
OwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hh
bm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAgIH0s
IFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKKyAg
ICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BD
b2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0ZUxlbmd0
aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5ndGgg
fSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUgZXhjZXB0
aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4Y2VwdGlv
bkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQg
QmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDQ5OWRhMThkMTc0ZmU3ODkyOGI4NzNjYTcyY2I3
ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIyNGZkMWIyODAwNGNhNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjEsNyAr
MTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKIHsKICAgICBpZiAoYXV0byogc291cmNl
ID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaWYg
KGlzUmF3KQotICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIHNv
dXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKICAgICB9CkBA
IC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OmNoYW5n
ZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGkKIAogdm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgYm9vbCBpc1JhdywgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAoaXNS
YXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAg
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAgICAgcG9zdFRhc2tUb0hhbmRsZXIoaGFuZGxlcklk
ZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdURk1vdmUodGV4dCkuaXNvbGF0ZWRDb3B5KCksIGJ1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0byYgaGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChpc1JhdykKLSAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwor
ICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZl
U3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICB9KTsKQEAgLTIzMCw5ICsyMzAsOSBAQCB2
b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmll
ciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOwogfQogCi12
b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRh
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50
aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplICB9IH0sIDApOworICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVE
YXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgc2l6ZSAg
fSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNv
dXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdl
ci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdjNTU0ZmRiMTVlZTIzOWRlNjJiMzUwY2UuLmY4YzA1
ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFlZGEwYTczNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hhciosIHNpemVfdCkgZmlu
YWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIpIGZpbmFs
OwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4OTkwOTMyYzQzODJiYjYxZmYwMDQ5ODRjNGIzOTkw
ZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4NDUzMzExY2YzMWNiZjJiODVjMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMg
TlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9vbCBpc0ZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZlciwg
dWludDMyX3QgbGVuZ3RoLAogICAgICAgICBpZiAoIWZpbGVDb250ZW50cykKICAgICAgICAgICAg
IHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgICAgICBwb3N0QnVmZmVyID0gZmls
ZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29udGVudHMtPmRh
dGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9zdEJ1ZmZlclNpemUgPSBmaWxlQ29udGVudHMtPnNp
emUoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIE5QQVBJIHNwZWMgc3RhdGVzIHRoYXQgdGhl
IGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRl
eCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjLi4wOTBkNWE0MGNlYmQ3
OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBA
IC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3AKICAgICAgICAgcGx1Z2lu
U3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFz
dE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
CiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAKQEAgLTkwMSw3ICs5MDEsNyBAQCB2
b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludAogICAgIG1fbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5
cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQ
bHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKG1fc2hv
dWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDI0NzQ5MTQ2ZDkw
ZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNjZjIuLmE1ODJiNjY1MmZhNTAxZDZlNzdkYzI0Mjkw
NmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTk1LDEyICsxOTUsMTIg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQg
cmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3Ry
ZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVy
cmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1h
bnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDJhNjAxY2MwOGI0MGU3NWY5YWUx
OGE2MjVhODJjMjYxZmZkN2MyN2UuLmU5MThmODkyYjdiZTA4MDU2MTRhZWU0OWViZTI5M2EzMjIw
MWUwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHMKICAgICBzdGFydChyZXNwb25zZVVSTC5zdHJp
bmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7
CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gRGVs
aXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28gYXdh
eSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBlUGx1
Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBTdHJpbmcmIHJlc3Vs
dCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0cmluZy5sZW5n
dGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRlbGl2
ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHRDU3Ry
aW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwogICAgIHN0b3AoTlBSRVNfRE9O
RSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpz
dGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYQogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0
YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJl
YW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKCkKICAgICB9CiB9CiAKLXZvaWQgTmV0
c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fZmlsZUhhbmRs
ZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBhdGgu
aXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCkBAIC0yNzYs
NyArMjc2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSht
X2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOworICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNvdW50ICE9IGxlbmd0aCkgewogICAg
ICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdoZW4gd2UgYXJlIG91dCBvZiBkaXNr
IHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KICAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRl
eCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4N2Q0M2U1MjFmMDg5OTIzYWJlLi45YjA3MDk5ODg0NzIw
NDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYyOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNlVVJMLCBp
bnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsKIApAQCAt
NzMsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBub3Rp
ZnlBbmREZXN0cm95U3RyZWFtKE5QUmVhc29uKTsKIAotICAgIHZvaWQgZGVsaXZlckRhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGVsaXZlckRhdGFUb1BsdWdp
bigpOwotICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpOwogCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKICAgICB1
aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDZjZGJlZGNkMDg1NzJlMGI2NTk5ODU0M2ZkZjQyZjI1
ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMwNmQwZmZkODJhY2M4MmYyOGIwOWNmZTAyMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAg
LTE3NiwxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CiAgICAg
dm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBm
aW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAg
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBm
aW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2Fz
Q2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFs
OwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
RmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50
KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Niw3ICszNjYsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQppbmRleCBjMDJmODQwYzQwNzQ4MDFiZDg3NGY2Y2Y4MzJlOTdiODg0MWY1YzQ5Li4xNTEz
ZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2NiYmQwNzExZjdkMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTcsNyArMTE1
Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291bnQpCit2
b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgY291bnQpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAoIXJl
cXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGNvdW50KTsKKyAgICByZXF1ZXN0LT5hZGRE
YXRhKGRhdGEsIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE2ODQsMTQgKzE2ODQsMTQgQEAgdm9pZCBQREZQbHVn
aW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJM
JiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJl
cXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0
YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3RoKTsK
KyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOwogICAg
IG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiB9CiAKQEAgLTE3MjksNyArMTcyOSw3IEBAIHZv
aWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExlbmd0
aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRMZW5n
dGggLSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVn
aW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaAppbmRleCBkM2M3YWM3MDUxMWZjNzJjODcwODRiOGEzNzRmOWQ2YzcyNjg1OWIw
Li4xMzU1Y2ZmNGViNzdmNmY3MTdkYjkyMGUyMTQwNThmYzE2YjJmZWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBm
aW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxs
cyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0g
ICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAgICAv
LyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4
IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYyMzg3MGE2MDllMzM5MzlhY2YuLjljZWQ3ZGEwNzUwMmY2
MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTMzMCw5ICszMzAsOSBAQCB2b2lkIFBs
dWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYgcmVzcG9ucwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShz
dHJlYW1JRCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVk
VGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdm9pZCBQbHVnaW5Qcm94eTo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewotICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFSZWZlcmVu
Y2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgpKSwgbV9w
bHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJl
YW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5j
ZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5ICszNTAsOSBAQCB2b2lkIFBsdWdpblByb3h5OjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMy
XwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5D
b250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVS
TC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVh
ZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6Om1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9p
ZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgp
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaAppbmRleCAwMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEyZTU2MTJj
NmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgxNjhkZDNhNzM4ZmVkMmIwZGMwNzE0NGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg3LDEx
ICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1J
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBi
b29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCBiNjRhY2FiZGY3NTNhYTg5ZTdiNzBlNGQ1NmU1NWQ3NzBlZDMyMDIxLi4zYTA5Njgz
ZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMwNzY4NDA3YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1l
VHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdp
bi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CiB9CkBA
IC00MDcsNyArNDA3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5t
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNl
LnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFp
bGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4MjhkMzBhMDZlOWQ4ZmRkNzhi
NTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40YTFmNWFjNTdhOWQ3NzU0ZTY0MDc4ZjdkYTQyYjU3NmEz
MzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdEZXN0cm95ZWQo
KSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwgbV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95ZWQo
KTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBtYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQg
bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2MjEwMi4u
MTc2NzRkZjAyYzMyYTEzZWRhODUwNmUyNzBkZmQ3NjM3MDM1MGEzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNo
YXIqIGRhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCAwMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiLi4yYWMyNWRjZDM5
ZTQ4MGRmOTM2YzZhZWI3OWVjMjBhZmVjMmQ0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8g
Rmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KLSAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJpZGVCdWZm
ZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92
ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQog
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZl
cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBjNTM2MjVh
MTg4MzhmZDBkMjczZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4xNTIwMGVjZDkxOTI2OGMzNDA3ZDkx
OWMwNjY3MThjOTMyNDYxNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTdHJlYW1XaXRoUmVz
cG9uc2UoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVz
ZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1N2FhNGE4
MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4wODYxNWU0OWY1MTMwM2E0ZjU5Y2Fk
MDUzOWNmZmU3ZDlhMDViMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bS5tbQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bTo6c3RhcnRTdHJlYW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBsb25nIGxvbmcgZXhwZWMKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KFtoZWFkZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBsZW5ndGhdKTsKIH0KICAgICAgICAg
ICAgICAgICAgICAgIAotdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgX1dLUEhTdHJlYW1EaWRSZWNlaXZlRGF0
YShtX2luc3RhbmNlLT5ob3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0YW5jZS0+cGx1Z2luSUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3RyZWFtSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9j
YXN0PGNoYXIqPihieXRlcyksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcykp
LCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
RmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNzU0MjY5MzgxMmU3OGI3
Zjg5YThlMzQ0MDM3MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNlZjhjMDZhY2M5ODhhYTI0YWI4ODI3
YTM5OGY1YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpA
QCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFs
dWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoOltKU0RhdGEgbGVuZ3RoXQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5n
TmFtZTpuaWxdKTsKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25zZShyZXNw
b25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKKyAgICAg
ICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0tPmRpZEZp
bmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCmluZGV4IDc2MTE3MWNlYTdjYTVmYTY3MjhjOWRjMDBkMmViN2IyZDE4Zjc3ODAu
LjY0YzI3N2I1ZjQzZDE1MWJkYTQxNWJlYzliNTlkNWYzY2NmYzA4NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUxOSw3ICs1MTksNyBAQCAtICh2b2lk
KXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilk
YXRhCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0qIG1hbnVhbFN0cmVhbSA9IF9wcm94eS0+bWFudWFsU3RyZWFtKCkpCi0gICAgICAgIG1h
bnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtk
YXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBtYW51YWxTdHJlYW0tPmRpZFJl
Y2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBb
ZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5W
aWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4
IDJiYzk3OGQzNDAzZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMuLjE5MzkwYjVjMDJhNzVm
NzlmOTY2ZjgxYTQxYTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveVN0cmVhbVdpdGhFcnJvcihOU0Vycm9y
ICopOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggZjg4OTBkMDUxNmIyMTJhY2ZlNzY5NjY0MjVk
ZTU0NDEwNGM5YTY5NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMyNjkxNTgxNGU1NjYyMGM5NTUzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciopCiAgICAgZGVzdHJveVN0cmVhbVdpdGhSZWFzb24oTlBSRVNfRE9ORSk7CiB9CiAKLXZvaWQg
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8gZGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWJ5dGVz
IGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXgg
MzNiYTU3YzE1NWYxOGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5NWU5Yy4uYThhMmVlODE3MWEyZGI4
ZDgyYzhiYjA1YTk5ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEwNTEsNyAr
MTA1MSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZl
ZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICB9CiAKICAgICBpZiAoX21hbnVhbFN0cmVhbS0+cGx1
Z2luKCkpCi0gICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgICAg
IF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5W
aWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpA
QCAtMTEyNyw3ICsxMTI3LDcgQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1
ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICAKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVh
bVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2
ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0
YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAg
ICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0N2UxNmIyYTRmYjAyOGU0
OGM4NDA5ZTg2OGNhNzIzODRlYWEwOWIuLmNiOTQ1MzRjMjdiZWEyZDZlOGVhN2FlZGQwMWZkYWVm
MTE0ZTU1ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8
Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQg
b2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZl
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAg
aW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBz
dG9yZSBieXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmNoZWNrQnVmZmVyKToKKwogMjAyMS0wNi0wMyAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyNzgzNTYuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlYzdkMTE5ZWE4MTliMDE5OWE4NzNmMDIwNzY2ZDQxOTIw
MWFjMmEuLmVhNzMyYThlMGUwYzI2YzlkOTBhMTIzNTk0MGFjZGU1N2UyMTYzYTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0xMDMsOSArMTAzLDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5
QnVmZmVyKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJM
YXJnZVNlZ21lbnRzKQogewotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsK
LSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMSgweDQwMDAsICdiJyk7Ci0gICAgVmVjdG9yPGNoYXI+
IHZlY3RvcjIoMHg0MDAwLCAnYycpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAw
MCwgJ2EnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CkBAIC0x
NjAsNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0J1
ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIq
IGV4cGVjdGVkKQorc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKIHsKICAgICAvLyBl
eHBlY3RlZCBpcyBudWxsIHRlcm1pbmF0ZWQsIGJ1ZmZlciBpcyBub3QuCiAgICAgc2l6ZV90IGxl
bmd0aCA9IHN0cmxlbihleHBlY3RlZCk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGljIHZvaWQg
Y2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25z
dCBjaGFyKiBleHAKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewot
ICAgIFZlY3RvcjxjaGFyPiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjxj
aGFyPiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywg
J2MnLCAnZCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwogICAgIAog
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMxKSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGdldFNvbWVEYXRhKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRv
KQogewotICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPGNoYXI+PiYmIGNv
bnRlbnRzKSB7CisgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhf
dD4+JiYgY29udGVudHMpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKICAgICAgICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwpAQCAtMjA5LDcgKzIwOSw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgYXV0byBidWZmZXIxID0g
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
MS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPGNo
YXI+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CisgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1
aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9
fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwg
eydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgp
KTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRvSGV4U3RyaW5nKQogewotICAgIFZlY3RvcjxjaGFyPiB0MSA9IHsweDExLCAweDUsIDB4MTJ9
OworICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHQxKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
</data>
<flag name="commit-queue"
          id="452023"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430543</attachid>
            <date>2021-06-03 22:59:05 -0700</date>
            <delta_ts>2021-06-03 23:10:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210603225904.patch</filename>
            <type>text/plain</type>
            <size>130120</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi41ZDFk
OGJkNGQ5MzYwNWRkMTQ0ZDRiZDQwNzIyZmFkYmQzNTkzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi43ZGMz
MWM3MzkyY2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkK
KyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
QEAgLTE1MCw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKQpAQCAtMTY3LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4s
CisgICAgICAgIFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjAzLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsK
KyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKQEAgLTIzNSw3ICsyMzQsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAj
aWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYy
MDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJm
MzMyMzgyMmZlOGYzNDE2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEu
aXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsy
MDYsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAh
aW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBh
YTlkOWMwNTQ1ZDk2YTM1YTY2M2NkYjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0
ZjAwODFlODEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwog
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90
KTsKIAogICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkp
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJT
aXplKTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAg
ICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAg
ICBjbGVhcigpOwpAQCAtMjA1LDkgKzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVt
dWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4
ZWxzLT5zaXplKCkgfTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1f
cGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAx
Y2E5NzYzM2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4Zjhi
NTU1NmNjMmY2YTY3MWU1OTk2YWQxZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKQEAgLTU2LDcgKzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpLCAxKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIw
ZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0
NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0
ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJ
dGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9m
TGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHko
bG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRB
cHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2Vk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1
MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVh
MmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAg
aWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6
ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFi
bGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VM
b25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0g
RlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0
PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0
YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdjNTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJk
NTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsK
LSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIi
LCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7Cisg
ICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwg
W3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUo
KV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5u
ZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVj
b2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKaW5kZXggNDQ5ODM3MzY2MWE3ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMx
Ni4uMTcxMzVhMTQxY2Q2ZmEyY2U2YTg3MmM3NzMxOWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVRodW5kZXIuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmEKIAogdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2Nl
cnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2Vy
dGlmaWNhdGUtPmRhdGFBc1VJbnQ4UHRyKCkpLAorICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9w
ZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgp
LCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2Vy
dGlmaWNhdGUtPnNpemUoKSk7CiAgICAgY2FsbGJhY2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFp
bGVkKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgR1NUX0RFQlVHKCJwYXJzaW5nIGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFz
VUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVy
IiwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3
IHBheWxvYWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmll
dz4gdHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAg
LTQ4Niw3ICs0ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRh
dGVEb25lQ2FsbGJhY2soKQogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNh
bGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1Io
IkNETSBlcnJvciIpOwotICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0
YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3Ig
ZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoYWxsZW5nZUNhbGxiYWNrIDogbV9jaGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAg
IGNoYWxsZW5nZUNhbGxiYWNrKCk7CiAgICAgbV9jaGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsK
QEAgLTUwNywxMSArNTA3LDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0
RGF0YSA9IEluaXREYXRhKGluc3RhbmNlLT5rZXlTeXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNo
YXJlZEJ1ZmZlcikpOwogCiAgICAgR1NUX1RSQUNFKCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNl
c3Npb24gaWQsIGluaXQgZGF0YSBzaXplICV6dSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwotICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+
ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NU
X01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5p
dERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogCiAgICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24g
PSBudWxscHRyOwogICAgIG9wZW5jZG1fY29uc3RydWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVu
ZGVyU3lzdGVtKCksIHRodW5kZXJMaWNlbnNlVHlwZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlw
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+
ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwg
MCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAg
bV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUo
KSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9u
KTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3Jl
YXRlIHNlc3Npb24iKTsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBt
X2luaXREYXRhLnBheWxvYWQoKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeQogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5
bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2Ug
PSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAg
ICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdl
LT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAg
ICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVz
dCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeQogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQog
ICAgIH0pOwotICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBv
cGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJ
bnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkpKQorICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vz
c2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQo
KSwgcmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25G
YWlsdXJlKCk7CiB9CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
RAogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZN
b3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAg
ICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRh
QXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1Rf
TUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdl
VHlwZTo6TGljZW5zZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZSht
ZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5v
bmUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5
ZmI1OTk4NjIxNWI5ZDVkYWUxNzlkMmQ3NTljZWY3NDE4MTQ3Ni4uNTk2NmMzZjI1OTcwMzAwNjM2
ZmU1OTA5YjQ3NjM1ZDFmMzVjODM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0
YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsK
KyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBvc2l0aW9uKSAtIGJ1ZmZlci5kYXRhKCk7CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDBjMGMxMzcyMDNkZjM2Y2Y1NzU1ZjEy
ZjQ5Yjk1NjIzNjJmMjRjNTIuLjczMzZhMjM1MWNhNzg4ZWI2ODlhMDJlZGRlMzA3OTgwMWNhMmFl
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb24KICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwg
MCwgMCwgMCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXpl
ICE9IEdESV9FUlJPUikgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YShzaXplKTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdl
dEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7CiAgICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaAppbmRleCA2MDM3NWRlNWJjZGNiNDc2YWUwZWY0MTc1Y2U3MWIxZTFkNjE1NWZmLi4wNTQ0
MjhkNTBkYzYxYWFhZDUxODg3OWQyMmNiYzJmOTc3OTE1MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhcios
IHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFh
Yzk4N2VhZTg4OWRmOWYyNzQyLi5kZDA1ZWYwZmJkM2U3MzA5NzQzNTA1YWNjYzAxMDE0ZWY0ZDlj
NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRh
Q2hhbm5lbFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRh
KGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3
RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERl
dGVjdEVycm9yKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVh
c2luZyhzaXplX3QpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlQ29ubmVjdGlvbi5oCmluZGV4IDQxMjQ3ZjY4NGY3NjA5MGE2ZDJiZTI1MGE1NTg4NjRjY2Yw
NDIxNTcuLmM5YzkzYmE2MDExOGY5MTlkMTE2MDI5MzJkYWU4M2Q3OTk0NjdmYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCkBAIC0zOSw3ICsz
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciwgUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RF
cnJvcihSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXplX3Qp
ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAppbmRleCBkMDMwMDUzNmVkOTMwZmJmOWMyMDJi
Yjk3MjYxMGQ0YzVmODlhOGM0Li45M2JkOTYyZDRkZWFkNDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5ZWVl
YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBSVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiBzdHJpbmcp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6
c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggNGE1MTA5MmJjNDFmMmNmOWY3
ZjNkMDRmMjc3YTc1YzI5NGUxY2FhNS4uZTA3MGJkYjEzZTg3MjU4N2M1M2UwNGY0OTYxN2ZlZDU1
OWEwYTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcikgZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdEYXRh
KGNvbnN0IENTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIq
LCBzaXplX3QpIGZpbmFsOworICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYw
NTI5NDhhZTk5NGRhZTI0NjFkZi4uYzg3ZDg4ODA0Mzc1OTc5NzA3MTE5YWRhNzIyNmMyOTFhNTA4
ZjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
QEAgLTQxMyw3ICs0MTMsOCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVj
dG9yPGNoYXI+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIGF1
dG8gYnl0ZXMgPSBmbGF0dGVuKCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5
dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcw
NDg4NGUyZTczNjZmLi42NDM2YWFjNTlkODMxODRlZWNmMTNjMjA4YWRjMWU1MDM3M2UzZWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6
flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVj
ZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hh
clB0cigpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5
M2YxZDVhZjdkZWU1Ni4uMGIxZmQ3NDVlYmEyZjYxZWVjZTYxYTFjYTU4MTMxZWRlZGU5ZmRlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZChXZWJDb3JlTlNVCiAKICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmll
d1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRl
SW5kZXggKyAxKTsKICAgICAgICAgICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1Rv
RGVsaXZlcjsKLSAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRh
OmJ1ZmZlclZpZXcuZGF0YSgpIGxlbmd0aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcl07Cisg
ICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpidWZmZXJWaWV3
LmRhdGFBc0NoYXJQdHIoKSBsZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChieXRlSW5kZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAg
ICBbdGFzayByZXNvdXJjZUZpbmlzaGVkOm51bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJp
Y3MgeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCmlu
ZGV4IDA1ZDE3NzE3NzUxZTAwYTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2RiMmUwZGQ5
YjQyODBmMjUxNTczZGJhNmI1YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBi
b29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5nIGRlY29k
ZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlY29kZShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBkZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxl
SGFuZGxpbmcsIE5GQ05vcm1hbGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZykgY29u
c3QgZmluYWwgeyByZXR1cm4gZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJM
RW5jb2RlZEVudGl0aWVzLCBORkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNk
YTYyZDczOGMwZmU2Li5lY2I2YmFlMTY4OTU2MTY3ZjYxZmFmM2RjYTI5MzY0NmNkY2FkNDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYs
NyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7
IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5p
dCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0
TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1
bWVudAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRk
RGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGFBc0NoYXJQ
dHIoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCA1N2VlNWRlZDI0YmRhMjc1ZTU4NmJkZjYxMzJh
NTI0NTVhYmFjYzk2Li5kZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciog
dXJpLAogCiAgICAgICAgIC8vIFdlIGRvbid0IHNwZWNpZnkgYW4gZW5jb2RpbmcgaGVyZS4gTmVp
dGhlciBHZWNrbyBub3IgV2luSUUgcmVzcGVjdHMKICAgICAgICAgLy8gdGhlIGVuY29kaW5nIHNw
ZWNpZmllZCBpbiB0aGUgSFRUUCBoZWFkZXJzLgotICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1s
UmVhZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOworICAgICAgICB4bWxEb2NQ
dHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVs
bHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlv
bnMpOwogCiAgICAgICAgIHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoMCwgMCk7CiAgICAgICAg
IHhtbFNldEdlbmVyaWNFcnJvckZ1bmMoMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMWQ4ZGFkYmU0
Njc2MTkyZjY1YWU4ZTA4YzU2ODFjNmIwY2NlOTc4Zi4uMWZkZTJlOGQ2MDM1MzQyNmRiYjZkZGYz
MjM4ZTc2MTM1NzUyODdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIHN0YXRp
YyBpbnQgbWF0Y2hGdW5jKGNvbnN0IGNoYXIqKQogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPZmZzZXRCdWZmZXIoVmVjdG9y
PGNoYXI+IGJ1ZmZlcikKKyAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVy
KQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAgICAgLCBtX2N1cnJl
bnRPZmZzZXQoMCkKICAgICB7CkBAIC0zNzcsNyArMzc3LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fYnVmZmVyOwogICAgIHVuc2lnbmVkIG1fY3VycmVudE9mZnNldDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBjM2YxODNiMmRi
NWJiNTk0YzMwOWNkODliNzIwMjBlYTAxYWQyMWE3Li43ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1
NjNhNmUzZGYxODMyZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KIAotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxw
dHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZm
ZXItPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGIy
MGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNi4uY2JkMDRkOTliN2MyNzE2NzFj
ODc1MmIxOGE5MmU0MjE1ODU2YzllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBTdAogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKIHsKLSAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFt
SUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0
cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC01MDcsNyArNTA3LDcg
QEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYKICAgICBpZiAobV9wbHVnaW5DYW5jZWxlZE1hbnVh
bFN0cmVhbUxvYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGx1Z2luLT5tYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAppbmRleCBjNzgwYmM0ZjgxMWFmOGZiMzg3ZmIwZDIyYzdm
ZGU0ZjFkMTM2MDg5Li5lNWFhNzBjZDBjMmQ3N2ViMmI4YjdlNGM5ZTkxNmI4NmRiZTllNmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtNzksNyArNzks
NyBAQCB2b2lkIHdyaXRlVG9EaXNrKHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+JiYgZW5j
b2RlciwgU3RyaW5nJiYgcGF0aCkKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdHRl
bkJ5dGVzID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCks
IHJhd0RhdGEtPnNpemUoKSk7CisgICAgYXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGFBc0NoYXJQdHIoKSwgcmF3RGF0YS0+c2l6
ZSgpKTsKICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAogICAg
IGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IGYwYzhlZWY1M2QzNTk3ZTBlYThhMTFkYjEwMWVhOTQ2MDE0MTllMTcuLjZjMjc3NDQ5NjQz
MzhjZGFhNWM4MjczMzJiN2RhYTViMDVjOGU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzA2MSw3ICszMDYxLDcgQEAgc3RhdGlj
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUoY29uc3QgU2NyaXAKICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGUgeyB9OwogCiAgICAgYXV0byYgc2VnbWVudCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKS0+
c2VnbWVudDsKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChj
b25zdF9jYXN0PGNoYXIqPihzZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8dWludDhfdCo+KHNlZ21lbnQtPmRhdGEo
KSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBlNzM1N2QxMTI1MGQ2MGVjOGM4MzhhODcwODE3MGUxZjJjNjhmNWRkLi4x
ZTE0OWNmMjM3MGE3MTE1MTY5OTU0YTY1YjliYzllMjhiNzc5ODcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0
YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07
CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNp
emUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNl
LCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEu
Ljk5Y2ExZDg4YjgzMmIwZmEzZDRjNzJmMTU1YjM2ZGRkNWExYzNiMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBi
dWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBkMGNiNzllNWQxZTY1ZjhlMWJkMTk5YzU0
M2RlZDA5MThlODRmNTFhLi43ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2OTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtNTgsOSArNTgsOSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tl
dENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvYwog
ICAgIHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKICAg
ICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BD
b2RlVGV4dCwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAg
ICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2Vu
ZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhT
dHJpbmcubGVuZ3RoKCkpOwotICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAg
ICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNl
bmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSksIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICB9LCBbJmNoYW5u
ZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7CisgICAgICAgIGNo
YW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFy
eSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAg
ICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6
U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0
ZUxlbmd0aCk7CiAgICAgfSwgWyZjaGFubmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUp
IHsKICAgICAgICAgYXV0byBjb2RlID0gc3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsK
ICAgICAgICAgY2hhbm5lbC5mYWlsKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIEJsb2I6IGV4
Y2VwdGlvbiBjb2RlID0gIiwgY29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyLmNwcAppbmRleCA0OTlkYTE4ZDE3NGZlNzg5MjhiODczY2E3MmNiN2VlMWFlMGE1
ZDlmLi43ZWIxMDc4NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIgc291CiB7CiAgICAgaWYgKGF1dG8qIHNvdXJjZSA9IHNvdXJj
ZUZyb21JZGVudGlmaWVyKHNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChpc1JhdykK
LSAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgICAgICBzb3VyY2UtPnNl
bmRSYXdEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHNvdXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpjaGFuZ2VSZWFkeVN0
YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIgaGFuZGxlcklkZW50aWZpZXIsIGJvb2wgaXNSYXcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKIHsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gYnVmZmVyOworICAgIFZlY3Rv
cjx1aW50OF90PiBidWZmZXI7CiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGlzUmF3KQogICAg
ICAgICBidWZmZXIgPSBkYXRhLnZlY3RvcigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIKIAogICAgIHBvc3RUYXNrVG9IYW5kbGVyKGhhbmRsZXJJZGVudGlmaWVy
LCBbaXNSYXcsIHRleHQgPSBXVEZNb3ZlKHRleHQpLmlzb2xhdGVkQ29weSgpLCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcildKGF1dG8mIGhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoaXNS
YXcpCi0gICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEoV1RGTW92ZSh0ZXh0KSk7CiAgICAgfSk7CkBAIC0yMzAsOSArMjMwLDkgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFcKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZhbHNl
LCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPih0ZXh0LmRhdGEoKSksIHRleHQubGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAotdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2Vp
dmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCB0
cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihkYXRhKSwgc2l6ZSAgfSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlk
ZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgIH0gfSwgMCk7
CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25u
ZWN0aW9uOjpkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
aWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAppbmRl
eCA2ZDEyYjdjMzVmMDA0YTQ3YzU1NGZkYjE1ZWUyMzlkZTYyYjM1MGNlLi5mOGMwNWU1Mzc0MTdk
Nzk0ZDVhNjE1ZTc4OGUxZTZhZWRhMGE3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9p
ZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwg
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxTdGF0ZSkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhXZWJDb3JlOjpSVENEYXRhQ2hhbm5l
bElkZW50aWZpZXIsIHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1
bmNzLmNwcAppbmRleCAwMDY3ODk5MDkzMmM0MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3Li4z
ZGM5MjhkYzU3YTk3ZDAyYzkyODQ1MzMxMWNmMzFjYmYyYjg1YzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5QRXJyb3Ig
cGFyc2VQb3N0QnVmZmVyKGJvb2wgaXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90
IGxlbmd0aCwKICAgICAgICAgaWYgKCFmaWxlQ29udGVudHMpCiAgICAgICAgICAgICByZXR1cm4g
TlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKLSAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50
cy0+ZGF0YSgpOworICAgICAgICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhQXNDaGFy
UHRyKCk7CiAgICAgICAgIHBvc3RCdWZmZXJTaXplID0gZmlsZUNvbnRlbnRzLT5zaXplKCk7CiAK
ICAgICAgICAgLy8gRklYTUU6IFRoZSBOUEFQSSBzcGVjIHN0YXRlcyB0aGF0IHRoZSBmaWxlIHNo
b3VsZCBiZSBkZWxldGVkIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjE3ZDdk
NzZjMGE4YTVlYjlkYmE1N2E4YTgwNmJjNjA4NjI2ZjQ1Yy4uMDkwZDVhNDBjZWJkNzhjMWVkNzJi
YWJhN2JmNmUwNzIzM2IyNWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtODY2LDcg
Kzg2Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwCiAgICAgICAgIHBsdWdpblN0cmVhbS0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmll
ZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQKICAgICBtX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFk
ZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIEFTU0VSVChtX3Nob3VsZFVzZU1h
bnVhbExvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCAyNDc0OTE0NmQ5MGY0NTVmNjlm
NTQzNTk2NGUwYjNiY2EzMWRjY2YyLi5hNTgyYjY2NTJmYTUwMWQ2ZTc3ZGMyNDI5MDZiNDFkZWEy
YjA1ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNl
U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1J
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBi
b29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAyYTYwMWNjMDhiNDBlNzVmOWFlMThhNjI1YTgy
YzI2MWZmZDdjMjdlLi5lOTE4Zjg5MmI3YmUwODA1NjE0YWVlNDllYmUyOTNhMzIyMDFlMDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzCiAgICAgc3RhcnQocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0
cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12
b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIERlbGl2ZXJpbmcg
dGhlIGRhdGEgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gc3RyZWFtIHRvIGdvIGF3YXkgc28gd2Ug
a2VlcCBhIHJlZmVyZW5jZSB0byBpdCBoZXJlLgogICAgIFJlZjxOZXRzY2FwZVBsdWdpblN0cmVh
bT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
blN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAg
aWYgKCFzdGFydChtX3JlcXVlc3RVUkxTdHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCksIDAs
ICJ0ZXh0L3BsYWluIiwgIiIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0YShy
ZXN1bHRDU3RyaW5nLmRhdGEoKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVsaXZl
ckRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0cmluZy5kYXRh
KCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQog
CkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQoY29u
c3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWEKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQo
bV9pc1N0YXJ0ZWQpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0
cmVhbTo6ZGVsaXZlckRhdGFUb1BsdWdpbigpCiAgICAgfQogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgp
KSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgpAQCAtMjc2LDcgKzI3Niw3
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBieXRlcywgbGVuZ3RoKTsKKyAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9maWxlSGFuZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRl
cyksIGxlbmd0aCk7CiAgICAgaWYgKGJ5dGVDb3VudCAhPSBsZW5ndGgpIHsKICAgICAgICAgLy8g
VGhpcyBoYXBwZW5zIG9ubHkgcmFyZWx5LCB3aGVuIHdlIGFyZSBvdXQgb2YgZGlzayBzcGFjZSBv
ciBoYXZlIGEgZGlzayBJL08gZXJyb3IuCiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSht
X2ZpbGVIYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMTBjN2Yy
ZDllODc0NjNhY2JlNzhmODdkNDNlNTIxZjA4OTkyM2FiZS4uOWIwNzA5OTg4NDcyMDQzMWEzYjEz
ZTQwMWVlNDg4ODM4YmE2MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBV
UkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJlZGly
ZWN0UmVzcG9uc2VTdGF0dXMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpOwogICAgIHZvaWQgZGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCk7CiAKQEAgLTczLDkgKzcz
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgbm90aWZ5QW5kRGVz
dHJveVN0cmVhbShOUFJlYXNvbik7CiAKLSAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRlbGl2ZXJEYXRhVG9QbHVnaW4oKTsKLSAg
ICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsK
KyAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKTsKIAogICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4gbV9wbHVnaW47CiAgICAgdWludDY0X3Qg
bV9zdHJlYW1JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaAppbmRleCA2Y2RiZWRjZDA4NTcyZTBiNjU5OTg1NDNmZGY0MmYyNTg0MDIyMDVh
Li5hNjUzMWI2NGI5NzczMDZkMGZmZDgyYWNjODJmMjhiMDljZmUwMjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNzYsMTEg
KzE3NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3Ry
ZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RV
UkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9
CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0
cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAg
ICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxl
ZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9v
bCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBX
ZWJNb3VzZUV2ZW50JikgZmluYWw7CkBAIC0zNjYsNyArMzY2LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5k
ZXggYzAyZjg0MGM0MDc0ODAxYmQ4NzRmNmNmODMyZTk3Yjg4NDFmNWM0OS4uMTUxM2UwNGVmNGU4
NTZmYTg3MmM1NTI4YTdjYmJkMDcxMWY3ZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2
b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoTmV0c2NhcGVQbHVnSW5TdAogICAgIH0KIH0KIAotdm9pZCBQREZQbHVnaW46OlBERlBs
dWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGNvdW50KQordm9pZCBQREZQ
bHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGNv
dW50KQogewogICAgIGlmICghbV9wZGZQbHVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTExNjYs
NyArMTE2Niw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtCiAgICAgaWYgKCFyZXF1ZXN0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LT5hZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRh
LCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGll
bnQ6OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpCkBAIC0xNjg0LDE0ICsxNjg0LDE0IEBAIHZvaWQgUERGUGx1Z2luOjpzdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQz
Ml90CiAgICAgICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQp
OwogCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRlcyksIGxlbmd0aCk7CisgICAgQ0ZE
YXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0cmVh
bWVkQnl0ZXMgKz0gbGVuZ3RoOwogfQogCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIFBERlBs
dWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAg
ICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3Vy
cmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKaW5kZXggZDNjN2FjNzA1MTFmYzcyYzg3MDg0YjhhMzc0ZjlkNmM3MjY4NTliMC4uMTM1NWNm
ZjRlYjc3ZjZmNzE3ZGI5MjBlMjE0MDU4ZmMxNmIyZmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZp
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAw
OwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQg
bG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCBzdHJlYW1JRCkgPSAwOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBs
dWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0
dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBiZmY4MDRi
Mzg4NWFhNThiYTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNmLi45Y2VkN2RhMDc1MDJmNjJiYWM2YWY2
NzllMTYxMGQ0ZTY1OWUwN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0zMzAsOSArMzMwLDkgQEAgdm9pZCBQbHVnaW5Qcm94
eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlc3BvbnMKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQs
IHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1p
bWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5
OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5z
dGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIElQ
Qzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9
CiAKIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3Ry
ZWFtSUQpCkBAIC0zNTAsOSArMzUwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl8KICAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxl
clByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwuc3RyaW5n
KCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBt
X3BsdWdpbkluc3RhbmNlSUQpOwogfQogCi12b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2lu
UHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKElQ
Qzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyks
IGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZEZp
bmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgKaW5kZXggMDA4YzIwMjE2ZGU1YjdhMTk3ZjFmMjQyNGExMmU1NjEyYzZmZGU0MC4u
M2YxYjM5ZWFiN2RhZTA4MTY4ZGQzYTczOGZlZDJiMGRjMDcxNDRiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04NywxMSArODcsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbVdp
bGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBj
b25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBX
VEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBt
YW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
YjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcwZWQzMjAyMS4uM2EwOTY4M2VlYzdhYTIx
ZTYxZGVhMTBjODgyOWMzMDc2ODQwN2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgog
ICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCos
IGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzks
NyArMjM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1f
cGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkws
IHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhl
YWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZp
ZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpk
aWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVh
bURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOwogfQpAQCAtNDA3LDcg
KzQwNyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBp
bml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggODI4ZDMwYTA2ZTlkOGZkZDc4YjU5OGRmOTBh
NjYzOTMxZGEwZThkMy4uNGExZjVhYzU3YTlkNzc1NGU2NDA3OGY3ZGE0MmI1NzZhMzM0MzlkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3Qg
eyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAog
ICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIG1hbnVhbExv
YWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDVlZDIzMWM4NTVjMDU5ZWRhZjczNDgxZDUwYjkzMThlNGVlNjIxMDIuLjE3Njc0ZGYw
MmMzMmExM2VkYTg1MDZlMjcwZGZkNzYzNzAzNTBhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTE2OSw3ICsxMTY5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXQK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZp
ZXcgPSB0cnVlOwogICAgIH0KLSAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShkYXRhLCBsZW5ndGgpOworICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOwog
fQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMDI4
ZThjNmUzZTg4NjRjYzE2NTU5MGE0OWNiYWVlN2Q4YmI2YTViYi4uMmFjMjVkY2QzOWU0ODBkZjkz
NmM2YWViNzllYzIwYWZlYzJkNDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCi0gICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOworICAg
IFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92
ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShw
YXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYzUzNjI1YTE4ODM4ZmQw
ZDI3M2Y2YjQ2NGU5NmMwM2FhY2MwMGMwOS4uMTUyMDBlY2Q5MTkyNjhjMzQwN2Q5MTljMDY2NzE4
YzkzMjQ2MTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUgbWFk
ZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNTdhYTRhODJkNmE2NzE4
MTVlNDNiYTgwNTk0ODZiNzU2NWU1MGU2OS4uMDg2MTVlNDlmNTEzMDNhNGY1OWNhZDA1MzljZmZl
N2Q5YTA1YjBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAg
LTExNSwxMiArMTE1LDEyIEBAIHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0YXJ0
U3RyZWFtKE5TVVJMICpyZXNwb25zZVVSTCwgbG9uZyBsb25nIGV4cGVjCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihb
aGVhZGVycyBieXRlc10pKSwgW2hlYWRlcnMgbGVuZ3RoXSk7CiB9CiAgICAgICAgICAgICAgICAg
ICAgICAKLXZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpCit2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIF9XS1BIU3RyZWFtRGlkUmVjZWl2ZURhdGEobV9pbnN0
YW5jZS0+aG9zdFByb3h5KCktPnBvcnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5zdGFuY2UtPnBsdWdpbklEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3N0cmVhbUlELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFy
Kj4oYnl0ZXMpLCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rf
Y2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMpKSwgbGVuZ3Ro
KTsKIH0KICAgICAKIHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDc1NDI2OTM4MTJlNzhiN2Y4OWE4ZTM0
NDAzNzMzMDA4YWZjM2YyOTUuLmVkMGUzMTQzZWY4YzA2YWNjOTg4YWEyNGFiODgyN2EzOThmNWJh
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcyNSw3
ICs3MjUsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZh
U2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29udGVu
dExlbmd0aDpbSlNEYXRhIGxlbmd0aF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmls
XSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UocmVzcG9uc2UuZ2V0
KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHN0cmVh
bS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtKU0RhdGEg
Ynl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAgc3RyZWFtLT5kaWRGaW5pc2hMb2Fk
aW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5t
bQppbmRleCA3NjExNzFjZWE3Y2E1ZmE2NzI4YzlkYzAwZDJlYjdiMmQxOGY3NzgwLi42NGMyNzdi
NWY0M2QxNTFiZGE0MTViZWM5YjU5ZDVmM2NjZmMwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVk
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC01MTksNyArNTE5LDcgQEAgLSAodm9pZClwbHVnaW5W
aWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtKiBt
YW51YWxTdHJlYW0gPSBfcHJveHktPm1hbnVhbFN0cmVhbSgpKQotICAgICAgICBtYW51YWxTdHJl
YW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0
YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVu
Z3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNl
aXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAyYmM5Nzhk
MzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzViODNlYzEzMDZjLi4xOTM5MGI1YzAyYTc1Zjc5Zjk2NmY4
MWE0MWEyZDcwNTY1NzhmMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC04Miw3ICs4Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lTdHJlYW1XaXRoRXJyb3IoTlNFcnJvciAqKTsKIAog
ICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUgbWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCmluZGV4IGY4ODkwZDA1MTZiMjEyYWNmZTc2OTY2NDI1ZGU1NDQxMDRj
OWE2OTQuLjRiNGRkYzAwNGEyNmEzZWE2NDljMjY5MTU4MTRlNTY2MjBjOTU1MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQogICAg
IGRlc3Ryb3lTdHJlYW1XaXRoUmVhc29uKE5QUkVTX0RPTkUpOwogfQogCi12b2lkIFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRlcyBsZW5ndGg6
bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDMzYmE1N2Mx
NTVmMThhNzIwY2ZjNzlkNDZhZjM1NWQ3OGUwOTVlOWMuLmE4YTJlZTgxNzFhMmRiOGQ4MmM4YmIw
NWE5OWRkMDA0MTY5ZWFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMDUxLDcgKzEwNTEsNyBA
QCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihO
U0RhdGEgKilkYXRhCiAgICAgfQogCiAgICAgaWYgKF9tYW51YWxTdHJlYW0tPnBsdWdpbigpKQot
ICAgICAgICBfbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBfbWFudWFs
U3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzooTlNW
aWV3ICopcGx1Z2luVmlldyByZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTExMjcs
NyArMTEyNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDooV2Vi
UGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5n
TmFtZTpuaWxdKTsKICAgICAgICAgCiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRoUmVz
cG9uc2UocmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAs
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3Ro
XSk7CisgICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAgc3Ry
ZWFtLT5kaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NDdlMTZiMmE0ZmIwMjhlNDhjODQwOWU4
NjhjYTcyMzg0ZWFhMDliLi5jYjk0NTM0YzI3YmVhMmQ2ZThlYTdhZWRkMDFmZGFlZjExNGU1NTg4
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIuIEFsc28gaGF2ZSBTaGFyZWRC
dWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3QgdWludDhfdCpgIGluc3RlYWQg
b2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVkIHR5cGUgdG8gc3RvcmUgYnl0
ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjaGVja0J1ZmZlcik6CisKIDIwMjEtMDYtMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc4
MzU2LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcAppbmRleCBiZWM3ZDExOWVhODE5YjAxOTlhODczZjAyMDc2NmQ0MTkyMDFhYzJhLi5l
YTczMmE4ZTBlMGMyNmM5ZDkwYTEyMzU5NDBhY2RlNTdlMjE2M2E2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMTAzLDkg
KzEwMyw5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMCgweDQwMDAsICdhJyk7Ci0gICAgVmVj
dG9yPGNoYXI+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3Iy
KDB4NDAwMCwgJ2MnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOworICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwog
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwpAQCAtMTYwLDcgKzE2
MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5n
dGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3Rl
ZCkKK3N0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCiB7CiAgICAgLy8gZXhwZWN0ZWQg
aXMgbnVsbCB0ZXJtaW5hdGVkLCBidWZmZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGggPSBz
dHJsZW4oZXhwZWN0ZWQpOwpAQCAtMTcxLDkgKzE3MSw5IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciog
ZXhwCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0
b3I8Y2hhcj4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczIg
PSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczMgPSB7J2knLCAnaics
ICdrJywgJ2wnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2Qn
fTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKICAgICAKICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShzMSkpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBn
ZXRTb21lRGF0YSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKLSAg
ICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3RvcjxjaGFyPj4mJiBjb250ZW50cykg
eworICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNv
bnRlbnRzKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCiAgICAgICAgICAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZm
ZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCks
IGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3RvcjxjaGFyPih7J2En
LCAnYicsICdjJywgJ2QnfSkpOworICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgp
KTsKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7CiAgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InLCAnYyd9fSkuZ2V0KCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0
cmluZykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkp
OwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7Cg==
</data>
<flag name="commit-queue"
          id="452027"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430545</attachid>
            <date>2021-06-03 23:06:59 -0700</date>
            <delta_ts>2021-06-04 00:03:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210603230658.patch</filename>
            <type>text/plain</type>
            <size>132632</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi41ZDFk
OGJkNGQ5MzYwNWRkMTQ0ZDRiZDQwNzIyZmFkYmQzNTkzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi43ZGMz
MWM3MzkyY2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkK
KyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
QEAgLTE1MCw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKQpAQCAtMTY3LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4s
CisgICAgICAgIFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjAzLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsK
KyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKQEAgLTIzNSw3ICsyMzQsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAj
aWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYy
MDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJm
MzMyMzgyMmZlOGYzNDE2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEu
aXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsy
MDYsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAh
aW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNB
cnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBh
YTlkOWMwNTQ1ZDk2YTM1YTY2M2NkYjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0
ZjAwODFlODEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwog
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90
KTsKIAogICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkp
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJT
aXplKTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAg
ICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAg
ICBjbGVhcigpOwpAQCAtMjA1LDkgKzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVt
dWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4
ZWxzLT5zaXplKCkgfTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1f
cGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAx
Y2E5NzYzM2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4Zjhi
NTU1NmNjMmY2YTY3MWU1OTk2YWQxZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmgKQEAgLTU2LDcgKzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUo
KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpLCAxKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIw
ZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0
NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0
ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJ
dGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9m
TGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHko
bG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRB
cHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2Vk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1
MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVh
MmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAg
aWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6
ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFi
bGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VM
b25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0g
RlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0
PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0
YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdjNTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJk
NTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsK
LSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIi
LCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7Cisg
ICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwg
W3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUo
KV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5u
ZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVj
b2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKaW5kZXggNDQ5ODM3MzY2MWE3ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMx
Ni4uMTcxMzVhMTQxY2Q2ZmEyY2U2YTg3MmM3NzMxOWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVRodW5kZXIuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmEKIAogdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2Nl
cnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2Vy
dGlmaWNhdGUtPmRhdGFBc1VJbnQ4UHRyKCkpLAorICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9w
ZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgp
LCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2Vy
dGlmaWNhdGUtPnNpemUoKSk7CiAgICAgY2FsbGJhY2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFp
bGVkKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgR1NUX0RFQlVHKCJwYXJzaW5nIGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFz
VUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVy
IiwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3
IHBheWxvYWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmll
dz4gdHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAg
LTQ4Niw3ICs0ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRh
dGVEb25lQ2FsbGJhY2soKQogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNh
bGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1Io
IkNETSBlcnJvciIpOwotICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0
YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3Ig
ZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoYWxsZW5nZUNhbGxiYWNrIDogbV9jaGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAg
IGNoYWxsZW5nZUNhbGxiYWNrKCk7CiAgICAgbV9jaGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsK
QEAgLTUwNywxMSArNTA3LDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0
RGF0YSA9IEluaXREYXRhKGluc3RhbmNlLT5rZXlTeXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNo
YXJlZEJ1ZmZlcikpOwogCiAgICAgR1NUX1RSQUNFKCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNl
c3Npb24gaWQsIGluaXQgZGF0YSBzaXplICV6dSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwotICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+
ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NU
X01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5p
dERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogCiAgICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24g
PSBudWxscHRyOwogICAgIG9wZW5jZG1fY29uc3RydWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVu
ZGVyU3lzdGVtKCksIHRodW5kZXJMaWNlbnNlVHlwZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlw
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+
ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwg
MCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAg
bV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUo
KSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9u
KTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3Jl
YXRlIHNlc3Npb24iKTsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBt
X2luaXREYXRhLnBheWxvYWQoKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeQogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5
bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2Ug
PSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAg
ICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdl
LT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAg
ICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVz
dCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeQogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQog
ICAgIH0pOwotICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBv
cGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJ
bnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkpKQorICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vz
c2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQo
KSwgcmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25G
YWlsdXJlKCk7CiB9CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
RAogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZN
b3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAg
ICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRh
QXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1Rf
TUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdl
VHlwZTo6TGljZW5zZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZSht
ZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5v
bmUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5
ZmI1OTk4NjIxNWI5ZDVkYWUxNzlkMmQ3NTljZWY3NDE4MTQ3Ni4uNTk2NmMzZjI1OTcwMzAwNjM2
ZmU1OTA5YjQ3NjM1ZDFmMzVjODM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0
YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsK
KyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBvc2l0aW9uKSAtIGJ1ZmZlci5kYXRhKCk7CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IGEwM2U3MWFiMWJjM2IxY2E1
MDdjZjM4ZTI3NDE4N2JlYzBhOWQxOTEuLmFjZjI4ZWJlY2I0YTA5MTk5Y2JjZTE2Yzk4ZmEyN2Jk
ODMxM2MzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTIwNCw3ICsyMDQs
NyBAQCBib29sIGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXIm
IGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5RAogICAgIG92ZXJsYXlMZW5ndGggPSAwOwogCiAg
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBmb250RGF0YS0+c2l6ZSgpOwotICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBmb250RGF0YS0+ZGF0
YSgpOwogCiAgICAgRU9UUHJlZml4KiBwcmVmaXggPSBlb3RIZWFkZXIucHJlZml4KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCAwYzBjMTM3MjAzZGYzNmNmNTc1NWYxMmY0OWI5NTYy
MzYyZjI0YzUyLi43MzM2YTIzNTFjYTc4OGViNjg5YTAyZWRkZTMwNzk4MDFjYTJhZTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDAp
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElf
RVJST1IpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGEoc2l6ZSk7CisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0
YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwogICAgICAgICBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggODRmMzlkMmE2MjZhYmI0NDcxYzYwM2JmMGY2MGQ1YmY2NTQ5ODk3My4uNjQyNGMw
M2MzNzNhNTViNDI5YTU5NDFjMGE0OGY2ZGVmYmZiNmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBJQ09JbWFnZURlY29kZXI6OkltYWdlVHlwZSBJ
Q09JbWFnZURlY29kZXI6OmltYWdlVHlwZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGNvbnN0
IHVpbnQzMl90IGltYWdlT2Zmc2V0ID0gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2ltYWdlT2Zmc2V0
OwogICAgIGlmICgoaW1hZ2VPZmZzZXQgPiBtX2RhdGEtPnNpemUoKSkgfHwgKChtX2RhdGEtPnNp
emUoKSAtIGltYWdlT2Zmc2V0KSA8IDQpKQogICAgICAgICByZXR1cm4gVW5rbm93bjsKLSAgICBy
ZXR1cm4gc3RybmNtcCgmbV9kYXRhLT5kYXRhKClbaW1hZ2VPZmZzZXRdLCAiXHg4OVBORyIsIDQp
ID8gQk1QIDogUE5HOworICAgIHJldHVybiBzdHJuY21wKCZtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KVtpbWFnZU9mZnNldF0sICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggOWE0NzBlYmFhMTFhMTI4ODViNjAzZTUzZmU4YTg0
ZjEzYzc2MzlkZS4uYzEyYzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGF1dG8gYnl0ZXNUb1VzZSA9IGRhdGEuc2l6ZSgpIC0gYnl0ZXNUb1NraXA7CiAgICAg
ICAgIG1fcmVhZE9mZnNldCArPSBieXRlc1RvVXNlOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXJT
aXplID0gbV9yZWFkT2Zmc2V0OwotICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2lu
Zm8sIHJlaW50ZXJwcmV0X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PGNoYXIqPihkYXRhLmRh
dGEoKSArIGJ5dGVzVG9Ta2lwKSksIGJ5dGVzVG9Vc2UpOworICAgICAgICBwbmdfcHJvY2Vzc19k
YXRhKG1fcG5nLCBtX2luZm8sIHJlaW50ZXJwcmV0X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSArIGJ5dGVzVG9Ta2lwKSksIGJ5dGVzVG9Vc2UpOwogICAg
ICAgICAvLyBXZSBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHN1cGVyY2xhc3MgZW5jb2RlZERhdGFT
dGF0dXMoKSBiZWNhdXNlIHdlCiAgICAgICAgIC8vIG1lcmVseSB3YW50IHRvIGNoZWNrIGlmIHdl
J3ZlIG1hbmFnZWQgdG8gc2V0IHRoZSBzaXplLCBub3QKICAgICAgICAgLy8gKHJlY3Vyc2l2ZWx5
KSB0cmlnZ2VyIGFkZGl0aW9uYWwgZGVjb2RpbmcgaWYgd2UgaGF2ZW4ndC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKaW5kZXggNjAzNzVkZTViY2RjYjQ3NmFlMGVmNDE3NWNlNzFiMWUxZDYxNTVmZi4u
MDU0NDI4ZDUwZGM2MWFhYWQ1MTg4NzlkMjJjYmMyZjk3NzkxNTAzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNv
bnN0IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNo
YXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXggOWY2ZGQ4MGYyNWExZTA2NzU1
ZGExYWM5ODdlYWU4ODlkZjlmMjc0Mi4uZGQwNWVmMGZiZDNlNzMwOTc0MzUwNWFjY2MwMTAxNGVm
NGQ5YzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRD
RGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5n
RGF0YShjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWREZXRlY3RFcnJvcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0Rl
Y3JlYXNpbmcoc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZUNvbm5lY3Rpb24uaAppbmRleCA0MTI0N2Y2ODRmNzYwOTBhNmQyYmUyNTBhNTU4ODY0
Y2NmMDQyMTU3Li5jOWM5M2JhNjAxMThmOTE5ZDExNjAyOTMyZGFlODNkNzk5NDY3ZmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIFJUQ0RhdGFDaGFubmVsU3RhdGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hhciosIHNpemVfdCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6
ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKaW5kZXggZDAzMDA1MzZlZDkzMGZiZjlj
MjAyYmI5NzI2MTBkNGM1Zjg5YThjNC4uOTNiZDk2MmQ0ZGVhZDQwMzllNWQwMTU0N2I1NTgyMDhk
OWVlZWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgc3Ry
aW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2s6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgc2l6
ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmluZGV4IDRhNTEwOTJiYzQxZjJj
ZjlmN2YzZDA0ZjI3N2E3NWMyOTRlMWNhYTUuLmUwNzBiZGIxM2U4NzI1ODdjNTNlMDRmNDk2MTdm
ZWQ1NTlhMGE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgYm9vbCBzZW5kU3RyaW5n
RGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBj
aGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsKIAogICAgIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGI3N2Y5MDA3ODE5ZmZlYzI5
NWI2MDUyOTQ4YWU5OTRkYWUyNDYxZGYuLmM4N2Q4ODgwNDM3NTk3OTcwNzExOWFkYTcyMjZjMjkx
YTUwOGY4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC00MTMsNyArNDEzLDggQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFz
U2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFZlY3RvcjxjaGFyPj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAg
ICBhdXRvIGJ5dGVzID0gZmxhdHRlbigpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9i
VVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZl
YmU3MDQ4ODRlMmU3MzY2Zi4uNjQzNmFhYzU5ZDgzMTg0ZWVjZjEzYzIwOGFkYzFlNTAzNzNlM2Vi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGFB
c0NoYXJQdHIoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDQyMTliYjUzYzIwNTY5NzUzYjBiMTky
YzNiOTNmMWQ1YWY3ZGVlNTYuLjBiMWZkNzQ1ZWJhMmY2MWVlY2U2MWExY2E1ODEzMWVkZWRlOWZk
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCB2
b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJh
bmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhp
c1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0g
Ynl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1Zp
ZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVk
RGF0YTpidWZmZXJWaWV3LmRhdGEoKSBsZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJd
OworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6YnVmZmVy
Vmlldy5kYXRhQXNDaGFyUHRyKCkgbGVuZ3RoOmJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyXTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdlLmVuZCkgewogICAgICAg
ICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJpY3M6TmV0d29ya0xvYWRN
ZXRyaWNzIHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rpbmcu
aAppbmRleCAwNWQxNzcxNzc1MWUwMGE1MmE2YTA1ZWIwMDZmN2I0YzE3ZjFkNGJiLi5lYmNkYjJl
MGRkOWI0MjgwZjI1MTU3M2RiYTZiNWJkMDZkZmZkNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0
aCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpIGNvbnN0OwogICAgIFN0cmluZyBk
ZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFN0cmluZyBkZWNv
ZGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gZGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZShTdHJpbmdWaWV3LCBVbmVuY29k
YWJsZUhhbmRsaW5nLCBORkNOb3JtYWxpemUgPSBORkNOb3JtYWxpemU6OlllcykgY29uc3Q7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyBzdHJpbmcp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGVuY29kZShzdHJpbmcsIFVuZW5jb2RhYmxlSGFuZGxpbmc6
OlVSTEVuY29kZWRFbnRpdGllcywgTkZDTm9ybWFsaXplOjpObyk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDA5NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2
NTQzZGE2MmQ3MzhjMGZlNi4uZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyAr
NDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUt
PmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkg
ZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhQXND
aGFyUHRyKCksIGRhdGEoKS0+c2l6ZSgpKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNTdlZTVkZWQyNGJkYTI3NWU1ODZiZGY2
MTMyYTUyNDU1YWJhY2M5Ni4uZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENo
YXIqIHVyaSwKIAogICAgICAgICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFuIGVuY29kaW5nIGhlcmUu
IE5laXRoZXIgR2Vja28gbm9yIFdpbklFIHJlc3BlY3RzCiAgICAgICAgIC8vIHRoZSBlbmNvZGlu
ZyBzcGVjaWZpZWQgaW4gdGhlIEhUVFAgaGVhZGVycy4KLSAgICAgICAgeG1sRG9jUHRyIGRvYyA9
IHhtbFJlYWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRh
LT5zaXplKCkgOiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBvcHRpb25zKTsKKyAgICAgICAgeG1s
RG9jUHRyIGRvYyA9IHhtbFJlYWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRhdGFBc0NoYXJQdHIoKSA6
IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBv
cHRpb25zKTsKIAogICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKDAsIDApOwogICAg
ICAgICB4bWxTZXRHZW5lcmljRXJyb3JGdW5jKDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDFkOGRh
ZGJlNDY3NjE5MmY2NWFlOGUwOGM1NjgxYzZiMGNjZTk3OGYuLjFmZGUyZThkNjAzNTM0MjZkYmI2
ZGRmMzIzOGU3NjEzNTc1Mjg3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCBz
dGF0aWMgaW50IG1hdGNoRnVuYyhjb25zdCBjaGFyKikKIGNsYXNzIE9mZnNldEJ1ZmZlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT2Zmc2V0QnVmZmVyKFZl
Y3RvcjxjaGFyPiBidWZmZXIpCisgICAgT2Zmc2V0QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGJ1
ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgICAgICwgbV9j
dXJyZW50T2Zmc2V0KDApCiAgICAgewpAQCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50
OF90PiBtX2J1ZmZlcjsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRPZmZzZXQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggYzNmMTgz
YjJkYjViYjU5NGMzMDljZDg5YjcyMDIwZWEwMWFkMjFhNy4uN2UwZDhkYmUxOTAyNTk5ZDAyYmMx
MDhlNTYzYTZlM2RmMTgzMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyOyB9CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4
IDRiMjBjODVhYzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYuLmNiZDA0ZDk5YjdjMjcx
NjcxYzg3NTJiMThhOTJlNDIxNTg1NmM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC00ODEsNyArNDgxLDcg
QEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3QKIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0
cmVhbUlELCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5
OjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmCiAgICAgaWYgKG1fcGx1Z2luQ2FuY2VsZWRN
YW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsdWdpbi0+bWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJv
bGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKaW5kZXggYzc4MGJjNGY4MTFhZjhmYjM4N2ZiMGQy
MmM3ZmRlNGYxZDEzNjA4OS4uZTVhYTcwY2QwYzJkNzdlYjJiOGI3ZTRjOWU5MTZiODZkYmU5ZTZm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKQEAgLTc5LDcg
Kzc5LDcgQEAgdm9pZCB3cml0ZVRvRGlzayhzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiYm
IGVuY29kZXIsIFN0cmluZyYmIHBhdGgpCiAgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHdy
aXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0
YSgpLCByYXdEYXRhLT5zaXplKCkpOworICAgIGF1dG8gd3JpdHRlbkJ5dGVzID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJhd0RhdGEt
PnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAK
ICAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJhd0RhdGEtPnNp
emUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCBmMGM4ZWVmNTNkMzU5N2UwZWE4YTExZGIxMDFlYTk0NjAxNDE5ZTE3Li42YzI3NzQ0
OTY0MzM4Y2RhYTVjODI3MzMyYjdkYWE1YjA1YzhlNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMwNjEsNyArMzA2MSw3IEBAIHN0
YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291
cmNlSGFuZGxlKGNvbnN0IFNjcmlwCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIHsgfTsKIAogICAgIGF1dG8mIHNlZ21lbnQgPSBzY3JpcHQuYnVmZmVyKCktPmJlZ2lu
KCktPnNlZ21lbnQ7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBN
YXAoY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIHNoYXJlZE1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0PHVpbnQ4X3QqPihzZWdtZW50LT5k
YXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKaW5kZXggZTczNTdkMTEyNTBkNjBlYzhjODM4YTg3MDgxNzBlMWYyYzY4ZjVk
ZC4uMWUxNDljZjIzNzBhNzExNTE2OTk1NGE2NWI5YmM5ZTI4Yjc3OTg3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fc3luY0RhdGEtPnNpemUo
KSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAppbmRleCA2OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFk
YzZhLi45OWNhMWQ4OGI4MzJiMGZhM2Q0YzcyZjE1NWIzNmRkZDVhMWMzYjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KHsgYnVmZmVyLT5kYXRhQXNVSW50OFB0cigpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZDBjYjc5ZTVkMWU2NWY4ZTFiZDE5
OWM1NDNkZWQwOTE4ZTg0ZjUxYS4uNzg0MWE4ZjNiNjk2YWNkNWQxYTkyNDBkN2QxYjUxM2ViOWFj
NjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgTmV0d29ya1NlbmRRdWV1ZSBXZWJT
b2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJT
b2MKICAgICByZXR1cm4geyBkb2N1bWVudCwgWyZjaGFubmVsXShhdXRvJiB1dGY4U3RyaW5nKSB7
CiAgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6
Ok9wQ29kZVRleHQsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAg
ICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6
OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1
dGY4U3RyaW5nLmxlbmd0aCgpKTsKLSAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVs
OjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CisgICAgfSwgWyZj
aGFubmVsXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgeworICAgICAg
ICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVC
aW5hcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5u
ZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0s
IGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0aW9uQ29kZSBleGNlcHRpb25D
b2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRpY19jYXN0PGludD4oZXhjZXB0aW9uQ29k
ZSk7CiAgICAgICAgIGNoYW5uZWwuZmFpbChtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCBCbG9i
OiBleGNlcHRpb24gY29kZSA9ICIsIGNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5jcHAKaW5kZXggNDk5ZGExOGQxNzRmZTc4OTI4Yjg3M2NhNzJjYjdlZTFh
ZTBhNWQ5Zi4uN2ViMTA3ODc3ZTJiMmEwYTg5OTQzNjc0MjI0ZmQxYjI4MDA0Y2E0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKQEAgLTEyMSw3ICsxMjEs
NyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdQogewogICAgIGlmIChhdXRvKiBzb3VyY2UgPSBz
b3VyY2VGcm9tSWRlbnRpZmllcihzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoaXNS
YXcpCi0gICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgICAgICAgICAgc291cmNl
LT5zZW5kUmF3RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzb3VyY2UtPnNlbmRTdHJpbmdEYXRhKENTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwogICAgIH0KQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6Y2hhbmdlUmVh
ZHlTdGF0ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aQogCiB2b2lkIFJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBib29sIGlzUmF3LCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCiB7Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGJ1ZmZlcjsKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIFN0cmluZyB0ZXh0OwogICAgIGlmIChpc1JhdykK
ICAgICAgICAgYnVmZmVyID0gZGF0YS52ZWN0b3IoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyCiAKICAgICBwb3N0VGFza1RvSGFuZGxlcihoYW5kbGVySWRlbnRp
ZmllciwgW2lzUmF3LCB0ZXh0ID0gV1RGTW92ZSh0ZXh0KS5pc29sYXRlZENvcHkoKSwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpXShhdXRvJiBoYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KGlzUmF3KQotICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
ICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVTdHJp
bmdEYXRhKFdURk1vdmUodGV4dCkpOwogICAgIH0pOwpAQCAtMjMwLDkgKzIzMCw5IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlU3RyaW5nRGF0YShXCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCBm
YWxzZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7CiB9CiAKLXZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmll
ciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oZGF0YSksIHNpemUgIH0gfSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEg
eyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBzaXplICB9IH0s
IDApOwogfQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNl
Q29ubmVjdGlvbjo6ZGlkRGV0ZWN0RXJyb3IoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgK
aW5kZXggNmQxMmI3YzM1ZjAwNGE0N2M1NTRmZGIxNWVlMjM5ZGU2MmIzNTBjZS4uZjhjMDVlNTM3
NDE3ZDc5NGQ1YTYxNWU3ODhlMWU2YWVkYTBhNzM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXIuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVTdHJpbmdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsK
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcikgZmluYWw7CiAg
ICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyLCBzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKaW5kZXggMDA2Nzg5OTA5MzJjNDM4MmJiNjFmZjAwNDk4NGM0YjM5OTBmYjRl
Ny4uM2RjOTI4ZGM1N2E5N2QwMmM5Mjg0NTMzMTFjZjMxY2JmMmI4NWMzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBOUEVy
cm9yIHBhcnNlUG9zdEJ1ZmZlcihib29sIGlzRmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLCB1aW50
MzJfdCBsZW5ndGgsCiAgICAgICAgIGlmICghZmlsZUNvbnRlbnRzKQogICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCi0gICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29u
dGVudHMtPmRhdGEoKTsKKyAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+ZGF0YUFz
Q2hhclB0cigpOwogICAgICAgICBwb3N0QnVmZmVyU2l6ZSA9IGZpbGVDb250ZW50cy0+c2l6ZSgp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgTlBBUEkgc3BlYyBzdGF0ZXMgdGhhdCB0aGUgZmls
ZSBzaG91bGQgYmUgZGVsZXRlZCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDYx
N2Q3ZDc2YzBhOGE1ZWI5ZGJhNTdhOGE4MDZiYzYwODYyNmY0NWMuLjA5MGQ1YTQwY2ViZDc4YzFl
ZDcyYmFiYTdiZjZlMDcyMzNiMjVlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTg2
Niw3ICs4NjYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcAogICAgICAgICBwbHVnaW5TdHJl
YW0tPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9k
aWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsK
ICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIApAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50CiAgICAgbV9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwg
aGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdp
bjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICBBU1NFUlQobV9zaG91bGRV
c2VNYW51YWxMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggMjQ3NDkxNDZkOTBmNDU1
ZjY5ZjU0MzU5NjRlMGIzYmNhMzFkY2NmMi4uYTU4MmI2NjUyZmE1MDFkNmU3N2RjMjQyOTA2YjQx
ZGVhMmIwNWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNw
b25zZVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3Ry
ZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1J
RCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMmE2MDFjYzA4YjQwZTc1ZjlhZTE4YTYy
NWE4MmMyNjFmZmQ3YzI3ZS4uZTkxOGY4OTJiN2JlMDgwNTYxNGFlZTQ5ZWJlMjkzYTMyMjAxZTAx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3QgcwogICAgIHN0YXJ0KHJlc3BvbnNlVVJMLnN0cmluZygp
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0K
IAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICAvLyBEZWxpdmVy
aW5nIHRoZSBkYXRhIGNvdWxkIGNhdXNlIHRoZSBwbHVnLWluIHN0cmVhbSB0byBnbyBhd2F5IHNv
IHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQgaGVyZS4KICAgICBSZWY8TmV0c2NhcGVQbHVnaW5T
dHJlYW0+IHByb3RlY3QoKnRoaXMpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFN0cmluZyYgcmVzdWx0KQog
ICAgIGlmICghc3RhcnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgp
LCAwLCAidGV4dC9wbGFpbiIsICIiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGVsaXZlckRh
dGEocmVzdWx0Q1N0cmluZy5kYXRhKCksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOworICAgIGRl
bGl2ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VsdENTdHJpbmcu
ZGF0YSgpKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAgc3RvcChOUFJFU19ET05FKTsK
IH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0YXJ0
KGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxTdHJpbmcsIHVpbnQzMl90IHN0cmVhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGVsaXZlckRhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNT
RVJUKG1faXNTdGFydGVkKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9QbHVnaW4oKQogICAgIH0KIH0KIAotdm9pZCBOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAobV9maWxlSGFuZGxlID09
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051
bGwoKSkgewogICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KQEAgLTI3Niw3ICsy
NzYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW50IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmls
ZUhhbmRsZSwgYnl0ZXMsIGxlbmd0aCk7CisgICAgaW50IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Ynl0ZXMpLCBsZW5ndGgpOwogICAgIGlmIChieXRlQ291bnQgIT0gbGVuZ3RoKSB7CiAgICAgICAg
IC8vIFRoaXMgaGFwcGVucyBvbmx5IHJhcmVseSwgd2hlbiB3ZSBhcmUgb3V0IG9mIGRpc2sgc3Bh
Y2Ugb3IgaGF2ZSBhIGRpc2sgSS9PIGVycm9yLgogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUobV9maWxlSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDEw
YzdmMmQ5ZTg3NDYzYWNiZTc4Zjg3ZDQzZTUyMWYwODk5MjNhYmUuLjliMDcwOTk4ODQ3MjA0MzFh
M2IxM2U0MDFlZTQ4ODgzOGJhNjI5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCBy
ZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpOwogCkBAIC03Myw5
ICs3Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIG5vdGlmeUFu
ZERlc3Ryb3lTdHJlYW0oTlBSZWFzb24pOwogCi0gICAgdm9pZCBkZWxpdmVyRGF0YShjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkZWxpdmVyRGF0YVRvUGx1Z2luKCk7
Ci0gICAgdm9pZCBkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCk7CisgICAgdm9pZCBkZWxpdmVyRGF0YVRvRmlsZShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCk7CiAKICAgICBSZWY8TmV0c2NhcGVQbHVnaW4+IG1fcGx1Z2luOwogICAgIHVpbnQ2
NF90IG1fc3RyZWFtSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKaW5kZXggNmNkYmVkY2QwODU3MmUwYjY1OTk4NTQzZmRmNDJmMjU4NDAy
MjA1YS4uYTY1MzFiNjRiOTc3MzA2ZDBmZmQ4MmFjYzgyZjI4YjA5Y2ZlMDIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTc2
LDExICsxNzYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lk
IHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFs
IHsgfQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsK
ICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIGZpbmFs
OwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5j
ZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0g
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWls
KGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29u
c3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzY2LDcgKzM2Niw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IGMwMmY4NDBjNDA3NDgwMWJkODc0ZjZjZjgzMmU5N2I4ODQxZjVjNDkuLjE1MTNlMDRl
ZjRlODU2ZmE4NzJjNTUyOGE3Y2JiZDA3MTFmN2QyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTE1Nyw3ICsxMTU3LDcg
QEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQ
REZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQg
UERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBjb3VudCkKIHsKICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0x
MTY2LDcgKzExNjYsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVz
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgY291bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEo
ZGF0YSwgY291bnQpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVy
Q2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImKQpAQCAtMTY4NCwxNCArMTY4NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1
aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1
Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewog
ICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVz
dElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0
YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnl0ZXMpLCBsZW5ndGgpOworICAg
IENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxlbmd0aCk7CiAgICAgbV9z
dHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKIH0KIApAQCAtMTcyOSw3ICsxNzI5LDcgQEAgdm9pZCBQ
REZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFyZ2V0TGVuZ3RoKQog
ICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRhcmdldExlbmd0aCAt
IGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZSgwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCmluZGV4IGQzYzdhYzcwNTExZmM3MmM4NzA4NGI4YTM3NGY5ZDZjNzI2ODU5YjAuLjEz
NTVjZmY0ZWI3N2Y2ZjcxN2RiOTIwZTIxNDA1OGZjMTZiMmZlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0
aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
ID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlz
aGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAg
dmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggYmZm
ODA0YjM4ODVhYTU4YmE0NmMxZjIzODcwYTYwOWUzMzkzOWFjZi4uOWNlZDdkYTA3NTAyZjYyYmFj
NmFmNjc5ZTE2MTBkNGU2NTllMDdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMzMwLDkgKzMzMCw5IEBAIHZvaWQgUGx1Z2lu
UHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
VVJMJiByZXNwb25zCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVh
bUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1l
LCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi12b2lkIFBsdWdpblByb3h5OjpzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpCit2b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9j
b25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIElQQzo6RGF0YVJlZmVyZW5jZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyksIGxlbmd0aCkpLCBtX3BsdWdp
bkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlE
LCBJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZXMsIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQp
OwogfQogCiB2b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHN0cmVhbUlEKQpAQCAtMzUwLDkgKzM1MCw5IEBAIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfCiAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLnN0
cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJz
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBs
dWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0
ZXMpLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZXMsIGxlbmd0aCkpLCBt
X3BsdWdpbkluc3RhbmNlSUQpOwogfQogCiB2b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCmluZGV4IDAwOGMyMDIxNmRlNWI3YTE5N2YxZjI0MjRhMTJlNTYxMmM2ZmRl
NDAuLjNmMWIzOWVhYjdkYWUwODE2OGRkM2E3MzhmZWQyYjBkYzA3MTQ0YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcsMTEgKzg3
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJl
YW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBv
dmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUp
IG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZv
aWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IGI2NGFjYWJkZjc1M2FhODllN2I3MGU0ZDU2ZTU1ZDc3MGVkMzIwMjEuLjNhMDk2ODNlZWM3
YWEyMWU2MWRlYTEwYzg4MjljMzA3Njg0MDdhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0
ZToKICAgICAvLyBOZXRzY2FwZVBsdWdpblN0cmVhbUxvYWRlckNsaWVudAogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIApAQCAt
MjM5LDcgKzIzOSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9u
c2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSCiAgICAgbV9wbHVnaW5WaWV3
LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNl
VVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBl
LCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVn
aW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6OlN0cmVh
bTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5z
dHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlELCBieXRlcywgbGVuZ3RoKTsKIH0KQEAgLTQw
Nyw3ICs0MDcsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgbV9wbHVnaW4tPm1hbnVh
bFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0
TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3Vn
Z2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3
OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQg
dG8gaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1fcGx1Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDgyOGQzMGEwNmU5ZDhmZGQ3OGI1OThk
ZjkwYTY2MzkzMWRhMGU4ZDMuLjRhMWY1YWM1N2E5ZDc3NTRlNjQwNzhmN2RhNDJiNTc2YTMzNDM5
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNv
bnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9
CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBtYW51
YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZhaWwoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA1ZWQyMzFjODU1YzA1OWVkYWY3MzQ4MWQ1MGI5MzE4ZTRlZTYyMTAyLi4xNzY3
NGRmMDJjMzJhMTNlZGE4NTA2ZTI3MGRmZDc2MzcwMzUwYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTExNjksNyArMTE2OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciog
ZGF0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVn
aW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4
IDAyOGU4YzZlM2U4ODY0Y2MxNjU1OTBhNDljYmFlZTdkOGJiNmE1YmIuLjJhYzI1ZGNkMzllNDgw
ZGY5MzZjNmFlYjc5ZWMyMGFmZWMyZDQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJz
dCBjaGVjayB0aGUgb3ZlcnJpZGVzLgotICAgIFZlY3RvcjxjaGFyPiBvdmVycmlkZUJ1ZmZlcjsK
KyAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9h
cmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJp
ZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCiAgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IGM1MzYyNWExODgz
OGZkMGQyNzNmNmI0NjRlOTZjMDNhYWNjMDBjMDkuLjE1MjAwZWNkOTE5MjY4YzM0MDdkOTE5YzA2
NjcxOGM5MzI0NjE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFN0cmVhbVdpdGhSZXNwb25z
ZShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGJl
IG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IDU3YWE0YTgyZDZh
NjcxODE1ZTQzYmE4MDU5NDg2Yjc1NjVlNTBlNjkuLjA4NjE1ZTQ5ZjUxMzAzYTRmNTljYWQwNTM5
Y2ZmZTdkOWEwNWIwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1t
CkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpz
dGFydFN0cmVhbShOU1VSTCAqcmVzcG9uc2VVUkwsIGxvbmcgbG9uZyBleHBlYwogICAgICAgICAg
ICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oW2hlYWRlcnMgYnl0ZXNdKSksIFtoZWFkZXJzIGxlbmd0aF0pOwogfQogICAgICAgICAgICAg
ICAgICAgICAgCi12b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBfV0tQSFN0cmVhbURpZFJlY2VpdmVEYXRhKG1f
aW5zdGFuY2UtPmhvc3RQcm94eSgpLT5wb3J0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc3RhbmNlLT5wbHVnaW5JRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9zdHJlYW1JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8
Y2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzKSksIGxl
bmd0aCk7CiB9CiAgICAgCiB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA3NTQyNjkzODEyZTc4YjdmODlh
OGUzNDQwMzczMzAwOGFmYzNmMjk1Li5lZDBlMzE0M2VmOGMwNmFjYzk4OGFhMjRhYjg4MjdhMzk4
ZjViYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC03
MjUsNyArNzI1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENv
bnRlbnRMZW5ndGg6W0pTRGF0YSBsZW5ndGhdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0pOwogICAgICAgICBzdHJlYW0tPnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3BvbnNl
LmdldCgpKTsKLSAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOworICAgICAgICBz
dHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbSlNE
YXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHN0cmVhbS0+ZGlkRmluaXNo
TG9hZGluZygwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KaW5kZXggNzYxMTcxY2VhN2NhNWZhNjcyOGM5ZGMwMGQyZWI3YjJkMThmNzc4MC4uNjRj
Mjc3YjVmNDNkMTUxYmRhNDE1YmVjOWI1OWQ1ZjNjY2ZjMDg1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTE5LDcgKzUxOSw3IEBAIC0gKHZvaWQpcGx1
Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bSogbWFudWFsU3RyZWFtID0gX3Byb3h5LT5tYW51YWxTdHJlYW0oKSkKLSAgICAgICAgbWFudWFs
U3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEg
Ynl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgICAgIG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2
ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRh
IGxlbmd0aF0pOwogfQogCiAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcg
cmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMmJj
OTc4ZDM0MDNmNzNmMWMwNjNkZjI1MjM0M2M1YjgzZWMxMzA2Yy4uMTkzOTBiNWMwMmE3NWY3OWY5
NjZmODFhNDFhMmQ3MDU2NTc4ZjA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtODIsNyArODIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7
CiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCBmODg5MGQwNTE2YjIxMmFjZmU3Njk2NjQyNWRlNTQ0
MTA0YzlhNjk0Li40YjRkZGMwMDRhMjZhM2VhNjQ5YzI2OTE1ODE0ZTU2NjIwYzk1NTM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0KQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikK
ICAgICBkZXN0cm95U3RyZWFtV2l0aFJlYXNvbihOUFJFU19ET05FKTsKIH0KIAotdm9pZCBXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgYXV0byBkYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopYnl0ZXMgbGVu
Z3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAzM2Jh
NTdjMTU1ZjE4YTcyMGNmYzc5ZDQ2YWYzNTVkNzhlMDk1ZTljLi5hOGEyZWU4MTcxYTJkYjhkODJj
OGJiMDVhOTlkZDAwNDE2OWVhZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTA1MSw3ICsxMDUx
LDcgQEAgLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRGF0
YTooTlNEYXRhICopZGF0YQogICAgIH0KIAogICAgIGlmIChfbWFudWFsU3RyZWFtLT5wbHVnaW4o
KSkKLSAgICAgICAgX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgX21h
bnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKXBsdWdpblZpZXc6
KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCkBAIC0x
MTI3LDcgKzExMjcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6
KFdlYlBsdWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSk7CiAgICAgICAgIAogICAgICAgICBzdHJlYW0tPnN0YXJ0U3RyZWFtV2l0
aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0
YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxl
bmd0aF0pOworICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CiAgICAgICAg
IHN0cmVhbS0+ZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDQ3ZTE2YjJhNGZiMDI4ZTQ4Yzg0
MDllODY4Y2E3MjM4NGVhYTA5Yi4uY2I5NDUzNGMyN2JlYTJkNmU4ZWE3YWVkZDAxZmRhZWYxMTRl
NTU4OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFy
PiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBW
ZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhhdmUgU2hh
cmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3QqYCBpbnN0
ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRvIHN0b3Jl
IGJ5dGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2hlY2tCdWZmZXIpOgorCiAyMDIxLTA2LTAzICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI3ODM1Ni4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggYmVjN2QxMTllYTgxOWIwMTk5YTg3M2YwMjA3NjZkNDE5MjAxYWMy
YS4uZWE3MzJhOGUwZTBjMjZjOWQ5MGExMjM1OTQwYWNkZTU3ZTIxNjNhNiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEw
Myw5ICsxMDMsOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdl
U2VnbWVudHMpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwotICAg
IFZlY3RvcjxjaGFyPiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVj
dG9yMigweDQwMDAsICdjJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAn
YScpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjAp
KTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrQnVmZmVy
KGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhw
ZWN0ZWQpCitzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQogewogICAgIC8vIGV4cGVj
dGVkIGlzIG51bGwgdGVybWluYXRlZCwgYnVmZmVyIGlzIG5vdC4KICAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RybGVuKGV4cGVjdGVkKTsKQEAgLTE3MSw5ICsxNzEsOSBAQCBzdGF0aWMgdm9pZCBjaGVj
a0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNo
YXIqIGV4cAogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAg
VmVjdG9yPGNoYXI+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPGNoYXI+
IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPGNoYXI+IHMzID0geydpJywg
J2onLCAnaycsICdsJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycs
ICdkJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307CiAgICAgCiAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczEpKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7
Ci0gICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8Y2hhcj4+JiYgY29udGVu
dHMpIHsKKyAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4m
JiBjb250ZW50cykgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQogICAgICAgICAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CkBAIC0yMDksNyArMjA5LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtl
QnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdl
dCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8Y2hhcj4o
eydhJywgJ2InLCAnYycsICdkJ30pKTsKKyAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5n
ZXQoKSk7CiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2Qn
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwog
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9I
ZXhTdHJpbmcpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
dDEpKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwo=
</data>
<flag name="commit-queue"
          id="452033"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430549</attachid>
            <date>2021-06-03 23:14:49 -0700</date>
            <delta_ts>2021-06-03 23:27:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210603231448.patch</filename>
            <type>text/plain</type>
            <size>133408</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi41ZDFk
OGJkNGQ5MzYwNWRkMTQ0ZDRiZDQwNzIyZmFkYmQzNTkzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi41Y2Rl
OWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAg
ICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKICAgICAgICAg
RGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCisgICAgICAgIFZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjA0LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9y
PGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7
CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKQEAg
LTIzNSw3ICsyMzUsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0
NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJmMzMyMzgyMmZlOGYzNDE2MjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0
RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAg
IHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVy
biBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2Nk
Yjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgICAgICBpZiAoIWJ1
ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtMjA1LDkg
KzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1f
cHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHko
KSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7
IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVy
Lm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMt
PmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAxY2E5NzYzM2Q4NjJiOGRlODMwZmJm
ODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4ZjhiNTU1NmNjMmY2YTY3MWU1OTk2YWQx
ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTU2LDcg
KzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcw
MTcxOWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQs
NyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBv
cmFyeUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGlu
Z0NsaWVudC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAg
ZWxzZQotICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4
UHRyKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0
ZW0tPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxD
YXBhY2l0eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZh
ODFkMjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBj
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYy
LDcgKzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJs
ZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXpl
ID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZy
ZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEo
KSksICZ0YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRU
YWJsZVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGEx
NjFjNDdjNTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0
YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZv
aWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRo
cmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZl
ci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIu
ZGF0YUFzQ2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVy
RGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRo
aXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwg
VGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggNDQ5
ODM3MzY2MWE3ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMxNi4uMTcxMzVhMTQxY2Q2ZmEyY2U2
YTg3MmM3NzMxOWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0y
NzAsNyArMjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKIAogdm9pZCBDRE1JbnN0YW5j
ZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlm
aWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBPcGVuQ0RNRXJyb3Ig
ZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5
c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGFBc1VJbnQ4
UHRyKCkpLAorICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2
ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3Qq
PihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAg
ICAgY2FsbGJhY2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTM0MCw3ICsz
NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1NUX0RFQlVH
KCJwYXJzaW5nIGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAg
R1NUX01FTURVTVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3IHBheWxvYWQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmlldz4gdHlwZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwotICAgIEdT
VF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEo
KSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYWxsZW5nZUNhbGxi
YWNrIDogbV9jaGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAgIGNoYWxsZW5nZUNhbGxiYWNrKCk7
CiAgICAgbV9jaGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsKQEAgLTUwNywxMSArNTA3LDExIEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0RGF0YSA9IEluaXREYXRhKGluc3Rh
bmNlLT5rZXlTeXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNoYXJlZEJ1ZmZlcikpOwogCiAgICAg
R1NUX1RSQUNFKCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNlc3Npb24gaWQsIGluaXQgZGF0YSBz
aXplICV6dSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgIEdTVF9NRU1EVU1Q
KCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9p
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIs
IG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwogCiAgICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIG9wZW5j
ZG1fY29uc3RydWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVuZGVyU3lzdGVtKCksIHRodW5kZXJM
aWNlbnNlVHlwZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlwZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLAotICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9p
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25D
YWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCkt
PmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1
bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24p
IHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsK
QEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAg
ICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdv
dCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBt
ZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2Fn
ZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVP
cihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
QEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGlmICghbV9z
ZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRl
KG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5z
aXplKCkpKQorICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBv
cGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGEoKSwg
cmVzcG9uc2UtPnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25GYWlsdXJlKCk7CiB9CiAKQEAgLTYw
Nyw3ICs2MDcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNz
YWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
R1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdl
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1l
c3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Qp
LAogICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5ZmI1OTk4NjIxNWI5ZDVkYWUxNzlk
MmQ3NTljZWY3NDE4MTQ3Ni4uNTk2NmMzZjI1OTcwMzAwNjM2ZmU1OTA5YjQ3NjM1ZDFmMzVjODM2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBvc2l0aW9uKSAtIGJ1ZmZlci5k
YXRhKCk7CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBi
ZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCmluZGV4IGEwM2U3MWFiMWJjM2IxY2E1MDdjZjM4ZTI3NDE4N2JlYzBhOWQx
OTEuLjRiOGFlNmEwY2Q4NTQ2ZGVmNjZmNzRiOWY2OTc2MjNhZTI0ZDQwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIGdldEVPVEhlYWRl
cihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBv
dmVybGF5RAogICAgIG92ZXJsYXlMZW5ndGggPSAwOwogCiAgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBmb250RGF0YS0+c2l6ZSgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBmb250RGF0YS0+ZGF0
YSgpOworICAgIGF1dG8qIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwogCiAgICAgRU9UUHJlZml4
KiBwcmVmaXggPSBlb3RIZWFkZXIucHJlZml4KCk7CiAKQEAgLTMzNCw4ICszMzQsOCBAQCBib29s
IGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRl
ciwgc2l6ZV90JiBvdmVybGF5RAogCiAgICAgLy8gSWYgcG9zc2libGUsIGVuc3VyZSB0aGF0IHRo
ZSBmYW1pbHkgbmFtZSBpcyBhIHByZWZpeCBvZiB0aGUgZnVsbCBuYW1lLgogICAgIGlmIChmdWxs
TmFtZUxlbmd0aCA+PSBmYW1pbHlOYW1lTGVuZ3RoICYmIG1lbWNtcChmYW1pbHlOYW1lLCBmdWxs
TmFtZSwgZmFtaWx5TmFtZUxlbmd0aCkpIHsKLSAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGZ1bGxOYW1lKSAtIGRhdGE7Ci0gICAgICAgIG92ZXJsYXlE
c3QgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmYW1pbHlOYW1lKSAtIGRhdGE7Cisg
ICAgICAgIG92ZXJsYXlTcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmdWxs
TmFtZSkgLSBkYXRhOworICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZmFtaWx5TmFtZSkgLSBkYXRhOwogICAgICAgICBvdmVybGF5TGVuZ3RoID0g
ZmFtaWx5TmFtZUxlbmd0aDsKICAgICB9CiAgICAgZW90SGVhZGVyLmFwcGVuZEJpZ0VuZGlhblN0
cmluZyhmdWxsTmFtZSwgZnVsbE5hbWVMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmlu
ZGV4IDBjMGMxMzcyMDNkZjM2Y2Y1NzU1ZjEyZjQ5Yjk1NjIzNjJmMjRjNTIuLjczMzZhMjM1MWNh
Nzg4ZWI2ODlhMDJlZGRlMzA3OTgwMWNhMmFlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb24KICAgICBEV09SRCBzaXpl
ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewotICAgICAgICBWZWN0
b3I8Y2hhcj4gZGF0YShzaXplKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7
CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9J
RClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gc2l6ZSk7CiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NGYzOWQyYTYyNmFi
YjQ0NzFjNjAzYmYwZjYwZDViZjY1NDk4OTczLi42NDI0YzAzYzM3M2E1NWI0MjlhNTk0MWMwYTQ4
ZjZkZWZiZmI2YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE1LDcgKzMx
NSw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SW1hZ2VUeXBlIElDT0ltYWdlRGVjb2Rlcjo6aW1hZ2VU
eXBlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgY29uc3QgdWludDMyX3QgaW1hZ2VPZmZzZXQg
PSBtX2RpckVudHJpZXNbaW5kZXhdLm1faW1hZ2VPZmZzZXQ7CiAgICAgaWYgKChpbWFnZU9mZnNl
dCA+IG1fZGF0YS0+c2l6ZSgpKSB8fCAoKG1fZGF0YS0+c2l6ZSgpIC0gaW1hZ2VPZmZzZXQpIDwg
NCkpCiAgICAgICAgIHJldHVybiBVbmtub3duOwotICAgIHJldHVybiBzdHJuY21wKCZtX2RhdGEt
PmRhdGEoKVtpbWFnZU9mZnNldF0sICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CisgICAgcmV0
dXJuIHN0cm5jbXAoJm1fZGF0YS0+ZGF0YUFzQ2hhclB0cigpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQ
TkciLCA0KSA/IEJNUCA6IFBORzsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCA5YTQ3MGViYWExMWExMjg4NWI2MDNlNTNmZThhODRmMTNjNzYzOWRlLi5jMTJjNDU5YTVh
M2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBieXRlc1RvVXNl
ID0gZGF0YS5zaXplKCkgLSBieXRlc1RvU2tpcDsKICAgICAgICAgbV9yZWFkT2Zmc2V0ICs9IGJ5
dGVzVG9Vc2U7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlclNpemUgPSBtX3JlYWRPZmZzZXQ7Ci0g
ICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnByZXRfY2FzdDxw
bmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpICsgYnl0ZXNUb1NraXApKSwg
Ynl0ZXNUb1VzZSk7CisgICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVp
bnRlcnByZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgp
ICsgYnl0ZXNUb1NraXApKSwgYnl0ZXNUb1VzZSk7CiAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkg
c3BlY2lmeSB0aGUgc3VwZXJjbGFzcyBlbmNvZGVkRGF0YVN0YXR1cygpIGJlY2F1c2Ugd2UKICAg
ICAgICAgLy8gbWVyZWx5IHdhbnQgdG8gY2hlY2sgaWYgd2UndmUgbWFuYWdlZCB0byBzZXQgdGhl
IHNpemUsIG5vdAogICAgICAgICAvLyAocmVjdXJzaXZlbHkpIHRyaWdnZXIgYWRkaXRpb25hbCBk
ZWNvZGluZyBpZiB3ZSBoYXZlbid0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA2MDM3NWRl
NWJjZGNiNDc2YWUwZWY0MTc1Y2U3MWIxZTFkNjE1NWZmLi4wNTQ0MjhkNTBkYzYxYWFhZDUxODg3
OWQyMmNiYzJmOTc3OTE1MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMTA4LDcgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFhYzk4N2VhZTg4OWRmOWYyNzQy
Li5kZDA1ZWYwZmJkM2U3MzA5NzQzNTA1YWNjYzAxMDE0ZWY0ZDljNTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpID0gMDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCmlu
ZGV4IDQxMjQ3ZjY4NGY3NjA5MGE2ZDJiZTI1MGE1NTg4NjRjY2YwNDIxNTcuLmM5YzkzYmE2MDEx
OGY5MTlkMTE2MDI5MzJkYWU4M2Q3OTk0NjdmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciwgUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlU3RyaW5nRGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCosIHNp
emVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcihSVENEYXRhQ2hhbm5l
bElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3Jl
YXNpbmcoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXplX3QpID0gMDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmNwcAppbmRleCBkMDMwMDUzNmVkOTMwZmJmOWMyMDJiYjk3MjYxMGQ0YzVmODlhOGM0
Li45M2JkOTYyZDRkZWFkNDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5ZWVlYTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
OjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6
OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrLmgKaW5kZXggNGE1MTA5MmJjNDFmMmNmOWY3ZjNkMDRmMjc3YTc1YzI5NGUx
Y2FhNS4uZTA3MGJkYjEzZTg3MjU4N2M1M2UwNGY0OTYxN2ZlZDU1OWEwYTg5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENsaWVudChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllcikgZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBt
X2NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKaW5kZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFk
Zi4uYzg3ZDg4ODA0Mzc1OTc5NzA3MTE5YWRhNzIyNmMyOTFhNTA4ZjhmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMyw3ICs0MTMsOCBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAog
ICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPGNoYXI+PihlbGVtZW50
LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVu
KCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMu
c2l6ZSgpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi42NDM2
YWFjNTlkODMxODRlZWNmMTNjMjA4YWRjMWU1MDM3M2UzZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApA
QCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBk
aWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2YxZDVhZjdkZWU1Ni4uMGIx
ZmQ3NDVlYmEyZjYxZWVjZTYxYTFjYTU4MTMxZWRlZGU5ZmRlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNV
CiAKICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6
bWluKGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAg
ICAgICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAg
ICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOmJ1ZmZlclZpZXcuZGF0YSgp
IGxlbmd0aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcl07CisgICAgICAgICAgICBbdGFzayBy
ZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpidWZmZXJWaWV3LmRhdGFBc0NoYXJQdHIoKSBs
ZW5ndGg6Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOwogICAgICAgICB9CiAgICAgICAgIGlm
IChieXRlSW5kZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgICBbdGFzayByZXNvdXJjZUZp
bmlzaGVkOm51bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCmluZGV4IDA1ZDE3NzE3NzUxZTAw
YTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2RiMmUwZGQ5YjQyODBmMjUxNTczZGJhNmI1
YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIHN0b3BPbkVycm9yLCBi
b29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxlSGFuZGxpbmcsIE5GQ05vcm1h
bGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsKICAgICBWZWN0b3I8dWludDhfdD4gZW5j
b2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QgZmluYWwgeyByZXR1cm4g
ZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0aWVzLCBO
RkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDczOGMwZmU2Li5lY2I2
YmFlMTY4OTU2MTY3ZjYxZmFmM2RjYTI5MzY0NmNkY2FkNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAg
IEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVy
IHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBsb2Fk
ZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2
Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBsb2Fk
ZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGEo
KSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGFBc0NoYXJQdHIoKSwgZGF0YSgpLT5zaXpl
KCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5k
KCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcAppbmRleCA1N2VlNWRlZDI0YmRhMjc1ZTU4NmJkZjYxMzJhNTI0NTVhYmFjYzk2Li5kZjhh
YmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMg
eG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogCiAgICAgICAgIC8v
IFdlIGRvbid0IHNwZWNpZnkgYW4gZW5jb2RpbmcgaGVyZS4gTmVpdGhlciBHZWNrbyBub3IgV2lu
SUUgcmVzcGVjdHMKICAgICAgICAgLy8gdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUgSFRU
UCBoZWFkZXJzLgotICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRhID8g
ZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25zdCBj
aGFyKil1cmksIDAsIG9wdGlvbnMpOworICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVhZE1l
bW9yeShkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOwogCiAgICAgICAgIHht
bFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoMCwgMCk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNFcnJv
ckZ1bmMoMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMWQ4ZGFkYmU0Njc2MTkyZjY1YWU4ZTA4YzU2
ODFjNmIwY2NlOTc4Zi4uMWZkZTJlOGQ2MDM1MzQyNmRiYjZkZGYzMjM4ZTc2MTM1NzUyODdkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIHN0YXRpYyBpbnQgbWF0Y2hGdW5jKGNv
bnN0IGNoYXIqKQogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPGNoYXI+IGJ1ZmZlcikKKyAg
ICBPZmZzZXRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAgICAgLCBtX2N1cnJlbnRPZmZzZXQoMCkKICAgICB7
CkBAIC0zNzcsNyArMzc3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWZWN0
b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHVu
c2lnbmVkIG1fY3VycmVudE9mZnNldDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBjM2YxODNiMmRiNWJiNTk0YzMwOWNkODliNzIw
MjBlYTAxYWQyMWE3Li43ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAotICAg
IGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0K
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5p
c0VtcHR5KCkgOiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGIyMGM4NWFjNTM2MjM2NDAzYTgz
ZWE5NzNjZGNjZDEwZmRmNzJmNi4uY2JkMDRkOTliN2MyNzE2NzFjODc1MmIxOGE5MmU0MjE1ODU2
YzllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBTdAogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAg
ICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2lu
LT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRp
bmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYKICAgICBpZiAobV9wbHVnaW5DYW5jZWxlZE1hbnVhbFN0cmVhbUxvYWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsK
KyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVh
bURpZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVy
c2lzdGVuY3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxz
LmNwcAppbmRleCBjNzgwYmM0ZjgxMWFmOGZiMzg3ZmIwZDIyYzdmZGU0ZjFkMTM2MDg5Li5lNWFh
NzBjZDBjMmQ3N2ViMmI4YjdlNGM5ZTkxNmI4NmRiZTllNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIHdyaXRlVG9E
aXNrKHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+JiYgZW5jb2RlciwgU3RyaW5nJiYgcGF0
aCkKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdHRlbkJ5dGVzID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPnNpemUoKSk7
CisgICAgYXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IHJhd0RhdGEtPmRhdGFBc0NoYXJQdHIoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKICAgICBGaWxlU3lz
dGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGlmICh3cml0dGVuQnl0ZXMg
IT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgpKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGYwYzhlZWY1M2QzNTk3
ZTBlYThhMTFkYjEwMWVhOTQ2MDE0MTllMTcuLjZjMjc3NDQ5NjQzMzhjZGFhNWM4MjczMzJiN2Rh
YTViMDVjOGU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMzA2MSw3ICszMDYxLDcgQEAgc3RhdGljIFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXAK
ICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCiAgICAgYXV0
byYgc2VnbWVudCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKS0+c2VnbWVudDsKLSAgICBhdXRv
IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0PGNoYXIqPihz
ZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3cmFw
TWFwKGNvbnN0X2Nhc3Q8dWludDhfdCo+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNpemUo
KSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRN
ZW1vcnkpCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHsgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlNzM1
N2QxMTI1MGQ2MGVjOGM4MzhhODcwODE3MGUxZjJjNjhmNWRkLi4xZTE0OWNmMjM3MGE3MTE1MTY5
OTU0YTY1YjliYzllMjhiNzc5ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5
cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAg
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YUFzVUludDhQdHIoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRh
ID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAg
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShk
YXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDY5
NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEuLjk5Y2ExZDg4YjgzMmIwZmEz
ZDRjNzJmMTU1YjM2ZGRkNWExYzNiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJj
ZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBl
bmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2Fk
ZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGFBc1VJbnQ4
UHRyKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcAppbmRleCBkMGNiNzllNWQxZTY1ZjhlMWJkMTk5YzU0M2RlZDA5MThlODRmNTFhLi43
ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2OTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAt
NTgsOSArNTgsOSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1l
c3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvYwogICAgIHJldHVybiB7IGRvY3Vt
ZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKICAgICAgICAgY2hhbm5lbC5ub3Rp
ZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0cmlu
Zy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNz
YWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0
YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcu
ZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwot
ICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsK
LSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgY2hhbm5lbC5zZW5kTWVz
c2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRh
UmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGJ5dGVM
ZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZy
YW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAgICAgICBjaGFubmVsLnNlbmRN
ZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRh
dGFSZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CiAgICAgfSwg
WyZjaGFubmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsKICAgICAgICAgYXV0byBj
b2RlID0gc3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsKICAgICAgICAgY2hhbm5lbC5m
YWlsKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIEJsb2I6IGV4Y2VwdGlvbiBjb2RlID0gIiwg
Y29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAppbmRl
eCA0OTlkYTE4ZDE3NGZlNzg5MjhiODczY2E3MmNiN2VlMWFlMGE1ZDlmLi43ZWIxMDc4NzdlMmIy
YTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIgc291CiB7CiAgICAgaWYgKGF1dG8qIHNvdXJjZSA9IHNvdXJjZUZyb21JZGVudGlmaWVyKHNv
dXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIHNvdXJj
ZS0+c2VuZFJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNvdXJjZS0+c2Vu
ZFN0cmluZ0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpjaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNl
aXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcklkZW50aWZp
ZXIsIGJvb2wgaXNSYXcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBW
ZWN0b3I8dW5zaWduZWQgY2hhcj4gYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7
CiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGlzUmF3KQogICAgICAgICBidWZmZXIgPSBkYXRh
LnZlY3RvcigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIKIAog
ICAgIHBvc3RUYXNrVG9IYW5kbGVyKGhhbmRsZXJJZGVudGlmaWVyLCBbaXNSYXcsIHRleHQgPSBX
VEZNb3ZlKHRleHQpLmlzb2xhdGVkQ29weSgpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKGF1
dG8mIGhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoaXNSYXcpCi0gICAgICAgICAgICBo
YW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1
ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVj
ZWl2ZVJhd0RhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV1RGTW92ZSh0ZXh0KSk7
CiAgICAgfSk7CkBAIC0yMzAsOSArMjMwLDkgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdEYXRhKFcKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdl
clByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZhbHNlLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih0ZXh0LmRhdGEoKSks
IHRleHQubGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3Vy
Y2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRhdGFSZWZl
cmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhKSwgc2l6
ZSAgfSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIHRydWUsIElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgIH0gfSwgMCk7CiB9CiAKIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWREZXRlY3RF
cnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAppbmRleCA2ZDEyYjdjMzVmMDA0YTQ3
YzU1NGZkYjE1ZWUyMzlkZTYyYjM1MGNlLi5mOGMwNWU1Mzc0MTdkNzk0ZDVhNjE1ZTc4OGUxZTZh
ZWRhMGE3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oCkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0
YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxTdGF0ZSkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3IoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBidWZmZXJlZEFt
b3VudElzRGVjcmVhc2luZyhXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIHNpemVf
dCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAwMDY3
ODk5MDkzMmM0MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3Li4zZGM5MjhkYzU3YTk3ZDAyYzky
ODQ1MzMxMWNmMzFjYmYyYjg1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3Mu
Y3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVmZmVyKGJv
b2wgaXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAgICAgICAg
aWYgKCFmaWxlQ29udGVudHMpCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9V
TkQ7CiAKLSAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+ZGF0YSgpOworICAgICAg
ICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhQXNDaGFyUHRyKCk7CiAgICAgICAgIHBv
c3RCdWZmZXJTaXplID0gZmlsZUNvbnRlbnRzLT5zaXplKCk7CiAKICAgICAgICAgLy8gRklYTUU6
IFRoZSBOUEFQSSBzcGVjIHN0YXRlcyB0aGF0IHRoZSBmaWxlIHNob3VsZCBiZSBkZWxldGVkIGhl
cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjE3ZDdkNzZjMGE4YTVlYjlkYmE1N2E4
YTgwNmJjNjA4NjI2ZjQ1Yy4uMDkwZDVhNDBjZWJkNzhjMWVkNzJiYWJhN2JmNmUwNzIzM2IyNWU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgVVJMJiByZXNwCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBo
ZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBO
ZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRl
ZCk7CiAgICAgCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFs
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQKICAg
ICBtX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1M
ZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQo
bV9pc1N0YXJ0ZWQpOwogICAgIEFTU0VSVChtX3Nob3VsZFVzZU1hbnVhbExvYWRlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAppbmRleCAyNDc0OTE0NmQ5MGY0NTVmNjlmNTQzNTk2NGUwYjNiY2EzMWRj
Y2YyLi5hNTgyYjY2NTJmYTUwMWQ2ZTc3ZGMyNDI5MDZiNDFkZWEyYjA1ZGMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJl
YW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2Fz
Q2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmNwcAppbmRleCAyYTYwMWNjMDhiNDBlNzVmOWFlMThhNjI1YTgyYzI2MWZmZDdjMjdlLi5lOTE4
Zjg5MmI3YmUwODA1NjE0YWVlNDllYmUyOTNhMzIyMDFlMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzCiAgICAgc3RhcnQocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1v
ZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIERlbGl2ZXJpbmcgdGhlIGRhdGEgY291bGQgY2F1
c2UgdGhlIHBsdWctaW4gc3RyZWFtIHRvIGdvIGF3YXkgc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0
byBpdCBoZXJlLgogICAgIFJlZjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gcHJvdGVjdCgqdGhpcyk7
CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFT
Y3JpcHRTdHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgaWYgKCFzdGFydChtX3JlcXVl
c3RVUkxTdHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCksIDAsICJ0ZXh0L3BsYWluIiwgIiIp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0YShyZXN1bHRDU3RyaW5nLmRhdGEo
KSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVsaXZlckRhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0cmluZy5kYXRhKCkpLCByZXN1bHRDU3RyaW5n
Lmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQogCkBAIC0xODcsNyArMTg3LDcg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQoY29uc3QgU3RyaW5nJiByZXNwb25z
ZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCkBA
IC0yNjAsNyArMjYwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFU
b1BsdWdpbigpCiAgICAgfQogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVy
RGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENy
ZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgYnl0ZUNv
dW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBieXRlcywgbGVuZ3Ro
KTsKKyAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyksIGxlbmd0aCk7CiAgICAg
aWYgKGJ5dGVDb3VudCAhPSBsZW5ndGgpIHsKICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIG9ubHkg
cmFyZWx5LCB3aGVuIHdlIGFyZSBvdXQgb2YgZGlzayBzcGFjZSBvciBoYXZlIGEgZGlzayBJL08g
ZXJyb3IuCiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMTBjN2YyZDllODc0NjNhY2JlNzhmODdk
NDNlNTIxZjA4OTkyM2FiZS4uOWIwNzA5OTg4NDcyMDQzMWEzYjEzZTQwMWVlNDg4ODM4YmE2Mjll
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNv
bnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGhlYWRlcnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlk
RmFpbChib29sIHdhc0NhbmNlbGxlZCk7CiAKQEAgLTczLDkgKzczLDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgbm90aWZ5QW5kRGVzdHJveVN0cmVhbShOUFJlYXNv
bik7CiAKLSAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKICAgICB2b2lkIGRlbGl2ZXJEYXRhVG9QbHVnaW4oKTsKLSAgICB2b2lkIGRlbGl2ZXJEYXRh
VG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJE
YXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKIAogICAgIFJlZjxO
ZXRzY2FwZVBsdWdpbj4gbV9wbHVnaW47CiAgICAgdWludDY0X3QgbV9zdHJlYW1JRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA2
Y2RiZWRjZDA4NTcyZTBiNjU5OTg1NDNmZGY0MmYyNTg0MDIyMDVhLi5hNjUzMWI2NGI5NzczMDZk
MGZmZDgyYWNjODJmMjhiMDljZmUwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRG
YWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBm
aW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIGZp
bmFsOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgZmlu
YWw7CkBAIC0zNjYsNyArMzY2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYzAyZjg0MGM0MDc0ODAx
YmQ4NzRmNmNmODMyZTk3Yjg4NDFmNWM0OS4uMTUxM2UwNGVmNGU4NTZmYTg3MmM1NTI4YTdjYmJk
MDcxMWY3ZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERG
UGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVn
SW5TdAogICAgIH0KIH0KIAotdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGNvdW50KQordm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0
cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGNvdW50KQogewogICAgIGlmICgh
bV9wZGZQbHVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTExNjYsNyArMTE2Niw3IEBAIHZvaWQg
UERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5l
dHNjYXBlUGx1Z0luU3RyZWFtCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICByZXF1ZXN0LT5hZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CiB9CiAKIHZv
aWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZEZhaWwoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCkBAIC0x
Njg0LDE0ICsxNjg0LDE0IEBAIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90CiAgICAgICAgIG1faXNQ
b3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJl
YW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFtX2Rh
dGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7
CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihieXRlcyksIGxlbmd0aCk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9k
YXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3Ro
OwogfQogCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1
ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNl
TGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAK
LXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGF0
YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggZDNjN2FjNzA1
MTFmYzcyYzg3MDg0YjhhMzc0ZjlkNmM3MjY4NTliMC4uMTM1NWNmZjRlYjc3ZjZmNzE3ZGI5MjBl
MjE0MDU4ZmMxNmIyZmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJl
YW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpA
QCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFu
dWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBh
IHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBiZmY4MDRiMzg4NWFhNThiYTQ2YzFmMjM4
NzBhNjA5ZTMzOTM5YWNmLi45Y2VkN2RhMDc1MDJmNjJiYWM2YWY2NzllMTYxMGQ0ZTY1OWUwN2Zm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCkBAIC0zMzAsOSArMzMwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnMKICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclBy
b3h5OjpTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIHJlc3BvbnNlVVJMLnN0cmlu
ZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwg
bV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKLXZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2lu
UHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZl
RGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9j
b25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIElQQzo6RGF0YVJlZmVyZW5jZShi
eXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJv
eHk6OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC0zNTAsOSAr
MzUwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl8KICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQp
OwogfQogCi12b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewotICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9s
bGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyksIGxlbmd0aCkpLCBtX3BsdWdp
bkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKElQ
Qzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9
CiAKIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggMDA4
YzIwMjE2ZGU1YjdhMTk3ZjFmMjQyNGExMmU1NjEyYzZmZGU0MC4uM2YxYjM5ZWFiN2RhZTA4MTY4
ZGQzYTczOGZlZDJiMGRjMDcxNDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04NywxMSArODcsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRl
OworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURp
ZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Ry
ZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWls
KGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjY0YWNhYmRmNzUzYWE4OWU3
YjcwZTRkNTZlNTVkNzcwZWQzMjAyMS4uM2EwOTY4M2VlYzdhYTIxZTYxZGVhMTBjODgyOWMzMDc2
ODQwN2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIC8vIE5ldHNjYXBlUGx1
Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFz
dE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1
Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVj
ZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogewogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1f
c3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOwogfQpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25z
ZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0K
IAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICAvLyBUaGUgcGx1
Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlm
ICghbV9wbHVnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKaW5kZXggODI4ZDMwYTA2ZTlkOGZkZDc4YjU5OGRmOTBhNjYzOTMxZGEwZThkMy4uNGEx
ZjVhYzU3YTlkNzc1NGU2NDA3OGY3ZGE0MmI1NzZhMzM0MzlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2lu
IHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9h
ZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5n
KCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDVlZDIzMWM4NTVj
MDU5ZWRhZjczNDgxZDUwYjkzMThlNGVlNjIxMDIuLjE3Njc0ZGYwMmMzMmExM2VkYTg1MDZlMjcw
ZGZkNzYzNzAzNTBhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE2
OSw3ICsxMTY5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXQKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcgPSB0cnVlOwogICAgIH0K
LSAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgp
OworICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMDI4ZThjNmUzZTg4NjRjYzE2NTU5
MGE0OWNiYWVlN2Q4YmI2YTViYi4uMmFjMjVkY2QzOWU0ODBkZjkzNmM2YWViNzllYzIwYWZlYzJk
NDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzNiw3ICsxMzYs
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMu
Ci0gICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBv
dmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFz
dGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYzUzNjI1YTE4ODM4ZmQwZDI3M2Y2YjQ2NGU5NmMwM2Fh
Y2MwMGMwOS4uMTUyMDBlY2Q5MTkyNjhjMzQwN2Q5MTljMDY2NzE4YzkzMjQ2MTRkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlKTsKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUgbWFkZSBwcml2YXRlPwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNTdhYTRhODJkNmE2NzE4MTVlNDNiYTgwNTk0ODZiNzU2
NWU1MGU2OS4uMDg2MTVlNDlmNTEzMDNhNGY1OWNhZDA1MzljZmZlN2Q5YTA1YjBjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTExNSwxMiArMTE1LDEyIEBA
IHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0YXJ0U3RyZWFtKE5TVVJMICpyZXNw
b25zZVVSTCwgbG9uZyBsb25nIGV4cGVjCiAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0
PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihbaGVhZGVycyBieXRlc10pKSwg
W2hlYWRlcnMgbGVuZ3RoXSk7CiB9CiAgICAgICAgICAgICAgICAgICAgICAKLXZvaWQgSG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIEhv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQog
ewogICAgIF9XS1BIU3RyZWFtRGlkUmVjZWl2ZURhdGEobV9pbnN0YW5jZS0+aG9zdFByb3h5KCkt
PnBvcnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnBsdWdp
bklEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0cmVhbUlELAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4oYnl0ZXMpLCBsZW5ndGgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMpKSwgbGVuZ3RoKTsKIH0KICAgICAKIHZvaWQg
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tCmluZGV4IDc1NDI2OTM4MTJlNzhiN2Y4OWE4ZTM0NDAzNzMzMDA4YWZjM2YyOTUu
LmVkMGUzMTQzZWY4YzA2YWNjOTg4YWEyNGFiODgyN2EzOThmNWJhMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJlcXVl
c3QqIHBsdWdpblJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aDpbSlNEYXRhIGxl
bmd0aF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAgICAgIHN0cmVh
bS0+c3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBzdHJl
YW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbSlNEYXRhIGJ5
dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEo
MCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBs
ZW5ndGhdKTsKICAgICAgICAgc3RyZWFtLT5kaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA3NjExNzFjZWE3
Y2E1ZmE2NzI4YzlkYzAwZDJlYjdiMmQxOGY3NzgwLi42NGMyNzdiNWY0M2QxNTFiZGE0MTViZWM5
YjU5ZDVmM2NjZmMwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCkBAIC01MTksNyArNTE5LDcgQEAgLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVn
aW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgaWYgKEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtKiBtYW51YWxTdHJlYW0gPSBfcHJv
eHktPm1hbnVhbFN0cmVhbSgpKQotICAgICAgICBtYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRh
KDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhd
KTsKKyAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZv
aWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZEVycm9yOihOU0Vycm9y
ICopZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAyYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUy
MzQzYzViODNlYzEzMDZjLi4xOTM5MGI1YzAyYTc1Zjc5Zjk2NmY4MWE0MWEyZDcwNTY1NzhmMDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlc3Ryb3lTdHJlYW1XaXRoRXJyb3IoTlNFcnJvciAqKTsKIAogICAgIC8vIEZJWE1FOiBDYW4g
dGhlc2UgYmUgbWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmlu
ZGV4IGY4ODkwZDA1MTZiMjEyYWNmZTc2OTY2NDI1ZGU1NDQxMDRjOWE2OTQuLjRiNGRkYzAwNGEy
NmEzZWE2NDljMjY5MTU4MTRlNTY2MjBjOTU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAt
NjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExv
YWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQogICAgIGRlc3Ryb3lTdHJlYW1XaXRo
UmVhc29uKE5QUkVTX0RPTkUpOwogfQogCi12b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
aWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRlcyBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9u
ZTpOT10pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDMzYmE1N2MxNTVmMThhNzIwY2ZjNzlkNDZh
ZjM1NWQ3OGUwOTVlOWMuLmE4YTJlZTgxNzFhMmRiOGQ4MmM4YmIwNWE5OWRkMDA0MTY5ZWFlZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCAtICh2b2lkKXBsdWdpblZp
ZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCiAgICAg
fQogCiAgICAgaWYgKF9tYW51YWxTdHJlYW0tPnBsdWdpbigpKQotICAgICAgICBfbWFudWFsU3Ry
ZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KFtkYXRhIGJ5
dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBfbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZl
RGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyBy
ZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTExMjcsNyArMTEyNyw3IEBAIC0gKHZv
aWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKUpT
UGx1Z2luUmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAg
ICAgCiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UocmVzcG9uc2UuZ2V0
KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHN0cmVh
bS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtKU0RhdGEg
Ynl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAgc3RyZWFtLT5kaWRGaW5pc2hMb2Fk
aW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA0NDdlMTZiMmE0ZmIwMjhlNDhjODQwOWU4NjhjYTcyMzg0ZWFhMDliLi5j
Yjk0NTM0YzI3YmVhMmQ2ZThlYTdhZWRkMDFmZGFlZjExNGU1NTg4IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEt
MDYtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2NjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBi
eXRlcyBpbiBTaGFyZWRCdWZmZXIuIEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAg
ICAgICByZXR1cm4gYSBgY29uc3QgdWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4g
VGhpcyBpcyBvdXIgcHJlZmVycmVkIHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja0J1ZmZl
cik6CisKIDIwMjEtMDYtMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc4MzU2LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiZWM3
ZDExOWVhODE5YjAxOTlhODczZjAyMDc2NmQ0MTkyMDFhYzJhLi5lYTczMmE4ZTBlMGMyNmM5ZDkw
YTEyMzU5NDBhY2RlNTdlMjE2M2E2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKLSAgICBWZWN0
b3I8Y2hhcj4gdmVjdG9yMCgweDQwMDAsICdhJyk7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjEo
MHg0MDAwLCAnYicpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4
NDAwMCwgJ2MnKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwogICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6
ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBz
aXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKK3N0YXRpYyB2b2lkIGNo
ZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29u
c3QgY2hhciogZXhwZWN0ZWQpCiB7CiAgICAgLy8gZXhwZWN0ZWQgaXMgbnVsbCB0ZXJtaW5hdGVk
LCBidWZmZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oZXhwZWN0ZWQpOwpA
QCAtMTcxLDkgKzE3MSw5IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gczEgPSB7J2En
LCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczIgPSB7J2UnLCAnZicsICdnJywg
J2gnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMg
PSB7J2knLCAnaicsICdrJywgJ2wnfTsKICAgICAKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwpAQCAtMjAw
LDcgKzIwMCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKLSAgICBhdXRvIG1ha2VCdWZmZXIg
PSBbXSAoVmVjdG9yPFZlY3RvcjxjaGFyPj4mJiBjb250ZW50cykgeworICAgIGF1dG8gbWFrZUJ1
ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7CiAgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRv
JiBjb250ZW50IDogY29udGVudHMpCiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
aXNFcXVhbFRvKQogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2Mn
LCAnZCd9fSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwog
Ci0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3RvcjxjaGFyPih7J2EnLCAnYicsICdjJywgJ2QnfSkp
OworICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKICAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0
KCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKLSAgICBWZWN0
b3I8Y2hhcj4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKKyAgICBWZWN0b3I8dWludDhfdD4gdDEg
PSB7MHgxMSwgMHg1LCAweDEyfTsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOwogICAgIFN0cmluZyByZXN1
bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7Cg==
</data>
<flag name="commit-queue"
          id="452031"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430552</attachid>
            <date>2021-06-03 23:27:01 -0700</date>
            <delta_ts>2021-06-04 07:38:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210603232700.patch</filename>
            <type>text/plain</type>
            <size>133836</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi43M2U5
YjAyNWJmM2QyMzI2ZDQwMThjMDdkMWI3MzRhZDFiYmM0YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNTQsNyAr
MTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigi
QmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShw
YXJ0KSk7CisgICAgICAgIGNvbnRlbnQtPmFwcGVuZChwYXJ0LmRhdGEoKSwgcGFydC5zaXplKCkp
OwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZl
Y3RvcjxjaGFyPiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0
Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVh
ZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5j
b250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6
IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRh
QXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWRE
YXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSAgICwgY29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxl
OgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGFBc1VJ
bnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6
QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKaW5kZXggZDdiZDMyODc1ZDUyZDZkMzkxYzNhZTBmYTFhYmM1OTJiYWRkZjg3Ny4u
YWZmNmY1M2M0NWE2NDkyZjFiNWFiOTI1MjcwOGI4N2VkODE4MGFjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCiAgICAgICAgIHByZXZpb3VzRGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUo
KTsKIAogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50
YWxEYXRhTm90aWZ5LCB0cnVlKTsKLSAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChpbmNyZW1lbnRhbERhdGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YUFzQ2hh
clB0cigpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKICAgICB9CiAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS5zaXplKCkpOwogCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmkKIAogICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewogICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhQXND
aGFyUHRyKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgYykKICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGll
bnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpCi0g
ICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQo
KnRoaXMsIG1fZGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgICAg
ICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KCpjbGllbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE2YjEwNDg3
NmM4NjY1YTZmMjY0YzVhMjBhMjc5NTk1ZDFhOWYwZmYuLjY2YzYwZjE2OTllNWQzNWI3MDBjZDg1
YWYyMDg5YjRhOTE2OWJlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlm
ICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZv
bnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAg
ICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShj
b252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnZlcnRlZEZvbnQtPmRhdGEoKSwgY29udmVydGVkRm9udC0+
c2l6ZSgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1l
bnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDgyNTg2
NTNmMjU1MTgyZjc0ZWNmZDRkODdhYWU5OWFhMTY2M2QxMTEuLjAyYzFlMmY0YzJiNWJhNDY3MTA2
ZjNjYjkwNjc5Y2MwYTEwOWY3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICBh
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGZpbGVEYXRhKQpAQCAtNTIsNyArNTIsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJiBkYXRhKQorU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBhcHBlbmQo
V1RGTW92ZShkYXRhKSk7CiB9CkBAIC04MSwxNSArODEsOSBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxl
UGF0aCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rv
cjxjaGFyPiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KLS8vIEZJWE1FOiBNb3ZlIHRoZSB3aG9sZSBjbGFz
cyBmcm9tIFZlY3RvcjxjaGFyPiB0byBWZWN0b3I8dWludDhfdD4gYW5kIG1ha2UgdGhpcyBlZmZp
Y2llbnQsIHJlcGxhY2luZyB0aGUgVmVjdG9yPGNoYXI+IHZlcnNpb24gYWJvdmUuCiBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyIHsgdmVjdG9yLmRhdGEo
KSwgdmVjdG9yLnNpemUoKSB9KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdApAQCAtMTAyLDcgKzk2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxjaGFyPiBjb21iaW5lZERhdGE7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NpemUpOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVu
dCA6IG1fc2VnbWVudHMpCiAgICAgICAgIGNvbWJpbmVkRGF0YS5hcHBlbmQoc2VnbWVudC5zZWdt
ZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKQEAgLTExMyw3ICsxMDcsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLWNvbnN0IGNoYXIqIFNoYXJlZEJ1
ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBj
b25zdAogewogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTIyLDExICsxMTYsNiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKIH0KIAot
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhQXNVSW50OFB0cigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSk7Ci19Ci0K
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBv
c2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsK
QEAgLTE1MCw3ICsxMzksNyBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNv
bnN0CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCBzaXplb2Yo
Y2hhcikpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKHVpbnQ4X3Qp
KTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVx
dWVzdGVkIHNpemUgd2FzICV6dVxuIiwgc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xNTgsNyArMTQ3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykgewotICAgICAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNl
Z21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAg
IG1lbWNweShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSkgKyBwb3Np
dGlvbiwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsK
ICAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogCkBA
IC0xNzgsMjIgKzE2NywxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsK
ICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CiAgICAgbV9z
aXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSks
IGxlbmd0aCk7Ci19Ci0KLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPGNoYXI+JiYg
ZGF0YSkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1
dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKQEAgLTI0MCwyMCArMjI0LDIwIEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRh
KCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAg
ICBbXShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAor
ICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsgcmV0dXJuIGRhdGEuZGF0
YSgpOyB9LAogI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJl
Zj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdl
dEJ5dGVQdHIoZGF0YS5nZXQoKSkpOyB9LAorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
Q0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSk7IH0sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikK
LSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxw
dHIpKTsgfSwKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAg
IFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSk7IH0sCiAjZW5kaWYKLSAg
ICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBb
XShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzI2LDcg
KzMxMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgp
IGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAg
W10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUo
KTsgfSwKICNpZiBVU0UoQ0YpCiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+
JiBkYXRhKSB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYK
QEAgLTM1Myw3ICszMzcsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBj
b25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0
Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9
CkBAIC0zNjcsMTAgKzM1MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsKKyAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyKGxlbmd0aCAqIDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0
IGNoYXJhY3RlcnMuCi0gICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogcCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpOwogICAgIGlmIChsZW5ndGgp
IHsKICAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENo
YXIqIGQgPSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3ICszNjcsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7CisgICAgYnVm
ZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwog
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDhhYzY5ZDU5MTAzNmYxZjYw
MGZlODM4NGY2ZmIyOWQ5OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdlOTA5M2RmOGVkYjYxZWFlYWRk
ZDAwZWI4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02Niwx
NCArNjYsMTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAKICAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAj
aWYgVVNFKEZPVU5EQVRJT04pCkBAIC05OSw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxs
aW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRv
IG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgogICAgIC8vIEl0ZXJhdGUgdGhl
IHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCiAgICAgLy8gRklYTUU6
IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3
aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7
Ci0gICAgY29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdDsKKyAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAog
ICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZl
cidzIGNvbnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcg
c2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTExLDkgKzExMCw5IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAK
ICAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTEyMywxMCArMTIyLDEx
IEBAIHB1YmxpYzoKICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2Nh
dGUgYSBuZXcgRGF0YVNlZ21lbnQuCiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgICAgICBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0
OwogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4m
JiBkYXRhKQorICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgp
OwogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBjb250YWlu
c01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2Vn
bWVudChWZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQogICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiYmIGRhdGEpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2Vn
bWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgICAgICBWYXJpYW50PFZlY3Rv
cjxjaGFyPiwKKyAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQog
ICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKQEAgLTIwNCw5ICsyMDQs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBk
ZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOwotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7CisgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIzNSw4IEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZm
ZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4
IDE1ZTYwZjIwNWNlZDJhNTY0ODlhNDc0ZjAxMTQ3MmI3OThhNmMzNWMuLjQ1ZDE0YWQ5MDAzNzNh
MjdiZjNiMmYzMzIzODIyZmU4ZjM0MTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChp
bml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgY29u
c3QgY2hhciogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gaW5pdERh
dGEuZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsK
ICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAt
MjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENv
dW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRv
IGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggZTFlNWMz
MDQzNTZjMGFhOWQ5YzA1NDVkOTZhMzVhNjYzY2RiNzgzZS4uNGRkYjZkZjgzZWNiOGI5Yjc5NTdm
NDY2NGUxODRmMDA4MWU4MTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkgKiBzaXplb2Yo
dWludDMyX3QpOwogCiAgICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZm
ZXJTaXplKSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGJ1ZmZlci5ncm93
KGJ1ZmZlclNpemUpOwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgp
KSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNv
bnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0g
c2l6ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7
CiAgICAgICAgIGNsZWFyKCk7CkBAIC0yMDUsOSArMjA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
LCBtX3ByZW11bHRpcGx5QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwot
ICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3Ro
ZXIubV9waXhlbHMtPnNpemUoKSB9OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsg
b3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwogICAgICAg
ICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxz
UHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1f
cGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRzKGNvbnN0IEludFBv
aW50JiBwb2ludCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CmluZGV4IDFjYTk3NjMzZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3MTkuLjQ4ZGZkZjBl
ZmRmYjhmOGI1NTU2Y2MyZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fZGF0
YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCAzYmE0
YjhjOTBlYjBmMjE5MDdhNDI4ZTMzN2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcwNDJkNjcwNWY3ODI2
Yjg1MjVhMjQ3Njg4ZDU2ZGVkMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcApAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRT
aXplRm9ySXRlbSkKICAgICAgICAgbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRl
bXBvcmFyeUl0ZW0sIGxvY2F0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlv
biwgb3V0T2ZMaW5lSXRlbS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKIAog
ICAgIGRpZEFwcGVuZERhdGEoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZl
ckNoYW5nZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
aW5kZXggNDUwY2RhMDM3NzdhODJlNTQyNWI4ZmE4MWQyODcwZDVjM2I2MGQxYS4uNjg5Y2I2Nzll
NjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKICAgICBpZiAoRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAm
dGFibGVTaXplKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Y2hhcj4g
ZGF0YSh0YWJsZVNpemUpOworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHRhYmxlU2l6ZSk7CiAg
ICAgRlRfVUxvbmcgZXhwZWN0ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgRlRfRXJyb3Ig
ZXJyb3IgPSBGVF9Mb2FkX1NmbnRfVGFibGUoZnJlZVR5cGVGYWNlLCB0YWcsIDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8RlRfQnl0ZSo+KGRhdGEuZGF0YSgpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYgKGVy
cm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggYTE2MWM0N2M1MGRiODI4NDdlNmZmMmQ2ODUyOGJk
OGNjYzcyMmQ1MS4uMGRlYTgwZTJiY2E0NzhlZDRjMDJhZTFhMGIwNTY1NGI4NGQyOWQ1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1
c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBtX2VvcyA9
IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdT
dHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZm
ZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1f
aW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCA0NDk4MzczNjYxYTdlYjA5OWZiOTg0NTZlOTRhNDFk
ODRhZGIxYzE2Li4xNzEzNWExNDFjZDZmYTJjZTZhODcyYzc3MzE5ZTQzM2IzODc2MDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIENETUluc3Rh
bmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYQogCiB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNh
bGxiYWNrKQogewotICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9z
ZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4
X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YUFzVUludDhQdHIoKSksCisgICAgT3BlbkNETUVycm9yIGVy
cm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0
ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAg
ICAgICBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKICAgICBjYWxsYmFjayghZXJyb3IgPyBTdWNjZWVk
ZWQgOiBGYWlsZWQpOwogfQpAQCAtMzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBHU1RfREVCVUcoInBhcnNpbmcgYnVmZmVyIG9mIHNpemUgJXp1
IiwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVy
LT5kYXRhQXNVSW50OFB0cigpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1Q
KCJidWZmZXIiLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgICAgIFN0
cmluZ1ZpZXcgcGF5bG9hZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLT5k
YXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmdWaWV3PiB0eXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiOlR5cGU6Iiks
IDYpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdT
VF9FUlJPUigiQ0RNIGVycm9yIik7Ci0gICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNz
YWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgIEdTVF9NRU1EVU1Q
KCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgIGZv
ciAoY29uc3QgYXV0byYgY2hhbGxlbmdlQ2FsbGJhY2sgOiBtX2NoYWxsZW5nZUNhbGxiYWNrcykK
ICAgICAgICAgY2hhbGxlbmdlQ2FsbGJhY2soKTsKICAgICBtX2NoYWxsZW5nZUNhbGxiYWNrcy5j
bGVhcigpOwpAQCAtNTA3LDExICs1MDcsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAg
ICBtX2luaXREYXRhID0gSW5pdERhdGEoaW5zdGFuY2UtPmtleVN5c3RlbSgpLCBXVEZNb3ZlKGlu
aXREYXRhU2hhcmVkQnVmZmVyKSk7CiAKICAgICBHU1RfVFJBQ0UoIkdvaW5nIHRvIHJlcXVlc3Qg
YSBuZXcgc2Vzc2lvbiBpZCwgaW5pdCBkYXRhIHNpemUgJXp1IiwgbV9pbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7Ci0gICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhQXNVSW50OFB0cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
KyAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEo
KSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAKICAgICBPcGVuQ0RNU2Vzc2lvbiog
c2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgb3BlbmNkbV9jb25zdHJ1Y3Rfc2Vzc2lvbigmaW5zdGFu
Y2UtPnRodW5kZXJTeXN0ZW0oKSwgdGh1bmRlckxpY2Vuc2VUeXBlKGxpY2Vuc2VUeXBlKSwgaW5p
dERhdGFUeXBlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIG1faW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhQXNVSW50OFB0cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBu
dWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwor
ICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywg
JnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0
RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5oYXNQYXlsb2FkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
bWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNz
YWdlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIs
IG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdl
LT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFp
cihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vu
c2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2Up
KSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAg
ICAgICB9CiAgICAgfSk7Ci0gICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0
eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+
ZGF0YUFzVUludDhQdHIoKSwgcmVzcG9uc2UtPnNpemUoKSkpCisgICAgaWYgKCFtX3Nlc3Npb24g
fHwgbV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNz
aW9uLmdldCgpLCByZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKSkKICAgICAgICAg
c2Vzc2lvbkZhaWx1cmUoKTsKIH0KIApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklECiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQ
YXlsb2FkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5z
aXplKCkpOwotICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3Nh
Z2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtl
eU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBX
VEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6Tm9uZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApp
bmRleCBlODlmYjU5OTg2MjE1YjlkNWRhZTE3OWQyZDc1OWNlZjc0MTgxNDc2Li41OTY2YzNmMjU5
NzAzMDA2MzZmZTU5MDliNDc2MzVkMWYzNWM4MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC04
Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1
ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpemVfdCBv
ZmZzZXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwb3NpdGlvbikgLSBidWZmZXIu
ZGF0YSgpOworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZh
bGlkCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggYTAzZTcxYWIx
YmMzYjFjYTUwN2NmMzhlMjc0MTg3YmVjMGE5ZDE5MS4uNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5
ZjY5NzYyM2FlMjRkNDBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMjA0
LDcgKzIwNCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVP
VEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAgICAgb3ZlcmxheUxlbmd0aCA9
IDA7CiAKICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGZvbnREYXRhLT5zaXplKCk7Ci0gICAgY29u
c3QgY2hhciogZGF0YSA9IGZvbnREYXRhLT5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGZvbnRE
YXRhLT5kYXRhKCk7CiAKICAgICBFT1RQcmVmaXgqIHByZWZpeCA9IGVvdEhlYWRlci5wcmVmaXgo
KTsKIApAQCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciog
Zm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKICAgICAv
LyBJZiBwb3NzaWJsZSwgZW5zdXJlIHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9m
IHRoZSBmdWxsIG5hbWUuCiAgICAgaWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5n
dGggJiYgbWVtY21wKGZhbWlseU5hbWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewot
ICAgICAgICBvdmVybGF5U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnVsbE5h
bWUpIC0gZGF0YTsKLSAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGZhbWlseU5hbWUpIC0gZGF0YTsKKyAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGZ1bGxOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJs
YXlEc3QgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmYW1pbHlOYW1lKSAtIGRh
dGE7CiAgICAgICAgIG92ZXJsYXlMZW5ndGggPSBmYW1pbHlOYW1lTGVuZ3RoOwogICAgIH0KICAg
ICBlb3RIZWFkZXIuYXBwZW5kQmlnRW5kaWFuU3RyaW5nKGZ1bGxOYW1lLCBmdWxsTmFtZUxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggMGMwYzEzNzIwM2RmMzZjZjU3NTVmMTJm
NDliOTU2MjM2MmYyNGM1Mi4uNzMzNmEyMzUxY2E3ODhlYjY4OWEwMmVkZGUzMDc5ODAxY2EyYWU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbgogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAw
LCAwLCAwKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUg
IT0gR0RJX0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhKHNpemUpOworICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0
Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKICAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCmluZGV4IDg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMu
LjY0MjRjMDNjMzczYTU1YjQyOWE1OTQxYzBhNDhmNmRlZmJmYjZjMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJbWFn
ZVR5cGUgSUNPSW1hZ2VEZWNvZGVyOjppbWFnZVR5cGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAg
ICBjb25zdCB1aW50MzJfdCBpbWFnZU9mZnNldCA9IG1fZGlyRW50cmllc1tpbmRleF0ubV9pbWFn
ZU9mZnNldDsKICAgICBpZiAoKGltYWdlT2Zmc2V0ID4gbV9kYXRhLT5zaXplKCkpIHx8ICgobV9k
YXRhLT5zaXplKCkgLSBpbWFnZU9mZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247
Ci0gICAgcmV0dXJuIHN0cm5jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQ
TkciLCA0KSA/IEJNUCA6IFBORzsKKyAgICByZXR1cm4gc3RybmNtcCgmbV9kYXRhLT5kYXRhQXND
aGFyUHRyKClbaW1hZ2VPZmZzZXRdLCAiXHg4OVBORyIsIDQpID8gQk1QIDogUE5HOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDlhNDcwZWJhYTExYTEyODg1YjYwM2U1
M2ZlOGE4NGYxM2M3NjM5ZGUuLmMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFiZDVi
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgcHVi
bGljOgogICAgICAgICBhdXRvIGJ5dGVzVG9Vc2UgPSBkYXRhLnNpemUoKSAtIGJ5dGVzVG9Ta2lw
OwogICAgICAgICBtX3JlYWRPZmZzZXQgKz0gYnl0ZXNUb1VzZTsKICAgICAgICAgbV9jdXJyZW50
QnVmZmVyU2l6ZSA9IG1fcmVhZE9mZnNldDsKLSAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3Bu
ZywgbV9pbmZvLCByZWludGVycHJldF9jYXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDxjaGFyKj4o
ZGF0YS5kYXRhKCkgKyBieXRlc1RvU2tpcCkpLCBieXRlc1RvVXNlKTsKKyAgICAgICAgcG5nX3By
b2Nlc3NfZGF0YShtX3BuZywgbV9pbmZvLCByZWludGVycHJldF9jYXN0PHBuZ19ieXRlcD4oY29u
c3RfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkgKyBieXRlc1RvU2tpcCkpLCBieXRlc1RvVXNl
KTsKICAgICAgICAgLy8gV2UgZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzdXBlcmNsYXNzIGVuY29k
ZWREYXRhU3RhdHVzKCkgYmVjYXVzZSB3ZQogICAgICAgICAvLyBtZXJlbHkgd2FudCB0byBjaGVj
ayBpZiB3ZSd2ZSBtYW5hZ2VkIHRvIHNldCB0aGUgc2l6ZSwgbm90CiAgICAgICAgIC8vIChyZWN1
cnNpdmVseSkgdHJpZ2dlciBhZGRpdGlvbmFsIGRlY29kaW5nIGlmIHdlIGhhdmVuJ3QuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oCmluZGV4IDYwMzc1ZGU1YmNkY2I0NzZhZTBlZjQxNzVjZTcxYjFlMWQ2
MTU1ZmYuLjA1NDQyOGQ1MGRjNjFhYWFkNTE4ODc5ZDIyY2JjMmY5Nzc5MTUwM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5n
RGF0YShjb25zdCBDU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCmluZGV4IDlmNmRkODBmMjVh
MWUwNjc1NWRhMWFjOTg3ZWFlODg5ZGY5ZjI3NDIuLmRkMDVlZjBmYmQzZTczMDk3NDM1MDVhY2Nj
MDEwMTRlZjRkOWM1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0
YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1v
dW50SXNEZWNyZWFzaW5nKHNpemVfdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKaW5kZXggNDEyNDdmNjg0Zjc2MDkwYTZkMmJlMjUw
YTU1ODg2NGNjZjA0MjE1Ny4uYzljOTNiYTYwMTE4ZjkxOWQxMTYwMjkzMmRhZTgzZDc5OTQ2N2Zi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJl
YWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBSVENEYXRhQ2hhbm5lbFN0YXRlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKFJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3Qp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERldGVjdEVycm9yKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIHNpemVfdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCmluZGV4IGQwMzAwNTM2ZWQ5
MzBmYmY5YzIwMmJiOTcyNjEwZDRjNWY4OWE4YzQuLjkzYmQ5NjJkNGRlYWQ0MDM5ZTVkMDE1NDdi
NTU4MjA4ZDllZWVhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBi
b29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJp
bmcmIHN0cmluZykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jv
b2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRh
dGEsIHNpemUpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRleCA0YTUxMDky
YmM0MWYyY2Y5ZjdmM2QwNGYyNzdhNzVjMjk0ZTFjYWE1Li5lMDcwYmRiMTNlODcyNTg3YzUzZTA0
ZjQ5NjE3ZmVkNTU5YTBhODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtNDEsNyArNDEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBiNzdmOTAwNzgx
OWZmZWMyOTViNjA1Mjk0OGFlOTk0ZGFlMjQ2MWRmLi5jODdkODg4MDQzNzU5Nzk3MDcxMTlhZGE3
MjI2YzI5MWE1MDhmOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcApAQCAtNDEzLDcgKzQxMyw4IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1E
YXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4o
KSk7CisgICAgYXV0byBieXRlcyA9IGZsYXR0ZW4oKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogfQogCiBVUkwgRm9ybURhdGE6
OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJm
OGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjY0MzZhYWM1OWQ4MzE4NGVlY2YxM2MyMDhhZGMxZTUw
MzczZTNlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5kYXRhQXNDaGFyUHRyKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCA0MjE5YmI1M2MyMDU2OTc1
M2IwYjE5MmMzYjkzZjFkNWFmN2RlZTU2Li4wYjFmZDc0NWViYTJmNjFlZWNlNjFhMWNhNTgxMzFl
ZGVkZTlmZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5
dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKIAogICAgICAgICAgICAgc2l6ZV90IGJ5dGVz
RnJvbVRoaXNWaWV3VG9EZWxpdmVyID0gc3RkOjptaW4oYnVmZmVyVmlldy5zaXplKCksIHJhbmdl
LmVuZCAtIGJ5dGVJbmRleCArIDEpOwogICAgICAgICAgICAgYnl0ZUluZGV4ICs9IGJ5dGVzRnJv
bVRoaXNWaWV3VG9EZWxpdmVyOwotICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciBy
ZWNlaXZlZERhdGE6YnVmZmVyVmlldy5kYXRhKCkgbGVuZ3RoOmJ5dGVzRnJvbVRoaXNWaWV3VG9E
ZWxpdmVyXTsKKyAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRh
OmJ1ZmZlclZpZXcuZGF0YUFzQ2hhclB0cigpIGxlbmd0aDpieXRlc0Zyb21UaGlzVmlld1RvRGVs
aXZlcl07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsK
ICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdv
cmtMb2FkTWV0cmljcyB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nLmgKaW5kZXggMDVkMTc3MTc3NTFlMDBhNTJhNmEwNWViMDA2ZjdiNGMxN2YxZDRiYi4u
ZWJjZGIyZTBkZDliNDI4MGYyNTE1NzNkYmE2YjViZDA2ZGZmZDViYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVf
dCBsZW5ndGgsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKSBjb25zdDsKICAgICBT
dHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBTdHJp
bmcgZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGNvbnN0IHsgcmV0
dXJuIGRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGUoU3RyaW5nVmlldywg
VW5lbmNvZGFibGVIYW5kbGluZywgTkZDTm9ybWFsaXplID0gTkZDTm9ybWFsaXplOjpZZXMpIGNv
bnN0OwogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcg
c3RyaW5nKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbmNvZGUoc3RyaW5nLCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpVUkxFbmNvZGVkRW50aXRpZXMsIE5GQ05vcm1hbGl6ZTo6Tm8pOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDAwOTRmNDdkNDY0MDFkNTlh
Y2I4NWY3NjU0M2RhNjJkNzM4YzBmZTYuLmVjYjZiYWUxNjg5NTYxNjdmNjFmYWYzZGNhMjkzNjQ2
Y2RjYWQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAt
NDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5
IGZyYW1lLT5pbml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhl
IGVtcHR5IGRvY3VtZW50Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUoKSk7CisgICAgICAg
IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+
ZGF0YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDU3ZWU1ZGVkMjRiZGEyNzVl
NTg2YmRmNjEzMmE1MjQ1NWFiYWNjOTYuLmRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5
ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25z
dCB4bWxDaGFyKiB1cmksCiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3BlY2lmeSBhbiBlbmNvZGlu
ZyBoZXJlLiBOZWl0aGVyIEdlY2tvIG5vciBXaW5JRSByZXNwZWN0cwogICAgICAgICAvLyB0aGUg
ZW5jb2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMuCi0gICAgICAgIHhtbERvY1B0
ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0aW9ucyk7CisgICAg
ICAgIHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhQXNDaGFy
UHRyKCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVy
aSwgMCwgb3B0aW9ucyk7CiAKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYygwLCAw
KTsKICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCAxZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5NzhmLi4xZmRlMmU4ZDYwMzUz
NDI2ZGJiNmRkZjMyMzhlNzYxMzU3NTI4N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNTksNyArMzU5
LDcgQEAgc3RhdGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciopCiBjbGFzcyBPZmZzZXRCdWZm
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9mZnNldEJ1
ZmZlcihWZWN0b3I8Y2hhcj4gYnVmZmVyKQorICAgIE9mZnNldEJ1ZmZlcihWZWN0b3I8dWludDhf
dD4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgICAg
ICAsIG1fY3VycmVudE9mZnNldCgwKQogICAgIHsKQEAgLTM3Nyw3ICszNzcsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0
b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4
IGMzZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcuLjdlMGQ4ZGJlMTkwMjU5
OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0
YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAppbmRleCA0YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2Li5jYmQwNGQ5
OWI3YzI3MTY3MWM4NzUyYjE4YTkyZTQyMTU4NTZjOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDgxLDcg
KzQ4MSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZl
RGF0YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVh
bUlELCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTUw
Nyw3ICs1MDcsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJgogICAgIGlmIChtX3BsdWdpbkNh
bmNlbGVkTWFudWFsU3RyZWFtTG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IGM3ODBiYzRmODExYWY4ZmIz
ODdmYjBkMjJjN2ZkZTRmMWQxMzYwODkuLmU1YWE3MGNkMGMyZDc3ZWIyYjhiN2U0YzllOTE2Yjg2
ZGJlOWU2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRp
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBA
IC03OSw3ICs3OSw3IEBAIHZvaWQgd3JpdGVUb0Rpc2soc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5j
b2Rlcj4mJiBlbmNvZGVyLCBTdHJpbmcmJiBwYXRoKQogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0Rh
dGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBhdXRvIHdyaXR0ZW5CeXRlcyA9IEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBy
YXdEYXRhLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5k
bGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYXdE
YXRhLT5zaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNy4u
NmMyNzc0NDk2NDMzOGNkYWE1YzgyNzMzMmI3ZGFhNWIwNWM4ZTcwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMDYxLDcgKzMwNjEs
NyBAQCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZlcigp
LT5iZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNp
emUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4oc2Vn
bWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYwZWM4YzgzOGE4NzA4MTcwZTFm
MmM2OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJjOWUyOGI3Nzk4NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMjEsNyAr
MjIxLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAg
ICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBh
Mjc4YWYxZGM2YS4uOTljYTFkODhiODMyYjBmYTNkNGM3MmYxNTViMzZkZGQ1YTFjM2IyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGQwY2I3OWU1ZDFlNjVm
OGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdkMWI1
MTNlYjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5kUXVl
dWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0
cmluZykgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgo
KSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgp
IH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfSwgWyZjaGFubmVsXShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIGRhdGEsIGJ5dGVMZW5n
dGgpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAg
IH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsK
KyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0ZUxl
bmd0aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5n
dGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUgZXhj
ZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4Y2Vw
dGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0cmluZygiRmFpbGVkIHRvIGxv
YWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDQ5OWRhMThkMTc0ZmU3ODkyOGI4NzNjYTcy
Y2I3ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIyNGZkMWIyODAwNGNhNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKIHsKICAgICBpZiAoYXV0byogc291
cmNlID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
aWYgKGlzUmF3KQotICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAg
IHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKICAgICB9
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OmNo
YW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGkKIAogdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgYm9vbCBpc1JhdywgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAo
aXNSYXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAgICAgcG9zdFRhc2tUb0hhbmRsZXIoaGFuZGxl
cklkZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdURk1vdmUodGV4dCkuaXNvbGF0ZWRDb3B5KCks
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0byYgaGFuZGxlcikgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkp
OworICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNl
aXZlU3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICB9KTsKQEAgLTIzMCw5ICsyMzAsOSBA
QCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRp
ZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOwogfQog
Ci12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBSVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdE
YXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlk
ZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplICB9IH0sIDApOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2Vp
dmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgc2l6
ZSAgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90
ZVNvdXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdjNTU0ZmRiMTVlZTIzOWRlNjJiMzUwY2UuLmY4
YzA1ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFlZGEwYTczNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRh
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hhciosIHNpemVfdCkg
ZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIpIGZp
bmFsOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4OTkwOTMyYzQzODJiYjYxZmYwMDQ5ODRjNGIz
OTkwZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4NDUzMzExY2YzMWNiZjJiODVjMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0
aWMgTlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9vbCBpc0ZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZl
ciwgdWludDMyX3QgbGVuZ3RoLAogICAgICAgICBpZiAoIWZpbGVDb250ZW50cykKICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgICAgICBwb3N0QnVmZmVyID0g
ZmlsZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29udGVudHMt
PmRhdGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9zdEJ1ZmZlclNpemUgPSBmaWxlQ29udGVudHMt
PnNpemUoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIE5QQVBJIHNwZWMgc3RhdGVzIHRoYXQg
dGhlIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApp
bmRleCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjLi4wOTBkNWE0MGNl
YmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3AKICAgICAgICAgcGx1
Z2luU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBl
UGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAKQEAgLTkwMSw3ICs5MDEsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludAogICAgIG1fbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWlt
ZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKG1f
c2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDI0NzQ5MTQ2
ZDkwZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNjZjIuLmE1ODJiNjY1MmZhNTAxZDZlNzdkYzI0
MjkwNmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTk1LDEyICsxOTUs
MTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBp
bnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2
NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDJhNjAxY2MwOGI0MGU3NWY5
YWUxOGE2MjVhODJjMjYxZmZkN2MyN2UuLmU5MThmODkyYjdiZTA4MDU2MTRhZWU0OWViZTI5M2Ez
MjIwMWUwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHMKICAgICBzdGFydChyZXNwb25zZVVSTC5z
dHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVy
cyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8g
RGVsaXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28g
YXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBl
UGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBTdHJpbmcmIHJl
c3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0cmluZy5s
ZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRl
bGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHRD
U3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwogICAgIHN0b3AoTlBSRVNf
RE9ORSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpzdGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVy
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewog
ICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKCkKICAgICB9CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0Zp
bGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fZmlsZUhh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBh
dGguaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCkBAIC0y
NzYsNyArMjc2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0Zp
bGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOworICAgIGludCBieXRlQ291bnQgPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNvdW50ICE9IGxlbmd0aCkgewog
ICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdoZW4gd2UgYXJlIG91dCBvZiBk
aXNrIHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KICAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApp
bmRleCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4N2Q0M2U1MjFmMDg5OTIzYWJlLi45YjA3MDk5ODg0
NzIwNDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYyOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNlVVJM
LCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsKIApA
QCAtNzMsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBu
b3RpZnlBbmREZXN0cm95U3RyZWFtKE5QUmVhc29uKTsKIAotICAgIHZvaWQgZGVsaXZlckRhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGVsaXZlckRhdGFUb1Bs
dWdpbigpOwotICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpOwogCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKICAg
ICB1aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDZjZGJlZGNkMDg1NzJlMGI2NTk5ODU0M2ZkZjQy
ZjI1ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMwNmQwZmZkODJhY2M4MmYyOGIwOWNmZTAyMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTE3NiwxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFT
Y3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CiAg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVz
KSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwot
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlE
KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZp
bmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Niw3ICszNjYsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBjMDJmODQwYzQwNzQ4MDFiZDg3NGY2Y2Y4MzJlOTdiODg0MWY1YzQ5Li4x
NTEzZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2NiYmQwNzExZjdkMmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTcsNyAr
MTE1Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291bnQp
Cit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgY291bnQpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAo
IXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGNvdW50KTsKKyAgICByZXF1ZXN0LT5h
ZGREYXRhKGRhdGEsIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVh
bUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE2ODQsMTQgKzE2ODQsMTQgQEAgdm9pZCBQREZQ
bHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
VVJMJiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lk
IFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVu
dFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRD
RihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1f
ZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3Ro
KTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOwog
ICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiB9CiAKQEAgLTE3MjksNyArMTcyOSw3IEBA
IHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExl
bmd0aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRM
ZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQ
bHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAppbmRleCBkM2M3YWM3MDUxMWZjNzJjODcwODRiOGEzNzRmOWQ2YzcyNjg1
OWIwLi4xMzU1Y2ZmNGViNzdmNmY3MTdkYjkyMGUyMTQwNThmYzE2YjJmZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlk
UmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhh
cyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2Fk
aW5nKHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBU
ZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEu
Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5n
LgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmlu
ZGV4IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYyMzg3MGE2MDllMzM5MzlhY2YuLjljZWQ3ZGEwNzUw
MmY2MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTMzMCw5ICszMzAsOSBAQCB2b2lk
IFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVzcG9ucwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShzdHJlYW1JRCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlm
aWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdm9pZCBQbHVnaW5Qcm94
eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewot
ICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250
cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFSZWZl
cmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgpKSwg
bV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShz
dHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0
YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1
aW50NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5ICszNTAsOSBAQCB2b2lkIFBsdWdpblByb3h5Ojpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyXwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwg
aGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5n
dGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFs
U3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAwMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEyZTU2
MTJjNmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgxNjhkZDNhNzM4ZmVkMmIwZGMwNzE0NGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg3
LDExICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJl
YW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlE
LCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRl
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCBiNjRhY2FiZGY3NTNhYTg5ZTdiNzBlNGQ1NmU1NWQ3NzBlZDMyMDIxLi4zYTA5
NjgzZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMwNzY4NDA3YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7
CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1
Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCBy
ZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBt
aW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZv
aWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3
OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgbV9wbHVnaW5WaWV3LT5tX3Bs
dWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CiB9
CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2lu
LT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQg
ZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4MjhkMzBhMDZlOWQ4ZmRk
NzhiNTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40YTFmNWFjNTdhOWQ3NzU0ZTY0MDc4ZjdkYTQyYjU3
NmEzMzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdEZXN0cm95
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwgbV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95
ZWQoKTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBtYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZv
aWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRG
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2MjEw
Mi4uMTc2NzRkZjAyYzMyYTEzZWRhODUwNmUyNzBkZmQ3NjM3MDM1MGEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IGNoYXIqIGRhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCAwMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiLi4yYWMyNWRj
ZDM5ZTQ4MGRmOTM2YzZhZWI3OWVjMjBhZmVjMmQ0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
CiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
Ly8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KLSAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJpZGVC
dWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZv
ck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIp
KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1
ZmZlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBjNTM2
MjVhMTg4MzhmZDBkMjczZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4xNTIwMGVjZDkxOTI2OGMzNDA3
ZDkxOWMwNjY3MThjOTMyNDYxNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTdHJlYW1XaXRo
UmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogCiAgICAgLy8gRklYTUU6IENhbiB0
aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1N2Fh
NGE4MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4wODYxNWU0OWY1MTMwM2E0ZjU5
Y2FkMDUzOWNmZmU3ZDlhMDViMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbTo6c3RhcnRTdHJlYW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBsb25nIGxvbmcgZXhwZWMKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KFtoZWFkZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBsZW5ndGhdKTsKIH0KICAgICAg
ICAgICAgICAgICAgICAgIAotdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgX1dLUEhTdHJlYW1EaWRSZWNlaXZl
RGF0YShtX2luc3RhbmNlLT5ob3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+cGx1Z2luSUQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RyZWFtSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dF9jYXN0PGNoYXIqPihieXRlcyksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRl
cykpLCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNzU0MjY5MzgxMmU3
OGI3Zjg5YThlMzQ0MDM3MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNlZjhjMDZhY2M5ODhhYTI0YWI4
ODI3YTM5OGY1YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpl
dmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOltKU0RhdGEgbGVuZ3RoXQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25zZShy
ZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKKyAg
ICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0tPmRp
ZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IDc2MTE3MWNlYTdjYTVmYTY3MjhjOWRjMDBkMmViN2IyZDE4Zjc3
ODAuLjY0YzI3N2I1ZjQzZDE1MWJkYTQxNWJlYzliNTlkNWYzY2NmYzA4NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUxOSw3ICs1MTksNyBAQCAtICh2
b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEg
KilkYXRhCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0qIG1hbnVhbFN0cmVhbSA9IF9wcm94eS0+bWFudWFsU3RyZWFtKCkpCi0gICAgICAg
IG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBtYW51YWxTdHJlYW0tPmRp
ZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10p
LCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVn
aW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmlu
ZGV4IDJiYzk3OGQzNDAzZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMuLjE5MzkwYjVjMDJh
NzVmNzlmOTY2ZjgxYTQxYTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveVN0cmVhbVdpdGhFcnJvcihOU0Vy
cm9yICopOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggZjg4OTBkMDUxNmIyMTJhY2ZlNzY5NjY0
MjVkZTU0NDEwNGM5YTY5NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMyNjkxNTgxNGU1NjYyMGM5NTUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciopCiAgICAgZGVzdHJveVN0cmVhbVdpdGhSZWFzb24oTlBSRVNfRE9ORSk7CiB9CiAKLXZv
aWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFdlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8gZGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWJ5
dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5k
ZXggMzNiYTU3YzE1NWYxOGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5NWU5Yy4uYThhMmVlODE3MWEy
ZGI4ZDgyYzhiYjA1YTk5ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEwNTEs
NyArMTA1MSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNl
aXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICB9CiAKICAgICBpZiAoX21hbnVhbFN0cmVhbS0+
cGx1Z2luKCkpCi0gICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAg
ICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVn
aW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJv
cgpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICAKICAgICAgICAgc3RyZWFtLT5zdGFydFN0
cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVj
ZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pT
RGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwog
ICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0N2UxNmIyYTRmYjAy
OGU0OGM4NDA5ZTg2OGNhNzIzODRlYWEwOWIuLmNiOTQ1MzRjMjdiZWEyZDZlOGVhN2FlZGQwMWZk
YWVmMTE0ZTU1ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0
b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBo
YXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90
KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0
byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQnVmZmVyKToKKwogMjAyMS0wNi0wMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNzgzNTYuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlYzdkMTE5ZWE4MTliMDE5OWE4NzNmMDIwNzY2ZDQx
OTIwMWFjMmEuLmVhNzMyYThlMGUwYzI2YzlkOTBhMTIzNTk0MGFjZGU1N2UyMTYzYTYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xMDMsOSArMTAzLDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXJMYXJnZVNlZ21lbnRzKQogewotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IwKDB4NDAwMCwgJ2En
KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMSgweDQwMDAsICdiJyk7Ci0gICAgVmVjdG9yPGNo
YXI+IHZlY3RvcjIoMHg0MDAwLCAnYycpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4
NDAwMCwgJ2EnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CkBA
IC0xNjAsNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQogCi1zdGF0aWMgdm9pZCBjaGVj
a0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkKQorc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKIHsKICAgICAv
LyBleHBlY3RlZCBpcyBudWxsIHRlcm1pbmF0ZWQsIGJ1ZmZlciBpcyBub3QuCiAgICAgc2l6ZV90
IGxlbmd0aCA9IHN0cmxlbihleHBlY3RlZCk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBj
b25zdCBjaGFyKiBleHAKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQog
ewotICAgIFZlY3RvcjxjaGFyPiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rv
cjxjaGFyPiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMyA9
IHsnaScsICdqJywgJ2snLCAnbCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdi
JywgJ2MnLCAnZCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAn
aCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwogICAg
IAogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHMxKSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVh
bFRvKQogewotICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPGNoYXI+PiYm
IGNvbnRlbnRzKSB7CisgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWlu
dDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKICAgICAg
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwpAQCAtMjA5LDcgKzIwOSw3
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgYXV0byBidWZmZXIx
ID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKICAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9y
PGNoYXI+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CisgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIx
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2Mn
fSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdl
dCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRvSGV4U3RyaW5nKQogewotICAgIFZlY3RvcjxjaGFyPiB0MSA9IHsweDExLCAweDUsIDB4
MTJ9OworICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHQxKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430575</attachid>
            <date>2021-06-04 07:38:18 -0700</date>
            <delta_ts>2021-06-04 07:50:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604073817.patch</filename>
            <type>text/plain</type>
            <size>141492</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGVkYTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2Yx
NjljNzg2MzA5YTM1NGJlMWM1N2NjNzNkMDI1MC4uZjE4M2NiODgyMzA1ZjFkMzI5YjkwODczYWZi
NGJjOWU1MzY2NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
fQogCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5LXBhY2th
Z2UtZGF0YQotc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9IFtjb250ZXh0XSAoY29uc3QgY2hhciog
cGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZvcm1EYXRhJiBmb3JtKSAtPiBib29sIHsKICAg
ICAgICAgY29uc3QgY2hhciogaGVhZGVyRW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1l
bW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSk7CkBAIC0xOTQsMTMgKzE5NCwx
MyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50
Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGRhdGEsIGxlbmd0aCwg
Ym91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwogICAgICAgICBpZiAoIWN1cnJlbnRC
b3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBjb25zdCBjaGFy
KiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKGN1cnJlbnRC
b3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3VycmVudEJvdW5kYXJ5ICsgYm91
bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOwor
ICAgICAgICBjb25zdCBjaGFyKiBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obWVtbWVtKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAoY3Vy
cmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFuZXh0Qm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
d2hpbGUgKG5leHRCb3VuZGFyeSkgewogICAgICAgICAgICAgcGFyc2VNdWx0aXBhcnRQYXJ0KGN1
cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBuZXh0Qm91bmRhcnkgLSBjdXJyZW50Qm91
bmRhcnkgLSBib3VuZGFyeUxlbmd0aCAtIHN0cmxlbigiXHJcbiIpLCBmb3JtLmdldCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRCb3VuZGFyeSA9IG5leHRCb3VuZGFyeTsKLSAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0obmV4dEJvdW5kYXJ5
ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3Vu
ZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlM
ZW5ndGggLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA5ZTZkYmI4YWZhYzc0MmY0YzI0OGFmNTk1OWFiMTg3
Nzc4NWYzYzAwLi4wYjRhYmZjY2I1NjRkN2NhNDg1OThmZjliZTc4NzE0YmY3OWEwZGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hs
aWdodC0+ZGF0YSgpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBlODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIxOTQ2N2FjYmQ5Li5h
MWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQg
SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhQXNV
SW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0pOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0KIAog
SURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29s
YXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggOTI4MzM4OGM0YmI0ZWNh
ZTYxMGM3ZThlNmI4OTI1ZTQ3OWI1ZTQzNi4uYjdmNzc3YTQwM2JlODFkMDhjODY3M2VmNGZjZWJk
NjlkYTgyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMjg0LDExICsyODQsMTIg
QEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmIGtleSkKIHsKKyAgICAvLyBGSVhNRTogVXNlIFZlY3Rvcjx1aW50OF90
PiBhbmQgcGFzcyBpdCBkaXJlY3RseSB0byBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLgogICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAg
IGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlE
YXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDg2YWZjZGJiNzZjMGEyZmY1MmE4ZjE1NDMwYjEz
OWJkYmZkNjBkNWEuLmFkOWU0NDk5NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHNjaGVkdWxlRGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh0ZXh0KSk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsK
ICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggNmRmYzEwNTYxOGU0MjZlNDAw
MTU3NmQ0MjA1ZTA1MDE3NmRhMDBkNC4uOGY4Zjc1Mzc1NjdmZWQ1ZmRlMTdhNzdmOGU1NDcwODg0
NmFlNWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggNDZlZjZmOGIwYmNlNjI5
MmI5YTA5YWQxMTVlMmM0ZmNiZGRlZTJiZS4uZTdjMjFhZWY1YjMwNTEzYWY1YzVjZTk2ZDBmZDM0
NGZmNzI0ZWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoU3RyaW5nJiYgdGV4dCkKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwg
c2l6ZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewogICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5h
cHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggY2ExZGNkYmMxY2U5NWYyNTg0
N2RiYmQ5NmVmZGJjMGJkOGQ0ZDFhMS4uYmViZWE0ZGM3M2VmNGE3YzhjY2UzOWU5Y2I4NTNlYzRi
MWU1Mjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0
ZShSVENEYXRhQ2hhbm5lbFN0YXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKFN0cmluZyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREZXRlY3RFcnJvcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVm
ZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcgogICAgIHZvaWQgc2V0Q2xpZW50KFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5h
bDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAg
IGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIG1fcmVtb3Rl
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAppbmRleCAxZDZlZmYwNWFh
NDVkNjEzYTY1ZDcyNTY4MWE0ZDcwNDhkNjIwZDE3Li4zMzI0OTlkMDFlMzVlNTZjY2Q0ZTc3ZDU2
NTAyMWY3MDg0ODU4YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoKTsKIAog
ICAgIHZvaWQgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkgeyBtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKHRleHQpOyB9Ci0gICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUp
OyB9CisgICAgdm9pZCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyBtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBjbG9z
ZSgpIHsgbV9oYW5kbGVyLT5jbG9zZSgpOyB9CiAKIHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50CiAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1faWRlbnRpZmllciwgc3RhdGUpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpIGZpbmFsIHsg
bV9jb25uZWN0aW9uLT5kaWRSZWNlaXZlU3RyaW5nRGF0YShtX2lkZW50aWZpZXIsIHRleHQpOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmllciwg
ZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0Rh
dGEobV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkRGV0ZWN0RXJyb3IobV9pZGVudGlmaWVyKTsgfQog
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90IGFtb3VudCkgZmluYWwg
eyBtX2Nvbm5lY3Rpb24tPmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKG1faWRlbnRpZmllciwg
YW1vdW50KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBjNzRlNGMwOWY5ZjA0YmYwMjkxY2ExM2VjMTA2ODc2YTVjMTM5Njgz
Li5kMWU4ZTRiYmNmMTNlYjczYTAwZmFhZmExZmFiOTRlYzllMjQwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgdXRmOFRleHQpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIodXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSks
IGZhbHNlIH0pOwogfQogCi1ib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKGRhdGEsIGxlbmd0aCksIHRydWUgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRh
dGFCdWZmZXImIGJ1ZmZlcikKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZm
ZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcgd2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOwogICAg
IHBvc3RUYXNrKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCptX2NsaWVudCksIGJ1ZmZlciA9
IFdURk1vdmUocHJvdGVjdGVkQnVmZmVyKV0gewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLT5kYXRhLmRhdGE8Y2hhcj4oKSk7
CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEuZGF0YTx1aW50OF90PigpKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci0+YmluYXJ5KQogICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggODc5N2IxZjA4ZmEyOWY3ODBh
NDhhMmQyZDRkOTA2ZGZlMThjYWZhMS4uMmJlMzEyOTVjNTAxYmFkNWFkZjViOTg1MjJjNDEyMjIw
M2M0MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgQVBJCiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICAv
LyB3ZWJydGM6OkRhdGFDaGFubmVsT2JzZXJ2ZXIgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAppbmRleCBkM2EzYjAwNjY0ZDZkZmU4NWFlMmI5MDI2ZmVlZTJjOTc2
NDA2YTI5Li4xZThjMjFhYjA5ZGJiNzJjZmFmZDhmMThmZjUwZmNmODIyNWI2N2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAg
ICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVs
ZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdGZGb250LT5kYXRh
KCksIG90ZkZvbnQtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRh
Yjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwot
ICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1
ZmZlci5zaXplKCkgfSk7CisgICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDhkZmRk
ODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdmY2IzZWUyNzIyM2ZkZTI1OTQ2
N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVu
cXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0YShkYXRhICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggM2FlNjY1MjZj
YzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1ZmJlYzMzZTljZWQzNTQwMjU4
YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAgICBlbnVtIGNsYXNzIENvbnRp
bnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENvbnRp
bnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9yJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKaW5kZXggYTc3ODg0ZGJlNWEyYzMxYjZmMDUzOWMwNDBmMzg3Y2U3ZmY5MjE3Ni4uNjc3YzVi
ODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgIGlm
ICghbV9kYXRhQnVmZmVyKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJj
ZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBmOTY2MTEyNjIxNTZiOGVjYTQyMDliMzg1YTJl
MjI4YWViYzMxMGI1Li5lZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2Rl
RGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNl
KTsKLSAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Cisg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
IHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggY2M5MGZlOWQxMDBkYzIwMTdk
ZTlhZjY3ZmRjM2Q5N2JmNWY5YzI5ZS4uYWY3ZmY1ZTYxMTkzYzUzYjc2ZmJmYTJkYjc0ODg5YTQw
YzY5NzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IGNoYXIqCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFM
ZW5ndGgpOworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJl
cXVlc3RJZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFMZW5n
dGgpOwogCiAgICAgICAgIC8vIEZvciBhIHN5bmNocm9ub3VzIFhIUiwgaWYgd2UgZGlkbid0IGFk
ZCBkYXRhIHRoZW4gd2UgY2FuIGFwcGx5IGl0IGhlcmUgYXMgYmFzZTY0IGVuY29kZWQgY29udGVu
dC4KICAgICAgICAgLy8gT2Z0ZW4gdGhlIGRhdGEgaXMgdGV4dCBhbmQgd2Ugd291bGQgaGF2ZSBh
IGRlY29kZXIsIGJ1dCBmb3Igbm9uLXRleHQgd2Ugd29uJ3QgaGF2ZSBhIGRlY29kZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggZjU1Y2JlZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uZTMy
NWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
ODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKLXN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1
bHQpCitzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0
KQogewogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRl
eHRFbmNvZGluZ05hbWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zCiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQor
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAod2l0aEJhc2U2NEVuY29k
ZSkgewogICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgc2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3Li5i
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHN0
YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggM2JkZjhjY2M1M2IxNTc1
ZjU1YmU4NmNhNjc3ZDc0ODEyZjk3OTRiMC4uN2VlNjk5MjYxNDhmMWU4MTVhOTYxMWE2NDI4MWU2
ZDU4NTc1N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBiOWRjNWIwNmE4OGFk
MTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li4wZmE2YzYxOWU0MDE0MzhkZTZhZTk4MDdkYjBl
YjE4MDUxOGZmYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTExMDMsNyArMTEwMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkg
JiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkp
IHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7CiAg
ICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YUFzQ2hhclB0cigpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hl
ZExvYWRpbmcoKTsKIApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3Vy
Y2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
Y29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEo
KS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhQXNDaGFy
UHRyKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhQXNDaGFyUHRyKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQyNTg4NTMzZTA4MTEuLmZmOWNkNmYxZWY1YTdm
ZjlmMjIxNWExNDgyMjI3NjliNjA3MGNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODIsMTMgKzQ4MiwxMyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09
IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGFBc0NoYXJQdHIoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJl
c3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hl
Y2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6
WWVzKSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEtPnNpemUoKSk7CiAK
ICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5n
Ojpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxv
YWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNw
b25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCAwZjA5ZDI2ZGFjMTMxMzZmZjhiM2Q5ZTVhZjQxNDNlMzBmOGM1N2M4Li5hNmZjZTk1
NDVjZDNhZGQ3NTEyMDViMTM5MDNkNmI2MzU5YTRmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVz
dGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5p
bmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwg
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0MDY5NmQ5MjFj
ZGI1MGQuLjk1MDZmYzg2M2VmYjk1ZGE3MjhhZjhiY2ZiNDM2NTM0MjE0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0
MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li5jNDUxMGVmM2Q0NjM2ZjBhOTVmMDAyOGZjNThm
MjY0NGRjZDU1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVmMTYyODQyOWRiM2Yx
YWIyZjUzY2VkZDY3Mi4uNjNlN2U5OWVlZDhiZDhhZTNkOGY5MGJhOWFlN2JhNzg1MmM3OGFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjQsNyArNTY0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+
KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCku
ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50Pihl
bmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NmMTIxNzkw
YTRlYWMzMTExNTY3NGY1YjhmNWNjYjI0N2ZmMGE1ZS4uZTQ2YmIyNWE2ZDE4ZTFmNjVjMTFlMWRk
NmYwOTQxNjNmZmNjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWYKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGFBc0No
YXJQdHIoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCmluZGV4
IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4YWNiODQ5NTYz
MjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1c2goKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2gocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZvaWQgc2V0SGlu
dEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1lRGVjb2Rlcik7
CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOGNj
M2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRhYjY0NWI1MGM5
MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBh
cnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLmQ0Y2FmNGQ1ZjllYTc2
NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYWM0YjFmYjhjNDQyMDMwZmVkOWUwZjk1MWQ5NDNhMGVlZWFlZGNkLi42ZGQy
NWRkNGY5OTJkZmU2M2I5MTA1NDM3MDNiZTU2MTBiYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgaWYg
KCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZTk5
MmNiNjkwNzU4OTBiMzJhMGQ4OWRjNmFhODBiNTBiMTk1ZGM1MS4uYWNmYmJiNzAyMDIyZDA2YWZl
NjIwMDQwNDg3ZmQzNGQ5MjFkNzI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQogICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3Ry
aW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNv
ZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxs
LgotICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YUFzVUludDhQdHIoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6
ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3Ry
Y21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0
byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCA0ZWVmNzA3NDgxYTA1Mzk1ZDk2MTJiNzgyMjE2NzMzZjc4NDlkYzJiLi45YmUx
Y2VhNmRmNjU0Y2Q0ZGE3YTRjNDYwYmJlZjZiNzkxZmFlMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xNDksMTQg
KzE0OSwxNCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcihlbmRP
ZlBhcnRCb3VuZGFyeS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IHBhcnQ7
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwYXJ0OwogICAgICAgICBpZiAoIW1fbGluZVJlYWRl
ci5uZXh0Q2h1bmsocGFydCkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRl
bnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAg
ICAgIGNvbnRlbnQtPmFwcGVuZChwYXJ0LmRhdGEoKSwgcGFydC5zaXplKCkpOwogICAgICAgICBt
X2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBu
ZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlm
IChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpICAg
LCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVj
b2RlKGNvbnRlbnQtPmRhdGEoKSAgICwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250
ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
MDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRh
ID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGFBc1VJbnQ4UHRyKCksIGNvbnRl
bnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1J
TUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
ZDdiZDMyODc1ZDUyZDZkMzkxYzNhZTBmYTFhYmM1OTJiYWRkZjg3Ny4uYWZmNmY1M2M0NWE2NDky
ZjFiNWFiOTI1MjcwOGI4N2VkODE4MGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAg
IHByZXZpb3VzRGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBT
ZXRGb3JTY29wZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0
cnVlKTsKLSAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERh
dGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1l
bnRhbERhdGEuc2l6ZSgpKTsKICAgICB9CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS5zaXplKCkp
OwogCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKIAogICAgICAg
ICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhkYXRhKSkgewogICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5k
YXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhQXNDaGFyUHRyKCksIGluY3Jl
bWVudGFsRGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCYgYykKICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpCi0gICAgICAgICAgICAgICAg
Y2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIG1fZGF0YS0+
ZGF0YUFzQ2hhclB0cigpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoIWhhc0Ns
aWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBDYWNo
ZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KCpjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE2YjEwNDg3NmM4NjY1YTZmMjY0YzVh
MjBhMjc5NTk1ZDFhOWYwZmYuLjY2YzYwZjE2OTllNWQzNWI3MDBjZDg1YWYyMDg5YjRhOTE2OWJl
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNW
R0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZH
VG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252
ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZh
bHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbnZlcnRlZEZvbnQtPmRhdGEoKSwgY29udmVydGVkRm9udC0+c2l6ZSgpKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwog
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDgyNTg2NTNmMjU1MTgyZjc0ZWNm
ZDRkODdhYWU5OWFhMTY2M2QxMTEuLjAyYzFlMmY0YzJiNWJhNDY3MTA2ZjNjYjkwNjc5Y2MwYTEw
OWY3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzYs
MTQgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBhcHBl
bmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICBhcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQpAQCAt
NTIsNyArNTIsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJiBkYXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7
CiB9CkBAIC04MSwxNSArODEsOSBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYQogICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3RvcjxjaGFyPiYmIHZlY3Rv
cikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0
b3IpKSk7Ci19Ci0KLS8vIEZJWE1FOiBNb3ZlIHRoZSB3aG9sZSBjbGFzcyBmcm9tIFZlY3Rvcjxj
aGFyPiB0byBWZWN0b3I8dWludDhfdD4gYW5kIG1ha2UgdGhpcyBlZmZpY2llbnQsIHJlcGxhY2lu
ZyB0aGUgVmVjdG9yPGNoYXI+IHZlcnNpb24gYWJvdmUuCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyIHsgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUo
KSB9KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0
b3IpKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBj
b25zdApAQCAtMTAyLDcgKzk2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25l
U2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFZlY3RvcjxjaGFyPiBjb21iaW5lZERhdGE7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX3NpemUpOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMp
CiAgICAgICAgIGNvbWJpbmVkRGF0YS5hcHBlbmQoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNl
Z21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKQEAgLTExMyw3ICsxMDcsNyBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiB9CiAKLWNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNv
bnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIyLDEx
ICsxMTYsNiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKIH0KIAotY29uc3QgdWludDhfdCog
U2hhcmVkQnVmZmVyOjpkYXRhQXNVSW50OFB0cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSk7Ci19Ci0KIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAog
ewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKQEAgLTE1MCw3ICsxMzks
NyBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAKIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7
Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCBzaXplb2YoY2hhcikpOworICAgIGF1
dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKHVpbnQ4X3QpKTsKICAgICBpZiAoIWFy
cmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2Fz
ICV6dVxuIiwgc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTgsNyArMTQ3
LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3QKIAogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykgewotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8
Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+
ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1lbWNweShzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudC5z
ZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKICAgICAgICAgcG9zaXRp
b24gKz0gc2VnbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogCkBAIC0xNzgsMjIgKzE2Nywx
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwotICAgIFZlY3Rvcjxj
aGFyPiB2ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBh
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7Ci19Ci0K
LXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKK3ZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKQEAgLTI0MCwyMCArMjI0LDIwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRl
cm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAot
Y29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Citjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0
b3I8Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAogI2lmIFVT
RShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5n
ZXQoKSkpOyB9LAorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oQ0ZEYXRhR2V0Qnl0ZVB0
cihkYXRhLmdldCgpKSk7IH0sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29u
c3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyAgICAg
ICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIp
KTsgfSwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3Qg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNp
dCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzI2LDcgKzMxMCw3IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9y
PGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKICNpZiBVU0Uo
Q0YpCiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVy
biBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKQEAgLTM1Myw3ICszMzcs
NyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAogICAgIHJldHVy
biBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1jb25z
dCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Vn
bWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CkBAIC0zNjcsMTAgKzM1
MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgVmVjdG9yPGNo
YXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGxlbmd0
aCAqIDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJhY3RlcnMuCi0g
ICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpOwogICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAgaWYg
KHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENoYXIqIGQgPSBzdHJpbmcu
Y2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3ICszNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1
dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
YnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7CisgICAgYnVmZmVyLnNocmluayhwIC0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwogICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDhhYzY5ZDU5MTAzNmYxZjYwMGZlODM4NGY2ZmIyOWQ5
OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdlOTA5M2RmOGVkYjYxZWFlYWRkZDAwZWI4NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02NiwxNCArNjYsMTMgQEAgY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBl
ZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1h
cHBlZEZpbGVEYXRhKSkpOyB9CiAKICAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNl
RmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAjaWYgVVNFKEZPVU5EQVRJ
T04pCkBAIC05OSw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVz
ZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlm
IHRoZXkgYXJlIG5vdCBhbHJlYWR5LgogICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5n
IGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxs
IHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBp
ZiBwb3NzaWJsZS4KLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgdWlu
dDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAogICAgIC8vIENyZWF0ZXMg
YW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRv
IHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZl
cnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTExLDkgKzExMCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgc2l6
ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lk
IGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7
CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTEyMywxMCArMTIyLDExIEBAIHB1YmxpYzoKICAg
ICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNl
Z21lbnQuCiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OworICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwpAQCAtMTUw
LDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8Y2hh
cj4mJiBkYXRhKQorICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQog
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNF
KENGKQogICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCkBA
IC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKKyAgICAg
ICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQogICAgICAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKQEAgLTIwNCw5ICsyMDQsOSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihD
RkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIzNSw4IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICNpZiBVU0Uo
Rk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNmZWU2MTQyNTEzY2MyMmU2Zjg5ZGM0YzgyNGZhMDcwMmUw
OWQuLjljYmM4MTU3N2JhOWFkN2RiYTI0YTJhYjZmMDJlNGY2ZGEwZGY1OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAg
LTQyLDI0ICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAg
LCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVu
dExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9m
RmlsZShmYWxzZSkKICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICAsIG1fc2VwYXJh
dG9ySW5kZXgoMCkKIHsKIH0KIAogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3Ip
CiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAg
LCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50
SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKLSAgICAsIG1fc2VwYXJh
dG9ySW5kZXgoMCkKIHsKICAgICBzZXRTZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0KQEAgLTc1LDcg
KzYzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6c2V0U2VwYXJhdG9yKGNvbnN0
IGNoYXIqIHNlcGFyYXRvcikKICAgICBtX3NlcGFyYXRvci5hcHBlbmQoc2VwYXJhdG9yLCBzdHJs
ZW4oc2VwYXJhdG9yKSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRD
aHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0b3IpCitib29sIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBjaHVuaywg
Ym9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewogICAgIGlmIChtX3JlYWNoZWRFbmRPZkZpbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzLDcgKzcxLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wgaW5jbHVkZVNl
cGFyYXQKICAgICBjaHVuay5jbGVhcigpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHdo
aWxlIChtX3NlZ21lbnRJbmRleCA8IG1fc2VnbWVudExlbmd0aCkgewotICAgICAgICAgICAgY2hh
ciBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4KytdOworICAgICAg
ICAgICAgYXV0byBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4Kytd
OwogICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0b3JbbV9zZXBh
cmF0b3JJbmRleF0pIHsKICAgICAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA+IDAp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
bV9zZXBhcmF0b3JJbmRleCA8PSBtX3NlcGFyYXRvci5zaXplKCkpOwpAQCAtMTEyLDcgKzEwMCw3
IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4m
IGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgIGlmICghbV9zZWdtZW50TGVuZ3Ro
KSB7CiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkZpbGUgPSB0cnVlOwogICAgICAgICAgICAg
aWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKQotICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZCht
X3NlcGFyYXRvci5kYXRhKCksIG1fc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAgICAgICAgIGNo
dW5rLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Q+KG1fc2VwYXJhdG9yLmRh
dGEoKSksIG1fc2VwYXJhdG9ySW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuICFjaHVuay5pc0Vt
cHR5KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjksNyArMTE3LDcgQEAgU3RyaW5nIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soYm9vbCBpbmMKICAgICByZXR1cm4gZGF0YS5zaXplKCkgPyBTdHJpbmc6OmZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgOiBlbXB0eVN0cmluZygp
OwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+
JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKK3NpemVfdCBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6cGVlayhWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0ZWRTaXplKQog
ewogICAgIGRhdGEuY2xlYXIoKTsKICAgICBpZiAocmVxdWVzdGVkU2l6ZSA8PSBtX3NlZ21lbnRM
ZW5ndGggLSBtX3NlZ21lbnRJbmRleCkgewpAQCAtMTQxLDcgKzEyOSw3IEBAIHNpemVfdCBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8Y2hhcj4mIGRhdGEsIHNpemVfdCByZXF1
ZXN0ZWRTaXplKQogICAgIGRhdGEuYXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVudEluZGV4LCBy
ZWFkQnl0ZXNDb3VudCk7CiAKICAgICBzaXplX3QgYnVmZmVyUG9zaXRpb24gPSBtX2J1ZmZlclBv
c2l0aW9uICsgbV9zZWdtZW50TGVuZ3RoOwotICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQgPSAwOwor
ICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBudWxscHRyOwogCiAgICAgLy8gTGV0J3MgcHJl
dGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgogICAgIC8vIEZJWE1FOiBUaGlzIGNs
YXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIGp1c3QgaXRlcmF0aW5nIHRoZSBzZWdt
ZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNzU2ZWVlMjQ2YjBlMmNhZTIwYzdlZTc3
NzllNjVjMGY4ZDczNDYzYy4uYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQxZTI1ZmQ0Yzc4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5oCkBAIC00OCwyNCArNDgsMjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2VwYXJhdG9y
KGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2Ugd2hlbiB0aGUgZW5kIG9mIHRo
ZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBk
YXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CisgICAgYm9vbCBuZXh0Q2h1bmso
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAK
ICAgICAvLyBSZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRoZSBidWZmZXIg
aGFzIGJlZW4gcmVhY2hlZC4KICAgICBTdHJpbmcgbmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExh
dGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKTsKIAogICAgIC8vIFJl
YWRzIHNpemUgYnl0ZXMgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gdGhlIGJ1ZmZlciwgd2l0
aG91dCBjaGFuZ2luZyB0aGUgYnVmZmVyIHBvc2l0aW9uLgogICAgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiBieXRlcyByZWFkLiBUaGF0IG51bWJlciBtaWdodCBiZSBsZXNzIHRoYW4gdGhlIHNw
ZWNpZmllZCBzaXplIGlmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB3YXMgcmVhY2hlZC4KLSAgICBz
aXplX3QgcGVlayhWZWN0b3I8Y2hhcj4mLCBzaXplX3QpOworICAgIHNpemVfdCBwZWVrKFZlY3Rv
cjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6CiAgICAgU2hhcmVkQnVmZmVyKiBtX2J1
ZmZlcjsKLSAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbjsKLSAgICBjb25zdCBjaGFyKiBtX3Nl
Z21lbnQ7Ci0gICAgc2l6ZV90IG1fc2VnbWVudExlbmd0aDsKLSAgICBzaXplX3QgbV9zZWdtZW50
SW5kZXg7CisgICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CisgICAgY29uc3QgdWlu
dDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGgg
eyAwIH07CisgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIGJvb2wgbV9yZWFj
aGVkRW5kT2ZGaWxlOwotICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvcjsKLSAgICBzaXplX3Qg
bV9zZXBhcmF0b3JJbmRleDsKKyAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBmYWxzZSB9
OworICAgIHNpemVfdCBtX3NlcGFyYXRvckluZGV4IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE1ZTYwZjIwNWNlZDJhNTY0ODlhNDc0ZjAxMTQ3MmI3
OThhNmMzNWMuLjQ1ZDE0YWQ5MDAzNzNhMjdiZjNiMmYzMzIzODIyZmU4ZjM0MTYyNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJ
bml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1
cm4ga2V5SWRzTWFwOwogCi0gICAgY29uc3QgY2hhciogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsK
KyAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRh
U2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5z
aWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtl
eUlkczsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0
byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKaW5kZXggZTFlNWMzMDQzNTZjMGFhOWQ5YzA1NDVkOTZhMzVhNjYzY2RiNzgz
ZS4uNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBA
IC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgIHNpemVfdCBidWZmZXJTaXpl
ID0gc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpOwogCiAgICAgICAgIGlmICghYnVmZmVy
LnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwogICAgICAgICBtX3BpeGVscyA9
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRh
KCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRS
ZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFyKCk7CkBAIC0yMDUsOSArMjA1
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEob3RoZXIubV9wcmVt
dWx0aXBseUFscGhhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYm
ICFpc092ZXJTaXplKG1fc2l6ZSkpOwotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyIHsgb3Ro
ZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OworICAgICAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9w
aXhlbHMtPnNpemUoKSB9OwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0
YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKICAgICBi
b29sIGluQm91bmRzKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMzZDg2MmI4ZGU4MzBmYmY4MmFl
MDZhNThiMTc2OGU3MTkuLjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2MyZjZhNjcxZTU5OTZhZDFmYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtNTYsNyArNTYs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1f
ZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEt
PmRhdGFBc1VJbnQ4UHRyKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IDFlMGQ4MGRmZTkxMTdiY2E5YTM5
NDI3ODUxOThmODM1MDZkZTM5MzcuLmJmOGMzMGZiZjFhZmI0MGViZmUwNDMxNzllM2E0NjNhMDlj
OWNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rvcjxj
aGFyPiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBj
b252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbnZlcnRlZEZvbnQuZGF0YSgpLCBjb252ZXJ0ZWRGb250LnNpemUoKSk7CiAgICAgZWxz
ZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggZWY1ZTVmYjll
MTM2NGFmNjc1N2U1MGY4YjhlZjE3MmJmYzBkNjE3OS4uZTRjYzVkYzFlZjQ5NWM2NTE4YTg1NDIx
MGRhZjU0Zjg4MWNiYzE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHNpemVf
dCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVy
LCBvZmZfdCBwb3NpdGlvbiwKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCi0gICAgY29uc3QgY2hhciogc291cmNlID0gc2hhcmVkQnVmZmVy
LT5kYXRhKCkgKyBwb3NpdGlvbjsKKyAgICBjb25zdCB1aW50OF90KiBzb3VyY2UgPSBzaGFyZWRC
dWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOwogICAgIHNpemVfdCBhbW91bnQgPSBzdGQ6Om1pbjxz
aXplX3Q+KGNvdW50LCBzb3VyY2VTaXplIC0gcG9zaXRpb24pOwogICAgIG1lbWNweShidWZmZXIs
IHNvdXJjZSwgYW1vdW50KTsKICAgICByZXR1cm4gYW1vdW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCAzYmE0YjhjOTBlYjBmMjE5MDdhNDI4ZTMz
N2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVkMDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzc0
LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgdGVtcG9yYXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAgICAg
bV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0aW9u
KTsKICAgICBlbHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0
YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0
T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEoYWRk
aXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNDUwY2RhMDM3NzdhODJl
NTQyNWI4ZmE4MWQyODcwZDVjM2I2MGQxYS4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFk
ODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoRlRfTG9hZF9T
Zm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFibGVTaXplKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YSh0YWJsZVNpemUpOworICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhKHRhYmxlU2l6ZSk7CiAgICAgRlRfVUxvbmcgZXhwZWN0ZWRU
YWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1NmbnRf
VGFibGUoZnJlZVR5cGVGYWNlLCB0YWcsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8RlRfQnl0ZSo+KGRh
dGEuZGF0YSgpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBl
eHBlY3RlZFRhYmxlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
aW5kZXggYTE2MWM0N2M1MGRiODI4NDdlNmZmMmQ2ODUyOGJkOGNjYzcyMmQ1MS4uMGRlYTgwZTJi
Y2E0NzhlZDRjMDJhZTFhMGIwNTY1NGI4NGQyOWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBj
b25zdAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAgICAg
IG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNy
ZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsK
ICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApp
bmRleCA0NDk4MzczNjYxYTdlYjA5OWZiOTg0NTZlOTRhNDFkODRhZGIxYzE2Li4xNzEzNWExNDFj
ZDZmYTJjZTZhODcyYzc3MzE5ZTQzM2IzODc2MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogCiB2b2lkIENE
TUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIE9wZW5D
RE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90
aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0
YUFzVUludDhQdHIoKSksCisgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1f
c2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8
dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKICAgICBjYWxsYmFjayghZXJyb3IgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAt
MzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBH
U1RfREVCVUcoInBhcnNpbmcgYnVmZmVyIG9mIHNpemUgJXp1IiwgYnVmZmVyLT5zaXplKCkpOwot
ICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhQXNVSW50OFB0cigpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgICAgIFN0cmluZ1ZpZXcgcGF5bG9hZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmdWaWV3PiB0eXBlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiOlR5cGU6IiksIDYpOwpAQCAtNDg2LDcgKzQ4Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFj
aygpCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7
Ci0gICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigp
LCBtZXNzYWdlLT5zaXplKCkpOworICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2Fn
ZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgY2hhbGxl
bmdlQ2FsbGJhY2sgOiBtX2NoYWxsZW5nZUNhbGxiYWNrcykKICAgICAgICAgY2hhbGxlbmdlQ2Fs
bGJhY2soKTsKICAgICBtX2NoYWxsZW5nZUNhbGxiYWNrcy5jbGVhcigpOwpAQCAtNTA3LDExICs1
MDcsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICBtX2luaXREYXRhID0gSW5pdERh
dGEoaW5zdGFuY2UtPmtleVN5c3RlbSgpLCBXVEZNb3ZlKGluaXREYXRhU2hhcmVkQnVmZmVyKSk7
CiAKICAgICBHU1RfVFJBQ0UoIkdvaW5nIHRvIHJlcXVlc3QgYSBuZXcgc2Vzc2lvbiBpZCwgaW5p
dCBkYXRhIHNpemUgJXp1IiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgR1NU
X01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNVSW50OFB0
cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiaW5p
dCBkYXRhIiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7CiAKICAgICBPcGVuQ0RNU2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxwdHI7CiAg
ICAgb3BlbmNkbV9jb25zdHJ1Y3Rfc2Vzc2lvbigmaW5zdGFuY2UtPnRodW5kZXJTeXN0ZW0oKSwg
dGh1bmRlckxpY2Vuc2VUeXBlKGxpY2Vuc2VUeXBlKSwgaW5pdERhdGFUeXBlLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksCi0gICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNVSW50OFB0
cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVy
U2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOworICAgICAgICBtX2luaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAw
LCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICgh
c2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIp
OwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAg
ICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9E
RUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAg
ICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4
UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1Q
KCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNj
ZWVkZWQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAg
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAg
aWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lv
bl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+ZGF0YUFzVUludDhQdHIoKSwgcmVz
cG9uc2UtPnNpemUoKSkpCisgICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0
eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKSkKICAgICAgICAgc2Vzc2lvbkZhaWx1cmUoKTsKIH0K
IApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAg
ICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVz
cG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygi
Z290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAgICAgICAg
ICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCks
IG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNz
YWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNl
UmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3Vj
Y2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBlODlmYjU5OTg2MjE1Yjlk
NWRhZTE3OWQyZDc1OWNlZjc0MTgxNDc2Li41OTY2YzNmMjU5NzAzMDA2MzZmZTU5MDliNDc2MzVk
MWYzNWM4MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihwb3NpdGlvbikgLSBidWZmZXIuZGF0YSgpOworICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocG9zaXRpb24pIC0g
YnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAv
LyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggYTAzZTcxYWIxYmMzYjFjYTUwN2NmMzhlMjc0MTg3
YmVjMGE5ZDE5MS4uNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYyM2FlMjRkNDBhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgZ2V0
RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBz
aXplX3QmIG92ZXJsYXlECiAgICAgb3ZlcmxheUxlbmd0aCA9IDA7CiAKICAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IGZvbnREYXRhLT5zaXplKCk7Ci0gICAgY29uc3QgY2hhciogZGF0YSA9IGZvbnRE
YXRhLT5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGZvbnREYXRhLT5kYXRhKCk7CiAKICAgICBF
T1RQcmVmaXgqIHByZWZpeCA9IGVvdEhlYWRlci5wcmVmaXgoKTsKIApAQCAtMzM0LDggKzMzNCw4
IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYg
ZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKICAgICAvLyBJZiBwb3NzaWJsZSwgZW5zdXJl
IHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9mIHRoZSBmdWxsIG5hbWUuCiAgICAg
aWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5ndGggJiYgbWVtY21wKGZhbWlseU5h
bWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewotICAgICAgICBvdmVybGF5U3JjID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnVsbE5hbWUpIC0gZGF0YTsKLSAgICAgICAg
b3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGZhbWlseU5hbWUpIC0g
ZGF0YTsKKyAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGZ1bGxOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJsYXlEc3QgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihmYW1pbHlOYW1lKSAtIGRhdGE7CiAgICAgICAgIG92ZXJsYXlM
ZW5ndGggPSBmYW1pbHlOYW1lTGVuZ3RoOwogICAgIH0KICAgICBlb3RIZWFkZXIuYXBwZW5kQmln
RW5kaWFuU3RyaW5nKGZ1bGxOYW1lLCBmdWxsTmFtZUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKaW5kZXggMGMwYzEzNzIwM2RmMzZjZjU3NTVmMTJmNDliOTU2MjM2MmYyNGM1Mi4uNzMz
NmEyMzUxY2E3ODhlYjY4OWEwMmVkZGUzMDc5ODAxY2EyYWU3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbgogICAgIERX
T1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7Ci0gICAg
ICAgIFZlY3RvcjxjaGFyPiBkYXRhKHNpemUpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwg
MCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCA9PSBzaXplKTsKICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDg0ZjM5
ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMuLjY0MjRjMDNjMzczYTU1YjQyOWE1
OTQxYzBhNDhmNmRlZmJmYjZjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0z
MTUsNyArMzE1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJbWFnZVR5cGUgSUNPSW1hZ2VEZWNvZGVy
OjppbWFnZVR5cGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBjb25zdCB1aW50MzJfdCBpbWFn
ZU9mZnNldCA9IG1fZGlyRW50cmllc1tpbmRleF0ubV9pbWFnZU9mZnNldDsKICAgICBpZiAoKGlt
YWdlT2Zmc2V0ID4gbV9kYXRhLT5zaXplKCkpIHx8ICgobV9kYXRhLT5zaXplKCkgLSBpbWFnZU9m
ZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247Ci0gICAgcmV0dXJuIHN0cm5jbXAo
Jm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0KSA/IEJNUCA6IFBORzsK
KyAgICByZXR1cm4gc3RybmNtcCgmbV9kYXRhLT5kYXRhQXNDaGFyUHRyKClbaW1hZ2VPZmZzZXRd
LCAiXHg4OVBORyIsIDQpID8gQk1QIDogUE5HOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDlhNDcwZWJhYTExYTEyODg1YjYwM2U1M2ZlOGE4NGYxM2M3NjM5ZGUuLmMx
MmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFiZDViYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIGJ5
dGVzVG9Vc2UgPSBkYXRhLnNpemUoKSAtIGJ5dGVzVG9Ta2lwOwogICAgICAgICBtX3JlYWRPZmZz
ZXQgKz0gYnl0ZXNUb1VzZTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyU2l6ZSA9IG1fcmVhZE9m
ZnNldDsKLSAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZywgbV9pbmZvLCByZWludGVycHJl
dF9jYXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDxjaGFyKj4oZGF0YS5kYXRhKCkgKyBieXRlc1Rv
U2tpcCkpLCBieXRlc1RvVXNlKTsKKyAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZywgbV9p
bmZvLCByZWludGVycHJldF9jYXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0
YS5kYXRhKCkgKyBieXRlc1RvU2tpcCkpLCBieXRlc1RvVXNlKTsKICAgICAgICAgLy8gV2UgZXhw
bGljaXRseSBzcGVjaWZ5IHRoZSBzdXBlcmNsYXNzIGVuY29kZWREYXRhU3RhdHVzKCkgYmVjYXVz
ZSB3ZQogICAgICAgICAvLyBtZXJlbHkgd2FudCB0byBjaGVjayBpZiB3ZSd2ZSBtYW5hZ2VkIHRv
IHNldCB0aGUgc2l6ZSwgbm90CiAgICAgICAgIC8vIChyZWN1cnNpdmVseSkgdHJpZ2dlciBhZGRp
dGlvbmFsIGRlY29kaW5nIGlmIHdlIGhhdmVuJ3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4
IDYwMzc1ZGU1YmNkY2I0NzZhZTBlZjQxNzVjZTcxYjFlMWQ2MTU1ZmYuLjA1NDQyOGQ1MGRjNjFh
YWFkNTE4ODc5ZDIyY2JjMmY5Nzc5MTUwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0x
MDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIp
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9
IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudC5oCmluZGV4IDlmNmRkODBmMjVhMWUwNjc1NWRhMWFjOTg3ZWFlODg5
ZGY5ZjI3NDIuLmRkMDVlZjBmYmQzZTczMDk3NDM1MDVhY2NjMDEwMTRlZjRkOWM1MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3Rh
dGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3Ry
aW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFy
Kiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3Io
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNpemVf
dCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0
aW9uLmgKaW5kZXggNDEyNDdmNjg0Zjc2MDkwYTZkMmJlMjUwYTU1ODg2NGNjZjA0MjE1Ny4uYzlj
OTNiYTYwMTE4ZjkxOWQxMTYwMjkzMmRhZTgzZDc5OTQ2N2ZiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyLCBSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTdHJpbmdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKFJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3Vu
dElzRGVjcmVhc2luZyhSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIHNpemVfdCkgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2suY3BwCmluZGV4IGQwMzAwNTM2ZWQ5MzBmYmY5YzIwMmJiOTcyNjEwZDRj
NWY4OWE4YzQuLjkzYmQ5NjJkNGRlYWQ0MDM5ZTVkMDE1NDdiNTU4MjA4ZDllZWVhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2s6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHN0cmluZykKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIHNpemUpOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRleCA0YTUxMDkyYmM0MWYyY2Y5ZjdmM2QwNGYyNzdh
NzVjMjk0ZTFjYWE1Li5lMDcwYmRiMTNlODcyNTg3YzUzZTA0ZjQ5NjE3ZmVkNTU5YTBhODliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2suaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0
cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkg
ZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBiNzdmOTAwNzgxOWZmZWMyOTViNjA1Mjk0OGFlOTk0
ZGFlMjQ2MWRmLi5jODdkODg4MDQzNzU5Nzk3MDcxMTlhZGE3MjI2YzI5MWE1MDhmOGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEzLDcg
KzQxMyw4IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigp
IGNvbnN0CiAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8Y2hhcj4+
KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgYXV0byBieXRlcyA9
IGZsYXR0ZW4oKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0ZXMuZGF0YSgp
LCBieXRlcy5zaXplKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2
NmYuLjY0MzZhYWM1OWQ4MzE4NGVlY2YxM2MyMDhhZGMxZTUwMzczZTNlYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VI
YW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YSho
YW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgp
OworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIGJ1
ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQppbmRleCA0MjE5YmI1M2MyMDU2OTc1M2IwYjE5MmMzYjkzZjFkNWFmN2Rl
ZTU2Li4wYjFmZDc0NWViYTJmNjFlZWNlNjFhMWNhNTgxMzFlZGVkZTlmZGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1UKIAogICAgICAgICAgICAgc2l6ZV90IGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVy
ID0gc3RkOjptaW4oYnVmZmVyVmlldy5zaXplKCksIHJhbmdlLmVuZCAtIGJ5dGVJbmRleCArIDEp
OwogICAgICAgICAgICAgYnl0ZUluZGV4ICs9IGJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyOwot
ICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6YnVmZmVyVmll
dy5kYXRhKCkgbGVuZ3RoOmJ5dGVzRnJvbVRoaXNWaWV3VG9EZWxpdmVyXTsKKyAgICAgICAgICAg
IFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOmJ1ZmZlclZpZXcuZGF0YUFzQ2hh
clB0cigpIGxlbmd0aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcl07CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJl
c291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggMDVkMTc3
MTc3NTFlMDBhNTJhNmEwNWViMDA2ZjdiNGMxN2YxZDRiYi4uZWJjZGIyZTBkZDliNDI4MGYyNTE1
NzNkYmE2YjViZDA2ZGZmZDViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgc3RvcE9u
RXJyb3IsIGJvb2wmIHNhd0Vycm9yKSBjb25zdDsKICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IGNo
YXIqLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGRlY29kZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiBlbmNvZGUoU3RyaW5nVmlldywgVW5lbmNvZGFibGVIYW5kbGluZywg
TkZDTm9ybWFsaXplID0gTkZDTm9ybWFsaXplOjpZZXMpIGNvbnN0OwogICAgIFZlY3Rvcjx1aW50
OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdCBmaW5hbCB7
IHJldHVybiBlbmNvZGUoc3RyaW5nLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVkRW50
aXRpZXMsIE5GQ05vcm1hbGl6ZTo6Tm8pOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggNjI5MWI2NDI0NjRmMjc1YjQ1M2JjYzll
NDBlMWM5ZmM1MDk5YTk2MC4uNGFlNDRlYWEwYjAwODA1MGY4ZTA1YTMxNzgxYjdiNDA5OWQzMjRl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAKQEAgLTUwLDkgKzUwLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBEV09SRCBs
YXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIAogICAgIGlmIChieXRlc1RvUmVhZCAhPSBJTlZB
TElEX0ZJTEVfU0laRSB8fCBsYXN0RXJyb3IgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgVmVjdG9y
PGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7Ci0gICAgICAgIGlmIChS
ZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVh
ZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQorICAgICAgICBpZiAoUmVhZEZpbGUo
ZmlsZUhhbmRsZSwgKExQVk9JRClidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVh
ZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQogICAgICAgICAgICAgcmVzdWx0ID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxl
ICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExh
c3RFcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4
IDAwOTRmNDdkNDY0MDFkNTlhY2I4NWY3NjU0M2RhNjJkNzM4YzBmZTYuLmVjYjZiYWUxNjg5NTYx
NjdmNjFmYWYzZGNhMjkzNjQ2Y2RjYWQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0lt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgQVNTRVJUKGxv
YWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhh
dmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOwog
ICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJM
KCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50Ci0gICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCkt
PnNpemUoKSk7CisgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS5hZGREYXRhKGRhdGEoKS0+ZGF0YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7CiAgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAg
ICAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4
IDU3ZWU1ZGVkMjRiZGEyNzVlNTg2YmRmNjEzMmE1MjQ1NWFiYWNjOTYuLmRmOGFiZTQyNmUwNjcx
NzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB4bWxEb2NQdHIg
ZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAKICAgICAgICAgLy8gV2UgZG9uJ3Qg
c3BlY2lmeSBhbiBlbmNvZGluZyBoZXJlLiBOZWl0aGVyIEdlY2tvIG5vciBXaW5JRSByZXNwZWN0
cwogICAgICAgICAvLyB0aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMu
Ci0gICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRh
KCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwg
MCwgb3B0aW9ucyk7CisgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEg
PyBkYXRhLT5kYXRhQXNDaGFyUHRyKCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0aW9ucyk7CiAKICAgICAgICAgeG1sU2V0U3RydWN0
dXJlZEVycm9yRnVuYygwLCAwKTsKICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAppbmRleCAxZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5
NzhmLi4xZmRlMmU4ZDYwMzUzNDI2ZGJiNmRkZjMyMzhlNzYxMzU3NTI4N2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCkBAIC0zNTksNyArMzU5LDcgQEAgc3RhdGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciop
CiBjbGFzcyBPZmZzZXRCdWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIE9mZnNldEJ1ZmZlcihWZWN0b3I8Y2hhcj4gYnVmZmVyKQorICAgIE9mZnNldEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKQogICAgICAgICAsIG1fY3VycmVudE9mZnNldCgwKQogICAgIHsKQEAgLTM3Nyw3
ICszNzcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxjaGFyPiBt
X2J1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9j
dXJyZW50T2Zmc2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oCmluZGV4IGMzZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIx
YTcuLjdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCi0gICAgY29uc3QgY2hh
ciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51
bGxwdHI7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6
IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA0YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2Nk
MTBmZGY3MmY2Li5jYmQwNGQ5OWI3YzI3MTY3MWM4NzUyYjE4YTkyZTQyMTU4NTZjOWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0CiAKIHZv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIG1fcGx1Z2lu
LT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPnN0cmVhbURp
ZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCBzdHJlYW1JRCkKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJgog
ICAgIGlmIChtX3BsdWdpbkNhbmNlbGVkTWFudWFsU3RyZWFtTG9hZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1
Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNo
TG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0
aWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4
IGM3ODBiYzRmODExYWY4ZmIzODdmYjBkMjJjN2ZkZTRmMWQxMzYwODkuLmU1YWE3MGNkMGMyZDc3
ZWIyYjhiN2U0YzllOTE2Yjg2ZGJlOWU2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNp
c3RlbmN5VXRpbHMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgd3JpdGVUb0Rpc2soc3RkOjp1
bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4mJiBlbmNvZGVyLCBTdHJpbmcmJiBwYXRoKQogICAgIGlm
IChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBhdXRv
IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+
ZGF0YUFzQ2hhclB0cigpLCByYXdEYXRhLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OnVubG9j
a0FuZENsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyYXdEYXRhLT5zaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRi
MTAxZWE5NDYwMTQxOWUxNy4uNmMyNzc0NDk2NDMzOGNkYWE1YzgyNzMzMmI3ZGFhNWIwNWM4ZTcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0zMDYxLDcgKzMwNjEsNyBAQCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0
cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICBy
ZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50
ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVt
b3J5ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRh
dGEoKSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3Rf
Y2FzdDx1aW50OF90Kj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYw
ZWM4YzgzOGE4NzA4MTcwZTFmMmM2OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJj
OWUyOGI3Nzk4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21w
bGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlm
IChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYg
KG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50
OFB0cigpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29t
cGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAg
ICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjk0ODk2Yzk5N2E0
OTQwZGJhYjJkYTc2NTc4MjBhMjc4YWYxZGM2YS4uOTljYTFkODhiODMyYjBmYTNkNGM3MmYxNTVi
MzZkZGQ1YTFjM2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRh
TGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAg
ICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVm
ZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IGQwY2I3OWU1ZDFlNjVmOGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4NDFhOGYzYjY5
NmFjZDVkMWE5MjQwZDdkMWI1MTNlYjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5
IEBAIE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVl
KERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hh
bm5lbF0oYXV0byYgdXRmOFN0cmluZykgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwg
dXRmOFN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2Fn
ZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNl
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1
dGY4U3RyaW5nLmxlbmd0aCgpIH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfSwgWyZj
aGFubmVsXShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBj
aGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5h
cnksIGRhdGEsIGJ5dGVMZW5ndGgpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3Nh
Z2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxlbmd0aCB9IH0s
IGJ5dGVMZW5ndGgpOworICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVz
c2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5j
ZSB7IGRhdGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxd
KEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0
aWNfY2FzdDxpbnQ+KGV4Y2VwdGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0
cmluZygiRmFpbGVkIHRvIGxvYWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDQ5OWRhMThk
MTc0ZmU3ODkyOGI4NzNjYTcyY2I3ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3
NDIyNGZkMWIyODAwNGNhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXI6OnNlbmREYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKIHsK
ICAgICBpZiAoYXV0byogc291cmNlID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291cmNlSWRlbnRp
ZmllcikpIHsKICAgICAgICAgaWYgKGlzUmF3KQotICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKTsKKyAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0
YShDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpKTsKICAgICB9CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXI6OmNoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGkKIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgYm9vbCBp
c1JhdywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiBidWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJp
bmcgdGV4dDsKICAgICBpZiAoaXNSYXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJl
Y2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAgICAgcG9zdFRh
c2tUb0hhbmRsZXIoaGFuZGxlcklkZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdURk1vdmUodGV4
dCkuaXNvbGF0ZWRDb3B5KCksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0byYgaGFuZGxl
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIGhhbmRsZXIuZGlk
UmVjZWl2ZVJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEo
KSksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0
YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaGFuZGxlci5kaWRSZWNlaXZlU3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICB9KTsK
QEAgLTIzMCw5ICsyMzAsOSBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVt
b3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJl
Y2VpdmVEYXRhIHsgaWRlbnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5n
dGgoKSB9IH0sIDApOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVt
b3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KQordm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rp
b246OmRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5
OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplICB9IH0sIDAp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgZGF0YSwgc2l6ZSAgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVycm9yKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdjNTU0ZmRiMTVl
ZTIzOWRlNjJiMzUwY2UuLmY4YzA1ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFlZGEwYTczNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFN0YXRl
KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNy
ZWFzaW5nKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4OTkwOTMyYzQz
ODJiYjYxZmYwMDQ5ODRjNGIzOTkwZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4NDUzMzExY2Yz
MWNiZjJiODVjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTIx
OSw3ICsyMTksNyBAQCBzdGF0aWMgTlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9vbCBpc0ZpbGUs
IGNvbnN0IGNoYXIgKmJ1ZmZlciwgdWludDMyX3QgbGVuZ3RoLAogICAgICAgICBpZiAoIWZpbGVD
b250ZW50cykKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAg
ICAgICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAgIHBvc3RCdWZm
ZXIgPSBmaWxlQ29udGVudHMtPmRhdGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9zdEJ1ZmZlclNp
emUgPSBmaWxlQ29udGVudHMtPnNpemUoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIE5QQVBJ
IHNwZWMgc3RhdGVzIHRoYXQgdGhlIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVyZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAppbmRleCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2
MjZmNDVjLi4wOTBkNWE0MGNlYmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
bjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlc3AKICAgICAgICAgcGx1Z2luU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwog
fQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1
Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAK
QEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludAogICAgIG1fbWFudWFs
U3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFz
dE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRl
ZCk7CiAgICAgQVNTRVJUKG1fc2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCmluZGV4IDI0NzQ5MTQ2ZDkwZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNjZjIuLmE1ODJi
NjY1MmZhNTAxZDZlNzdkYzI0MjkwNmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aApAQCAtMTk1LDEyICsxOTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5k
UmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBV
UkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVh
bURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBv
dmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQp
IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4
IDJhNjAxY2MwOGI0MGU3NWY5YWUxOGE2MjVhODJjMjYxZmZkN2MyN2UuLmU5MThmODkyYjdiZTA4
MDU2MTRhZWU0OWViZTI5M2EzMjIwMWUwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHMKICAgICBz
dGFydChyZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1l
LCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgLy8gRGVsaXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVzZSB0aGUgcGx1
Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUu
CiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVh
bShjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmlu
ZywgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGRlbGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgpLCByZXN1bHRD
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihyZXN1bHRDU3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkp
OwogICAgIHN0b3AoTlBSRVNfRE9ORSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpzdGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5n
LCB1aW50MzJfdCBzdHJlYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTI2MCw3ICsy
NjAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKCkK
ICAgICB9CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxl
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7
CiAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlICYmIG1fZmlsZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVt
cG9yYXJ5IGZpbGUuCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQgPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOworICAgIGlu
dCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNv
dW50ICE9IGxlbmd0aCkgewogICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdo
ZW4gd2UgYXJlIG91dCBvZiBkaXNrIHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KICAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaAppbmRleCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4N2Q0M2U1MjFmMDg5
OTIzYWJlLi45YjA3MDk5ODg0NzIwNDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYyOWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBy
ZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3Ry
ZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKGJvb2wg
d2FzQ2FuY2VsbGVkKTsKIApAQCAtNzMsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2Fu
Y2VsKCk7CiAgICAgdm9pZCBub3RpZnlBbmREZXN0cm95U3RyZWFtKE5QUmVhc29uKTsKIAotICAg
IHZvaWQgZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZv
aWQgZGVsaXZlckRhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZv
aWQgZGVsaXZlckRhdGFUb1BsdWdpbigpOwotICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogCiAgICAgUmVmPE5ldHNjYXBlUGx1
Z2luPiBtX3BsdWdpbjsKICAgICB1aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDZjZGJlZGNkMDg1
NzJlMGI2NTk5ODU0M2ZkZjQyZjI1ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMwNmQwZmZkODJhY2M4
MmYyOGIwOWNmZTAyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKQEAgLTE3NiwxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcm
IHJlc3VsdCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
aW50IHJlc3BvbnNlU3RhdHVzKSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0
X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAg
Ym9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2
Niw3ICszNjYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBjMDJmODQwYzQwNzQ4MDFiZDg3NGY2Y2Y4
MzJlOTdiODg0MWY1YzQ5Li4xNTEzZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2NiYmQwNzExZjdkMmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJl
YW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAg
fQogfQogCi12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgY291bnQpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdp
bikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBQREZQbHVnaW46
OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW0KICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVl
c3QtPmFkZERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGNvdW50
KTsKKyAgICByZXF1ZXN0LT5hZGREYXRhKGRhdGEsIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE2ODQsMTQgKzE2
ODQsMTQgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQg
PSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVn
aW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJl
YW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAg
ICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENG
RGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCks
IGJ5dGVzLCBsZW5ndGgpOwogICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiB9CiAKQEAg
LTE3MjksNyArMTcyOSw3IEBAIHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3Ro
KHVpbnQ2NF90IHRhcmdldExlbmd0aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9k
YXRhLmdldCgpLCB0YXJnZXRMZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQ
bHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQordm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAg
ICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBkM2M3YWM3MDUxMWZjNzJjODcw
ODRiOGEzNzRmOWQ2YzcyNjg1OWIwLi4xMzU1Y2ZmNGViNzdmNmY3MTdkYjkyMGUyMTQwNThmYzE2
YjJmZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAt
MTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVj
ZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1p
biB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7CkBAIC0xODcsNyAr
MTg3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFt
IGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhh
cyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwCmluZGV4IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYyMzg3MGE2MDllMzM5
MzlhY2YuLjljZWQ3ZGEwNzUwMmY2MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTMz
MCw5ICszMzAsOSBAQCB2b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9ucwogICAgIG1fY29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZShzdHJlYW1JRCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVh
bUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbklu
c3RhbmNlSUQpOwogfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVh
bUlELCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
Ynl0ZXMpLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJl
YW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5n
dGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFt
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5ICszNTAsOSBAQCB2
b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgdWludDMyXwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShyZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZp
ZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKLXZv
aWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJ
RCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVm
ZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQ
bHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAwMDhjMjAyMTZkZTVi
N2ExOTdmMWYyNDI0YTEyZTU2MTJjNmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgxNjhkZDNhNzM4ZmVk
MmIwZGMwNzE0NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKQEAgLTg3LDExICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZh
bHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCBy
ZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWls
KHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiNjRhY2FiZGY3NTNhYTg5ZTdiNzBlNGQ1NmU1
NWQ3NzBlZDMyMDIxLi4zYTA5NjgzZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMwNzY4NDA3YTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1M
b2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBsdWdpblZpZXc6
OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRE
YXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmls
ZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
bV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwg
Ynl0ZXMsIGxlbmd0aCk7CiB9CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5
cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBi
ZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCA4MjhkMzBhMDZlOWQ4ZmRkNzhiNTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40YTFmNWFjNTdhOWQ3
NzU0ZTY0MDc4ZjdkYTQyYjU3NmEzMzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwgbV9wbHVn
aW4tPmlzQmVpbmdEZXN0cm95ZWQoKTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7Cisg
ICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2
b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0
ODFkNTBiOTMxOGU0ZWU2MjEwMi4uMTc2NzRkZjAyYzMyYTEzZWRhODUwNmUyNzBkZmQ3NjM3MDM1
MGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTY5LDcgKzExNjks
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1
Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9w
bHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAwMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3
ZDhiYjZhNWJiLi4yYWMyNWRjZDM5ZTQ4MGRmOTM2YzZhZWI3OWVjMjBhZmVjMmQ0NDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGViCiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KLSAgICBWZWN0
b3I8Y2hhcj4gb3ZlcnJpZGVCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVm
ZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3Zl
cnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlw
ZSwgb3ZlcnJpZGVCdWZmZXIpKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAppbmRleCBjNTM2MjVhMTg4MzhmZDBkMjczZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4x
NTIwMGVjZDkxOTI2OGMzNDA3ZDkxOWMwNjY3MThjOTMyNDYxNGRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogCiAg
ICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQppbmRleCA1N2FhNGE4MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4w
ODYxNWU0OWY1MTMwM2E0ZjU5Y2FkMDUzOWNmZmU3ZDlhMDViMGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBs
b25nIGxvbmcgZXhwZWMKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KFtoZWFkZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBs
ZW5ndGhdKTsKIH0KICAgICAgICAgICAgICAgICAgICAgIAotdm9pZCBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgX1dL
UEhTdHJlYW1EaWRSZWNlaXZlRGF0YShtX2luc3RhbmNlLT5ob3N0UHJveHkoKS0+cG9ydCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+cGx1Z2luSUQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RyZWFtSUQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihieXRlcyksIGxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihieXRlcykpLCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBIb3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0K
aW5kZXggNzU0MjY5MzgxMmU3OGI3Zjg5YThlMzQ0MDM3MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNl
ZjhjMDZhY2M5ODhhYTI0YWI4ODI3YTM5OGY1YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2lu
UmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltKU0RhdGEgbGVuZ3RoXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgc3RyZWFtLT5zdGFydFN0
cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVj
ZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pT
RGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwog
ICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDc2MTE3MWNlYTdjYTVmYTY3Mjhj
OWRjMDBkMmViN2IyZDE4Zjc3ODAuLjY0YzI3N2I1ZjQzZDE1MWJkYTQxNWJlYzliNTlkNWYzY2Nm
YzA4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUx
OSw3ICs1MTksNyBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVj
ZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAo
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0qIG1hbnVhbFN0cmVhbSA9IF9wcm94eS0+bWFudWFs
U3RyZWFtKCkpCi0gICAgICAgIG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAg
ICBtYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5W
aWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCmluZGV4IDJiYzk3OGQzNDAzZjczZjFjMDYzZGYyNTIzNDNjNWI4M2Vj
MTMwNmMuLjE5MzkwYjVjMDJhNzVmNzlmOTY2ZjgxYTQxYTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveVN0
cmVhbVdpdGhFcnJvcihOU0Vycm9yICopOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBt
YWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciopIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggZjg4OTBk
MDUxNmIyMTJhY2ZlNzY5NjY0MjVkZTU0NDEwNGM5YTY5NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMy
NjkxNTgxNGU1NjYyMGM5NTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTEsNyArNjEx
LDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciopCiAgICAgZGVzdHJveVN0cmVhbVdpdGhSZWFzb24oTlBS
RVNfRE9ORSk7CiB9CiAKLXZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCit2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0
ZXNOb0NvcHk6KHZvaWQqKWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KaW5kZXggMzNiYTU3YzE1NWYxOGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5
NWU5Yy4uYThhMmVlODE3MWEyZGI4ZDgyYzhiYjA1YTk5ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0KQEAgLTEwNTEsNyArMTA1MSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3
ICopcGx1Z2luVmlldyByZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICB9CiAKICAgICBp
ZiAoX21hbnVhbFN0cmVhbS0+cGx1Z2luKCkpCi0gICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJl
Y2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2Rh
dGEgbGVuZ3RoXSk7CisgICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsK
IH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJy
b3I6KE5TRXJyb3IgKillcnJvcgpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgLSAodm9pZClldmFsdWF0
ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1
ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICAKICAgICAg
ICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAg
ICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtK
U0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNl
aXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBb
SlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ0N2UxNmIyYTRmYjAyOGU0OGM4NDA5ZTg2OGNhNzIzODRlYWEwOWIuLmNiOTQ1MzRjMjdi
ZWEyZDZlOGVhN2FlZGQwMWZkYWVmMTE0ZTU1ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQnVmZmVyKToKKwogMjAy
MS0wNi0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzgzNTYuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlYzdkMTE5ZWE4MTli
MDE5OWE4NzNmMDIwNzY2ZDQxOTIwMWFjMmEuLmVhNzMyYThlMGUwYzI2YzlkOTBhMTIzNTk0MGFj
ZGU1N2UyMTYzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
dHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewotICAgIFZlY3RvcjxjaGFyPiB2
ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMSgweDQwMDAsICdi
Jyk7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjIoMHg0MDAwLCAnYycpOworICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
MSgweDQwMDAsICdiJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycp
OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IxKSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQog
Ci1zdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZm
ZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQorc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBl
eHBlY3RlZCkKIHsKICAgICAvLyBleHBlY3RlZCBpcyBudWxsIHRlcm1pbmF0ZWQsIGJ1ZmZlciBp
cyBub3QuCiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihleHBlY3RlZCk7CkBAIC0xNzEsOSAr
MTcxLDkgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHAKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3RvcjxjaGFyPiBzMSA9IHsnYScsICdiJywgJ2Mn
LCAnZCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAg
IFZlY3RvcjxjaGFyPiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OworICAgIFZlY3Rvcjx1aW50
OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9
IHsnZScsICdmJywgJ2cnLCAnaCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdq
JywgJ2snLCAnbCd9OwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CkBAIC0yMDAsNyArMjAwLDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewotICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0
b3I8VmVjdG9yPGNoYXI+PiYmIGNvbnRlbnRzKSB7CisgICAgYXV0byBtYWtlQnVmZmVyID0gW10g
KFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQg
OiBjb250ZW50cykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkp
OwpAQCAtMjA5LDcgKzIwOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8p
CiAgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsK
ICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZm
ZXIxLT5hcHBlbmQoVmVjdG9yPGNoYXI+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CisgICAgYnVm
ZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAg
IEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2Qn
LCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVy
KHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
fSwgeydjJywgJ2QnfX0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywg
J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7CkBAIC0y
MTksNyArMjE5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewotICAgIFZlY3RvcjxjaGFyPiB0
MSA9IHsweDExLCAweDUsIDB4MTJ9OworICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAw
eDUsIDB4MTJ9OwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZl
ci0+dG9IZXhTdHJpbmcoKTsK
</data>
<flag name="commit-queue"
          id="452059"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430576</attachid>
            <date>2021-06-04 07:45:13 -0700</date>
            <delta_ts>2021-06-04 08:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604074512.patch</filename>
            <type>text/plain</type>
            <size>143700</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2Ji
YzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAuLmYxZjQyMTI3ZGU1MjA5YTU4ZTdjNjYzZTkyMzhhMGE4
Nzk3YmIxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQg
d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKTsgLy8gRklYTUU6IFNob3VsZCB1c2UgYGNvbnN0IHVpbnQ4X3QqYC4KIC8vIFJldHVybnMg
bnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3
aXNlLgotV1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8v
IEZJWE1FOiBTaG91bGQgdXNlIGB1aW50OF90KmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9k
ZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBl
ZGE1MWQwZmU1ZGQ1NTRjYTg0OWNkNjdkN2EwMjhmZDEwMzEyZmI3Li40ODM2ZDI4MTNmZTc0YjEy
YTJlZDBhMDVhYmM5OTk5NWZkYjkwYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVk
QnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2Nv
bnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlw
ZSgpLCBzaGFyZWRCdWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwg
b3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxp
a2Ugd2UgZG8gb3RoZXIgYmxvYnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDU1Zjc5YjcwN2NmMTY5Yzc4NjMwOWEzNTRi
ZTFjNTdjYzczZDAyNTAuLmYxODNjYjg4MjMwNWYxZDMyOWI5MDg3M2FmYjRiYzllNTM2NjQzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWltZVR5cGU+
IHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIH0KIAogLy8gaHR0cHM6
Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keS1wYWNrYWdlLWRhdGEKLXN0YXRp
YyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQorc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1E
YXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBw
YXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIqIHBhcnQsIHNpemVfdCBw
YXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0ocGFydCwgcGFy
dExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwpAQCAtMTk0LDEzICsxOTQsMTMgQEAgc3RhdGljIFJl
ZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnMKICAgICAgICAgY29uc3QgY2hhciogY3VycmVudEJvdW5kYXJ5ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShkYXRhLCBsZW5ndGgsIGJvdW5kYXJ5LmRhdGEo
KSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgaWYgKCFjdXJyZW50Qm91bmRhcnkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgY29uc3QgY2hhciogbmV4dEJvdW5kYXJ5
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShjdXJyZW50Qm91bmRhcnkgKyBib3Vu
ZGFyeUxlbmd0aCwgbGVuZ3RoIC0gKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0g
ZGF0YSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKKyAgICAgICAgY29uc3Qg
Y2hhciogbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShjdXJy
ZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVuZ3RoIC0gKGN1cnJlbnRCb3VuZGFyeSAr
IGJvdW5kYXJ5TGVuZ3RoIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpLCBi
b3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91
bmRhcnkpIHsKICAgICAgICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkg
KyBib3VuZGFyeUxlbmd0aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRh
cnlMZW5ndGggLSBzdHJsZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJy
ZW50Qm91bmRhcnkgPSBuZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVu
Z3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91
bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCwgbGVuZ3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5
TGVuZ3RoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1pbWVUeXBlICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnR5cGUsICJhcHBsaWNhdGlvbiIpICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnN1YnR5cGUsICJ4LXd3dy1mb3JtLXVybGVuY29kZWQi
KSkgewogICAgICAgICBhdXRvIGRhdGFTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGxl
bmd0aCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5k
RGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01TdHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0
Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0
YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRh
ID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBkYXRhLCBsZW5ndGgpKQog
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+Pigq
Zm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlw
ZUVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggOWU2ZGJiOGFmYWM3NDJmNGMyNDhhZjU5NTlhYjE4Nzc3ODVmM2MwMC4uMGI0
YWJmY2NiNTY0ZDdjYTQ4NTk4ZmY5YmU3ODcxNGJmNzlhMGRmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hsaWdodC0+ZGF0YUFzVUludDhQdHIo
KSksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihoaWdobGlnaHQtPmRhdGEoKSks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXgg
ZTgzY2RkNzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5
MzFkMTFjNzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6
ZGF0YUZyb21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRo
cmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVm
ZmVyLnNpemUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0
ZSh7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6
SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODky
NWU0NzliNWU0MzYuLmI3Zjc3N2E0MDNiZTgxZDA4Yzg2NzNlZjRmY2ViZDY5ZGE4MmQ4MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTI4NCwxMSArMjg0LDEyIEBAIHN0YXRpYyB2b2lk
IGVuY29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CisgICAgLy8gRklYTUU6IFVzZSBWZWN0b3I8dWludDhfdD4gYW5kIHBhc3MgaXQg
ZGlyZWN0bHkgdG8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS4KICAgICBWZWN0b3I8Y2hhcj4gZGF0
YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0
YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3Qg
dWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmNwcAppbmRleCA4NmFmY2RiYjc2YzBhMmZmNTJhOGYxNTQzMGIxMzliZGJmZDYwZDVhLi5h
ZDllNDQ5OTYxYzg1NDViMjBkZDdmM2ExOGMwMWRiN2RmZDRhMmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAt
MjE0LDcgKzIxNCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVTdHJpbmdEYXRh
KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUodGV4dCkpOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZl
UmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgUlRDRGF0
YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5h
cnlUeXBlOjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IDZkZmMxMDU2MThlNDI2ZTQwMDE1NzZkNDIwNWUwNTAx
NzZkYTAwZDQuLjhmOGY3NTM3NTY3ZmVkNWZkZTE3YTc3ZjhlNTQ3MDg4NDZhZTVhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudCBBUEkKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5u
ZWxTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWREZXRlY3RFcnJvcigpIGZpbmFsOwogICAgIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IDQ2ZWY2ZjhiMGJjZTYyOTJiOWEwOWFkMTE1ZTJj
NGZjYmRkZWUyYmUuLmU3YzIxYWVmNWIzMDUxM2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9p
ZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVTdHJpbmdEYXRhKFN0cmlu
ZyYmIHRleHQpCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogfQog
Ci12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlcjo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiB7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIHNpemUpOwogfQpAQCAt
MTA0LDcgKzEwNCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3Ry
aW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFtX2lz
UmVhZHlUb1NlbmQpIHsKICAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKE1lc3NhZ2Ug
eyB0cnVlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKSB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGNhMWRjZGJjMWNlOTVmMjU4NDdkYmJkOTZlZmRiYzBi
ZDhkNGQxYTEuLmJlYmVhNGRjNzNlZjRhN2M4Y2NlMzllOWNiODUzZWM0YjFlNTI3NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5u
ZWxTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShT
dHJpbmcmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
RGV0ZWN0RXJyb3IoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNE
ZWNyZWFzaW5nKHNpemVfdCk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBS
VENEYXRhQ2hhbm5lbEhhbmRsZXIKICAgICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgZmluYWw7CiAg
ICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5h
bDsKIAogICAgIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBtX3JlbW90ZUlkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKaW5kZXggMWQ2ZWZmMDVhYTQ1ZDYxM2E2NWQ3MjU2
ODFhNGQ3MDQ4ZDYyMGQxNy4uMzMyNDk5ZDAxZTM1ZTU2Y2NkNGU3N2Q1NjUwMjFmNzA4NDg1OGJm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgflJUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKCk7CiAKICAgICB2b2lkIHNlbmRT
dHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpIHsgbV9oYW5kbGVyLT5zZW5kU3RyaW5nRGF0
YSh0ZXh0KTsgfQotICAgIHZvaWQgc2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpIHsgbV9oYW5kbGVyLT5zZW5kUmF3RGF0YShkYXRhLCBzaXplKTsgfQorICAgIHZvaWQg
c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgbV9oYW5kbGVy
LT5zZW5kUmF3RGF0YShkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgY2xvc2UoKSB7IG1faGFuZGxl
ci0+Y2xvc2UoKTsgfQogCiBwcml2YXRlOgpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAg
IC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudAogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlT
dGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlk
Q2hhbmdlUmVhZHlTdGF0ZShtX2lkZW50aWZpZXIsIHN0YXRlKTsgfQogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEobV9pZGVudGlmaWVyLCB0ZXh0KTsgfQotICAgIHZvaWQgZGlk
UmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9
CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmll
ciwgZGF0YSwgc2l6ZSk7IH0KICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmluYWwgeyBtX2Nv
bm5lY3Rpb24tPmRpZERldGVjdEVycm9yKG1faWRlbnRpZmllcik7IH0KICAgICB2b2lkIGJ1ZmZl
cmVkQW1vdW50SXNEZWNyZWFzaW5nKHNpemVfdCBhbW91bnQpIGZpbmFsIHsgbV9jb25uZWN0aW9u
LT5idWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhtX2lkZW50aWZpZXIsIGFtb3VudCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggYzc0ZTRjMDlmOWYwNGJmMDI5MWNhMTNlYzEwNjg3NmE1YzEzOTY4My4uZDFlOGU0YmJjZjEz
ZWI3M2EwMGZhYWZhMWZhYjk0ZWM5ZTI0MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcm
IHV0ZjhUZXh0KQogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCkpLCBmYWxzZSB9KTsKIH0K
IAotYm9vbCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICByZXR1cm4gbV9jaGFubmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcihkYXRhLCBs
ZW5ndGgpLCB0cnVlIH0pOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJiBidWZm
ZXIpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpEYXRhQnVmZmVyPiBwcm90ZWN0ZWRC
dWZmZXIobmV3IHdlYnJ0Yzo6RGF0YUJ1ZmZlcihidWZmZXIpKTsKICAgICBwb3N0VGFzayhbcHJv
dGVjdGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBidWZmZXIgPSBXVEZNb3ZlKHByb3Rl
Y3RlZEJ1ZmZlcildIHsKLSAgICAgICAgY29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci0+ZGF0YS5kYXRhPGNoYXI+KCkpOworICAgICAgICBjb25z
dCB1aW50OF90KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
LT5kYXRhLmRhdGE8dWludDhfdD4oKSk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAg
ICAgICAgICAgIHByb3RlY3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVy
LT5zaXplKCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRm
ZTE4Y2FmYTEuLjJiZTMxMjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3
ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAg
IHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNv
bnN0IENTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBz
aXplX3QpIGZpbmFsOworICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRh
Q2hhbm5lbE9ic2VydmVyIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggZDNhM2IwMDY2NGQ2ZGZlODVhZTJiOTAyNmZlZWUyYzk3NjQwNmEyOS4uMWU4YzIx
YWIwOWRiYjcyY2ZhZmQ4ZjE4ZmY1MGZjZjgyMjViNjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0Zv
bnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdG
b250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
b3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAg
ICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RG
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUob3RmRm9udC0+ZGF0YSgpLCBvdGZGb250LT5z
aXplKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAg
ICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3Vt
ZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDQyZjIy
YjQ2ZmMwNGE0NDZjOGM3ZTNhYzhkOTI0MDg0MmJkNDBmMjUuLmUxZWY0YWI5NDM2NjM4YTM0MzYz
NzUyNDY5NjYzMTQ1ZDg3NDdhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0CiAgICAgLCBtX3NpemUoYnVmZmVyLnNp
emUoKSkKIHsKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsKLSAgICBibG9iUGFydHMu
YXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhQXNVSW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0p
OworICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSB9KTsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwo
KTsKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5h
bFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA4ZGZkZDgzNTNiZjdkYmNhMjI1
ZWJlZDgxOTIzZGM4NzI1M2ZkOThmLi43ZmNiM2VlMjcyMjNmZGUyNTk0NjdkNzY4ZjhiNzM3MmRm
MTAyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKENTdHJpbmcm
JiB1dGY4KQogdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKGNvbnN0IEpTQzo6QXJyYXlC
dWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCiB7CiAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpOworICAgICAgICBh
dXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgp
KTsKICAgICAgICAgbV93cml0ZVJhd0RhdGEoZGF0YSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgTmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGNvbnN0IGF1dG8mIHJlc3VsdCA9IGxvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKSkg
ewotICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICBtX3dyaXRlUmF3RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRh
KCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKGVycm9yQ29kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDNhZTY2NTI2Y2MxOGI5MjE0ZGYwNTU3
NjhlNDU2MzRkOTAwZTBhY2MuLjVlZTY0NWZiZWMzM2U5Y2VkMzU0MDI1OGFhNjAyN2U3Mzg1OGY1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE5ldHdv
cmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGlj
OgogICAgIHVzaW5nIFdyaXRlU3RyaW5nID0gRnVuY3Rpb248dm9pZChjb25zdCBDU3RyaW5nJiB1
dGY4KT47Ci0gICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVuY3Rpb248dm9pZChjb25zdCBjaGFy
Kiwgc2l6ZV90KT47CisgICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVuY3Rpb248dm9pZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KT47CiAgICAgZW51bSBjbGFzcyBDb250aW51ZSB7IE5vLCBZZXMg
fTsKICAgICB1c2luZyBQcm9jZXNzRXJyb3IgPSBGdW5jdGlvbjxDb250aW51ZShFeGNlcHRpb25D
b2RlKT47CiAgICAgTmV0d29ya1NlbmRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV3Jp
dGVTdHJpbmcmJiwgV3JpdGVSYXdEYXRhJiYsIFByb2Nlc3NFcnJvciYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGE3Nzg4
NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1YjgxMmQ0ZjA0NzIyOWQ3
NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBAQCBzaXplX3QgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKIH0KIAotdm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBpZiAoIW1fZGF0YUJ1ZmZl
cikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCdWZmZXJSZXNvdXJjZURh
dGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSYgcgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK05ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJj
ZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJl
c291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEyZTIyOGFlYmMzMTBiNS4u
ZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQo
KTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50
OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAg
ICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0
YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVj
b2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRD
YWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsK
ICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3ZGU5YWY2N2ZkYzNkOTdi
ZjVmOWMyOWUuLmFmN2ZmNWU2MTE5M2M1M2I3NmZiZmEyZGI3NDg4OWE0MGM2OTc3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFy
KgogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKTsKIAogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+
bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRh
ID0gbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhTGVuZ3RoKTsKIAogICAgICAg
ICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdl
IGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8v
IE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQg
Zm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1
NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZiMGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZk
MTU3YzA5Y2Q0ODRlYWQyNGFmNDg0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0
aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJv
b2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAo
YnVmZmVyKSB7CiAgICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1l
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVm
ZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVy
biBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXpl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7CiAgICAgaWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAg
KnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXgg
ZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2FmNTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNj
ZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7Ci0gICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1l
KEZyYW1lKik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3Vy
Y2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3
NDgxMmY5Nzk0YjAuLjdlZTY5OTI2MTQ4ZjFlODE1YTk2MTFhNjQyODFlNmQ1ODU3NTdlMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsK
IH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYjlkYzViMDZhODhhZDE5ZWRlOWRhOGEwMDU3
OWRhMWFhODdiM2IxOC4uMGZhNmM2MTllNDAxNDM4ZGU2YWU5ODA3ZGIwZWIxODA1MThmZmFkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMTAzLDcgKzEx
MDMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICAgICAgZGF0YVJlY2VpdmVkKGNv
bnRlbnQtPmRhdGFBc0NoYXJQdHIoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nKCk7CiAK
QEAgLTE1MjcsNyArMTUyNyw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJj
aGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkp
OwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFp
blJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtYWluUmVz
b3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIx
NjEsNyArMjE2MSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011
bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwog
ICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRh
LT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+ZGF0YUFzQ2hhclB0cigpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxOTI1NTY5OWIyNGYw
MmU5N2ZjMGRjNGRjYWM0MjU4ODUzM2UwODExLi5mZjljZDZmMWVmNWE3ZmY5ZjIyMTVhMTQ4MjIy
NzY5YjYwNzBjY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDgyLDEzICs0ODIsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRl
cmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJj
ZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9uc2U6
OlR5cGU6OkRlZmF1bHQpOwogCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2U6OmZpbHRlcihyZXNwb25zZSwgbV9vcHRp
b25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgPyBS
ZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpObyA6IFJlc291
cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcykpOwogICAgICAg
ICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIo
KS0+ZGF0YUFzQ2hhclB0cigpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwog
CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmll
ciwgZGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgY29uc3QgYXV0
byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgp
OwogICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9u
b3VzTG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1p
bmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgcmVzcG9uc2UsIHNlY3VyaXR5
T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMGYwOWQy
NmRhYzEzMTM2ZmY4YjNkOWU1YWY0MTQzZTMwZjhjNTdjOC4uYTZmY2U5NTQ1Y2QzYWRkNzUxMjA1
YjEzOTAzZDZiNjM1OWE0ZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0zMTI3LDcgKzMxMjcsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1l
c3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3Bv
bnNlLCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDAsIC0xLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25z
ZSwgZGF0YSA/IGRhdGEtPmRhdGFBc0NoYXJQdHIoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCBlY2RkMTdhZTBiNjdlNDU3M2UwNzk1YjEyNDA2OTZkOTIxY2RiNTBkLi45NTA2ZmM4
NjNlZmI5NWRhNzI4YWY4YmNmYjQzNjUzNDIxNDNiOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZQogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKIAogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggZGZmMDYxNGFhYzkxNDFkNDQwMTUxMDk4OGMx
ZTE1MTgxOTgyMmNiNC4uYzQ1MTBlZjNkNDYzNmYwYTk1ZjAwMjhmYzU4ZjI2NDRkY2Q1NWUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJD
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0c2NhcGVQbHVnSW5TdHIKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hh
ciosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNBbGxTdHJlYW1z
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDUzNTM5ZmI2N2RlMWY1ZjE2Mjg0MjlkYjNmMWFiMmY1M2NlZGQ2NzIu
LjYzZTdlOTllZWQ4YmQ4YWUzZDhmOTBiYTlhZTdiYTc4NTJjNzhhZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBSCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBh
bmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAg
IC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmICht
X29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2Fs
bGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxl
bmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRh
KHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRm
NWI4ZjVjY2IyNDdmZjBhNWUuLmU0NmJiMjVhNmQxOGUxZjY1YzExZTFkZDZmMDk0MTYzZmZjY2Y1
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAt
NTU3LDcgKzU1Nyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUmVmCiAgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVz
b3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVz
b3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaAppbmRleCBjNzg2ZDdiM2U1ZDg4
NTk5NjU5YTNmNGQwOWJmOTZlMjBkYjBkYzMzLi5lMTgyOGFjYjg0OTU2MzI3ZDZhYzEzYmRlYTAx
OTRkYzE1M2E5ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291
cmNlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmgKQEAgLTU1LDkgKzU1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0VxdWFsRW5jb2Rp
bmdGb3JDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFN0cmluZyBkZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBy
ZXR1cm4gZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgp
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZsdXNoKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCk7CisgICAgU3RyaW5nIGRlY29kZUFuZEZsdXNoKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIHsgcmV0dXJuIGRlY29kZUFuZEZsdXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOyB9CiAKICAgICB2b2lkIHNldEhpbnRFbmNvZGluZyhjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiBwYXJlbnRGcmFtZURlY29kZXIpOwogICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDhjYzNjNTY4YzQzNzk2YWM2
MWIzMDk3NTQ3YTg5ZWY4MTJkOThkNGQuLmRkODg5MzVkYWI2NDViNTBjOTA4YTUyZjlkN2YxODBk
YjFmZTIwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBA
IC05NCw3ICs5NCw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1
ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
bV9wYXJzZU9mZnNldCk7Ci0gICAgICAgIG1fY3VlUGFyc2VyLT5wYXJzZUJ5dGVzKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIG1fY3VlUGFyc2VyLT5wYXJzZUJ5dGVzKGRhdGEu
ZGF0YUFzQ2hhclB0cigpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1fcGFyc2VPZmZzZXQgKz0g
ZGF0YS5zaXplKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBmMjY0ZjFkZDcxMjNk
NjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRkNWY5ZWE3NjZjNjAwMGY4ZmY3MzZj
MjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCku
bWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YUFzQ2hh
clB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFu
aWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9m
ICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VN
YW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFw
cGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3Rh
cnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWFj
NGIxZmI4YzQ0MjAzMGZlZDllMGY5NTFkOTQzYTBlZWVhZWRjZC4uNmRkMjVkZDRmOTkyZGZlNjNi
OTEwNTQzNzAzYmU1NjEwYmI4ZGJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjkyLDcg
KzEyOTIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1
ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAgIGlmICghaGFuZGxlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YUFzQ2hhclB0cigpLCBkYXRhLnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihkYXRhLnNpemUoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMy
YTBkODlkYzZhYTgwYjUwYjE5NWRjNTEuLmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRk
OTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50
IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0
byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8q
IGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5j
b2RpbmcsIHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEg
PSBxdW90ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVl
ZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIxNjczM2Y3ODQ5ZGMyYi4uOWJlMWNlYTZkZjY1NGNkNGRh
N2E0YzQ2MGJiZWY2Yjc5MWZhZTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0
b3I8dWludDhfdD4gcGFydDsKICAgICAgICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBh
cnQpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBl
bmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LT5h
cHBlbmQocGFydC5kYXRhKCksIHBhcnQuc2l6ZSgpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNl
dFNlcGFyYXRvcigiXHJcbiIpOwotICAgICAgICBWZWN0b3I8Y2hhcj4gbmV4dENoYXJzOworICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVy
LnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgc2VwZXJhdG9yLiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi41Y2Rl
OWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAg
ICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKICAgICAgICAg
RGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCisgICAgICAgIFZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjA0LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9y
PGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7
CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKQEAg
LTIzNSw3ICsyMzUsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApp
bmRleCBhMjAzZmVlNjE0MjUxM2NjMjJlNmY4OWRjNGM4MjRmYTA3MDJlMDlkLi41ZTQ0NjZjZDNm
MTcxODhhMjdjMGNkZTFlYThhODAxYjAyYTI0N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC00MiwyNCArNDIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYgc2VwYXJhdG9yKQogICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3Np
dGlvbigwKQotICAgICwgbV9zZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAg
ICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCiAg
ICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgLCBtX3NlcGFyYXRvckluZGV4KDApCiB7
CiB9CiAKIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAgIDogbV9idWZm
ZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9zZWdtZW50KDAp
Ci0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAg
LCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCi0gICAgLCBtX3NlcGFyYXRvckluZGV4KDApCiB7
CiAgICAgc2V0U2VwYXJhdG9yKHNlcGFyYXRvcik7CiB9CkBAIC03NSw3ICs2Myw3IEBAIHZvaWQg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnNldFNlcGFyYXRvcihjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAgICAgbV9zZXBhcmF0b3IuYXBwZW5kKHNlcGFyYXRvciwgc3RybGVuKHNlcGFyYXRvcikp
OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNo
YXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQorYm9vbCBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wgaW5jbHVkZVNl
cGFyYXRvcikKIHsKICAgICBpZiAobV9yZWFjaGVkRW5kT2ZGaWxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC04Myw3ICs3MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5l
eHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgY2h1
bmsuY2xlYXIoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB3aGlsZSAobV9zZWdtZW50
SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgIGNoYXIgY3VycmVudENoYXJh
Y3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKKyAgICAgICAgICAgIGF1dG8gY3Vy
cmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKICAgICAgICAgICAg
IGlmIChjdXJyZW50Q2hhcmFjdGVyICE9IG1fc2VwYXJhdG9yW21fc2VwYXJhdG9ySW5kZXhdKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fc2VwYXJhdG9ySW5k
ZXggPD0gbV9zZXBhcmF0b3Iuc2l6ZSgpKTsKQEAgLTExMiw3ICsxMDAsNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBp
bmNsdWRlU2VwYXJhdAogICAgICAgICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewogICAgICAgICAg
ICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChtX3NlcGFyYXRv
ckluZGV4ID4gMCkKLSAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBhcmF0b3IuZGF0
YSgpLCBtX3NlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgpKSwgbV9zZXBh
cmF0b3JJbmRleCk7CiAgICAgICAgICAgICByZXR1cm4gIWNodW5rLmlzRW1wdHkoKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTEyMiwxNCArMTEwLDE0IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0
CiAKIFN0cmluZyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBWZWN0b3I8
Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAoIW5leHRDaHVu
ayhkYXRhLCBpbmNsdWRlU2VwYXJhdG9yKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgcmV0dXJuIGRhdGEuc2l6ZSgpID8gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAotc2l6ZV90
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpwZWVrKFZlY3RvcjxjaGFyPiYgZGF0YSwgc2l6ZV90
IHJlcXVlc3RlZFNpemUpCitzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIHsKICAgICBkYXRhLmNs
ZWFyKCk7CiAgICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gbV9zZWdtZW50TGVuZ3RoIC0gbV9zZWdt
ZW50SW5kZXgpIHsKQEAgLTE0MSw3ICsxMjksNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKICAg
ICBkYXRhLmFwcGVuZChtX3NlZ21lbnQgKyBtX3NlZ21lbnRJbmRleCwgcmVhZEJ5dGVzQ291bnQp
OwogCiAgICAgc2l6ZV90IGJ1ZmZlclBvc2l0aW9uID0gbV9idWZmZXJQb3NpdGlvbiArIG1fc2Vn
bWVudExlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBzZWdtZW50ID0gMDsKKyAgICBjb25zdCB1aW50
OF90KiBzZWdtZW50ID0gbnVsbHB0cjsKIAogICAgIC8vIExldCdzIHByZXRlbmQgYWxsIHRoZSBk
YXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUg
cmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5oCmluZGV4IDc1NmVlZTI0NmIwZTJjYWUyMGM3ZWU3Nzc5ZTY1YzBmOGQ3MzQ2
M2MuLmM5ZjViMDZmYjQ2NTZkYzJlYWNkNDA0NDFmZjM0MWUyNWZkNGM3ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDgs
MjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7
CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdhcyBy
ZWFjaGVkLgotICAgIGJvb2wgbmV4dENodW5rKFZlY3RvcjxjaGFyPiYgZGF0YSwgYm9vbCBpbmNs
dWRlU2VwYXJhdG9yID0gZmFsc2UpOworICAgIGJvb2wgbmV4dENodW5rKFZlY3Rvcjx1aW50OF90
PiYgZGF0YSwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJu
cyBhIG51bGwgc3RyaW5nIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGhhcyBiZWVuIHJlYWNo
ZWQuCiAgICAgU3RyaW5nIG5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhi
b29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFkcyBzaXplIGJ5dGVz
IGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBidWZmZXIsIHdpdGhvdXQgY2hhbmdpbmcg
dGhlIGJ1ZmZlciBwb3NpdGlvbi4KICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMg
cmVhZC4gVGhhdCBudW1iZXIgbWlnaHQgYmUgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgc2l6ZSBp
ZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgc2l6ZV90IHBlZWsoVmVj
dG9yPGNoYXI+Jiwgc2l6ZV90KTsKKyAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBz
aXplX3QpOwogCiBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7Ci0gICAgc2l6
ZV90IG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgY2hhciogbV9zZWdtZW50OwotICAgIHNp
emVfdCBtX3NlZ21lbnRMZW5ndGg7Ci0gICAgc2l6ZV90IG1fc2VnbWVudEluZGV4OworICAgIHNp
emVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVu
dCB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9zZWdtZW50TGVuZ3RoIHsgMCB9OworICAgIHNp
emVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBib29sIG1fcmVhY2hlZEVuZE9mRmlsZTsK
LSAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3I7Ci0gICAgc2l6ZV90IG1fc2VwYXJhdG9ySW5k
ZXg7CisgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKKyAgICBzaXplX3Qg
bV9zZXBhcmF0b3JJbmRleCB7IDAgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAppbmRleCAxNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjLi40NWQx
NGFkOTAwMzczYTI3YmYzYjJmMzMyMzgyMmZlOGYzNDE2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QK
ICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsK
IAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0
YSA9IGluaXREYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0
YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXpl
ID0gMDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlm
ICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBj
b25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmlu
ZGV4IGUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2NkYjc4M2UuLjRkZGI2ZGY4M2Vj
YjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwogICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUuYXJlYSgp
ICogc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2Fw
YWNpdHkoYnVmZmVyU2l6ZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBi
dWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQ
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhl
bHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAg
IG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgp
LCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtMjA1LDkgKzIwNSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZSht
X3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5k
YXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkg
fTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVp
bnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpbkJvdW5kcyhj
b25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaAppbmRleCAxY2E5NzYzM2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5
Li40OGRmZGYwZWZkZmI4ZjhiNTU1NmNjMmY2YTY3MWU1OTk2YWQxZmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTU2LDcgKzU2LDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhQXNVSW50OFB0
cigpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcAppbmRleCAxZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1MTk4ZjgzNTA2
ZGUzOTM3Li5iZjhjMzBmYmYxYWZiNDBlYmZlMDQzMTc5ZTNhNDYzYTA5YzljYzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8Y2hhcj4gY29udmVydGVk
Rm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkp
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udCkpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LmRhdGEoKSwgY29udmVydGVkRm9udC5zaXplKCkpOwogICAgIGVsc2UKICAgICAgICAgYnVm
ZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGVmNWU1ZmI5ZTEzNjRhZjY3NTdlNTBm
OGI4ZWYxNzJiZmMwZDYxNzkuLmU0Y2M1ZGMxZWY0OTVjNjUxOGE4NTQyMTBkYWY1NGY4ODFjYmMx
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzaXplX3Qgc2hhcmVkQnVmZmVy
R2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRp
b24sCiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIAotICAgIGNvbnN0IGNoYXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9z
aXRpb247CisgICAgY29uc3QgdWludDhfdCogc291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkg
KyBwb3NpdGlvbjsKICAgICBzaXplX3QgYW1vdW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwg
c291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKICAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3Vu
dCk7CiAgICAgcmV0dXJuIGFtb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFi
Zi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2
b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0
ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVu
dC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQot
ICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRh
dGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0
eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3
MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2
Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVl
VHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhf
dD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFi
bGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBl
RmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0
YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdj
NTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUx
YTBiMDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRh
KCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFz
Q2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2Rl
ciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRh
dGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFk
VHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggNDQ5ODM3MzY2
MWE3ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMxNi4uMTcxMzVhMTQxY2Q2ZmEyY2U2YTg3MmM3
NzMxOWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yNzAsNyAr
MjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKIAogdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
ICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBPcGVuQ0RNRXJyb3IgZXJyb3Ig
PSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5n
ZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGFBc1VJbnQ4UHRyKCkp
LAorICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2Vy
dGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0
aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAgICAgY2Fs
bGJhY2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1NUX0RFQlVHKCJwYXJz
aW5nIGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01F
TURVTVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3IHBheWxvYWQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmlldz4gdHlwZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwotICAgIEdTVF9NRU1E
VU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6
ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVz
c2FnZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYWxsZW5nZUNhbGxiYWNrIDog
bV9jaGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAgIGNoYWxsZW5nZUNhbGxiYWNrKCk7CiAgICAg
bV9jaGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsKQEAgLTUwNywxMSArNTA3LDExIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0RGF0YSA9IEluaXREYXRhKGluc3RhbmNlLT5r
ZXlTeXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNoYXJlZEJ1ZmZlcikpOwogCiAgICAgR1NUX1RS
QUNFKCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNlc3Npb24gaWQsIGluaXQgZGF0YSBzaXplICV6
dSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgIEdTVF9NRU1EVU1QKCJpbml0
IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIsIG1faW5p
dERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwog
CiAgICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIG9wZW5jZG1fY29u
c3RydWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVuZGVyU3lzdGVtKCksIHRodW5kZXJMaWNlbnNl
VHlwZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlwZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAot
ICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFj
a3MsIHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEo
KSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNl
c3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAg
ICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKQEAgLTU3
Miw3ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNz
YWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
R1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdl
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1l
c3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRp
YUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGlmICghbV9zZXNzaW9u
IHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vz
c2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkp
KQorICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2Rt
X3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9u
c2UtPnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25GYWlsdXJlKCk7CiB9CiAKQEAgLTYwNyw3ICs2
MDcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIGlmIChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5w
YXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9m
IHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01F
TURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2Ut
PmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5ZmI1OTk4NjIxNWI5ZDVkYWUxNzlkMmQ3NTlj
ZWY3NDE4MTQ3Ni4uNTk2NmMzZjI1OTcwMzAwNjM2ZmU1OTA5YjQ3NjM1ZDFmMzVjODM2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAg
ICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBvc2l0aW9uKSAtIGJ1ZmZlci5kYXRhKCk7
CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNl
IGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCmluZGV4IGEwM2U3MWFiMWJjM2IxY2E1MDdjZjM4ZTI3NDE4N2JlYzBhOWQxOTEuLjRi
OGFlNmEwY2Q4NTQ2ZGVmNjZmNzRiOWY2OTc2MjNhZTI0ZDQwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIGdldEVPVEhlYWRlcihTaGFy
ZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5
RAogICAgIG92ZXJsYXlMZW5ndGggPSAwOwogCiAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBmb250
RGF0YS0+c2l6ZSgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwor
ICAgIGF1dG8qIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwogCiAgICAgRU9UUHJlZml4KiBwcmVm
aXggPSBlb3RIZWFkZXIucHJlZml4KCk7CiAKQEAgLTMzNCw4ICszMzQsOCBAQCBib29sIGdldEVP
VEhlYWRlcihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6
ZV90JiBvdmVybGF5RAogCiAgICAgLy8gSWYgcG9zc2libGUsIGVuc3VyZSB0aGF0IHRoZSBmYW1p
bHkgbmFtZSBpcyBhIHByZWZpeCBvZiB0aGUgZnVsbCBuYW1lLgogICAgIGlmIChmdWxsTmFtZUxl
bmd0aCA+PSBmYW1pbHlOYW1lTGVuZ3RoICYmIG1lbWNtcChmYW1pbHlOYW1lLCBmdWxsTmFtZSwg
ZmFtaWx5TmFtZUxlbmd0aCkpIHsKLSAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGZ1bGxOYW1lKSAtIGRhdGE7Ci0gICAgICAgIG92ZXJsYXlEc3QgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmYW1pbHlOYW1lKSAtIGRhdGE7CisgICAgICAg
IG92ZXJsYXlTcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmdWxsTmFtZSkg
LSBkYXRhOworICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZmFtaWx5TmFtZSkgLSBkYXRhOwogICAgICAgICBvdmVybGF5TGVuZ3RoID0gZmFtaWx5
TmFtZUxlbmd0aDsKICAgICB9CiAgICAgZW90SGVhZGVyLmFwcGVuZEJpZ0VuZGlhblN0cmluZyhm
dWxsTmFtZSwgZnVsbE5hbWVMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDBj
MGMxMzcyMDNkZjM2Y2Y1NzU1ZjEyZjQ5Yjk1NjIzNjJmMjRjNTIuLjczMzZhMjM1MWNhNzg4ZWI2
ODlhMDJlZGRlMzA3OTgwMWNhMmFlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb24KICAgICBEV09SRCBzaXplID0gR2V0
Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewotICAgICAgICBWZWN0b3I8Y2hh
cj4gZGF0YShzaXplKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAg
ICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRh
LmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0g
c2l6ZSk7CiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NGYzOWQyYTYyNmFiYjQ0NzFj
NjAzYmYwZjYwZDViZjY1NDk4OTczLi42NDI0YzAzYzM3M2E1NWI0MjlhNTk0MWMwYTQ4ZjZkZWZi
ZmI2YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SW1hZ2VUeXBlIElDT0ltYWdlRGVjb2Rlcjo6aW1hZ2VUeXBlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiAgICAgY29uc3QgdWludDMyX3QgaW1hZ2VPZmZzZXQgPSBtX2Rp
ckVudHJpZXNbaW5kZXhdLm1faW1hZ2VPZmZzZXQ7CiAgICAgaWYgKChpbWFnZU9mZnNldCA+IG1f
ZGF0YS0+c2l6ZSgpKSB8fCAoKG1fZGF0YS0+c2l6ZSgpIC0gaW1hZ2VPZmZzZXQpIDwgNCkpCiAg
ICAgICAgIHJldHVybiBVbmtub3duOwotICAgIHJldHVybiBzdHJuY21wKCZtX2RhdGEtPmRhdGEo
KVtpbWFnZU9mZnNldF0sICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CisgICAgcmV0dXJuIHN0
cm5jbXAoJm1fZGF0YS0+ZGF0YUFzQ2hhclB0cigpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0
KSA/IEJNUCA6IFBORzsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5
YTQ3MGViYWExMWExMjg4NWI2MDNlNTNmZThhODRmMTNjNzYzOWRlLi5jMTJjNDU5YTVhM2U1YjM1
MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBieXRlc1RvVXNlID0gZGF0
YS5zaXplKCkgLSBieXRlc1RvU2tpcDsKICAgICAgICAgbV9yZWFkT2Zmc2V0ICs9IGJ5dGVzVG9V
c2U7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlclNpemUgPSBtX3JlYWRPZmZzZXQ7Ci0gICAgICAg
IHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnByZXRfY2FzdDxwbmdfYnl0
ZXA+KGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpICsgYnl0ZXNUb1NraXApKSwgYnl0ZXNU
b1VzZSk7CisgICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnBy
ZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpICsgYnl0
ZXNUb1NraXApKSwgYnl0ZXNUb1VzZSk7CiAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgc3BlY2lm
eSB0aGUgc3VwZXJjbGFzcyBlbmNvZGVkRGF0YVN0YXR1cygpIGJlY2F1c2Ugd2UKICAgICAgICAg
Ly8gbWVyZWx5IHdhbnQgdG8gY2hlY2sgaWYgd2UndmUgbWFuYWdlZCB0byBzZXQgdGhlIHNpemUs
IG5vdAogICAgICAgICAvLyAocmVjdXJzaXZlbHkpIHRyaWdnZXIgYWRkaXRpb25hbCBkZWNvZGlu
ZyBpZiB3ZSBoYXZlbid0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA2MDM3NWRlNWJjZGNi
NDc2YWUwZWY0MTc1Y2U3MWIxZTFkNjE1NWZmLi4wNTQ0MjhkNTBkYzYxYWFhZDUxODg3OWQyMmNi
YzJmOTc3OTE1MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFhYzk4N2VhZTg4OWRmOWYyNzQyLi5kZDA1
ZWYwZmJkM2U3MzA5NzQzNTA1YWNjYzAxMDE0ZWY0ZDljNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpID0gMDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCmluZGV4IDQx
MjQ3ZjY4NGY3NjA5MGE2ZDJiZTI1MGE1NTg4NjRjY2YwNDIxNTcuLmM5YzkzYmE2MDExOGY5MTlk
MTE2MDI5MzJkYWU4M2Q3OTk0NjdmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlQ29ubmVjdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwg
UlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3Ry
aW5nRGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
LCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
YXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcihSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXplX3QpID0gMDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmNwcAppbmRleCBkMDMwMDUzNmVkOTMwZmJmOWMyMDJiYjk3MjYxMGQ0YzVmODlhOGM0Li45M2Jk
OTYyZDRkZWFkNDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5ZWVlYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5k
U3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRS
YXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmgKaW5kZXggNGE1MTA5MmJjNDFmMmNmOWY3ZjNkMDRmMjc3YTc1YzI5NGUxY2FhNS4u
ZTA3MGJkYjEzZTg3MjU4N2M1M2UwNGY0OTYxN2ZlZDU1OWEwYTg5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENsaWVudChSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikg
ZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5hbDsK
LSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIGJv
b2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBj
bG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVu
dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKaW5kZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uYzg3
ZDg4ODA0Mzc1OTc5NzA3MTE5YWRhNzIyNmMyOTFhNTA4ZjhmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMyw3ICs0MTMsOCBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgICAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPGNoYXI+PihlbGVtZW50LmRhdGEp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgp
KTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApp
bmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi42NDM2YWFjNTlk
ODMxODRlZWNmMTNjMjA4YWRjMWU1MDM3M2UzZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgs
NyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNl
aXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNpemUoKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
aW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2YxZDVhZjdkZWU1Ni4uMGIxZmQ3NDVl
YmEyZjYxZWVjZTYxYTFjYTU4MTMxZWRlZGU5ZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKICAg
ICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1
ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAgICAgICAg
IGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAgICAgIFt0
YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOmJ1ZmZlclZpZXcuZGF0YSgpIGxlbmd0
aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcl07CisgICAgICAgICAgICBbdGFzayByZXNvdXJj
ZTpudWxscHRyIHJlY2VpdmVkRGF0YTpidWZmZXJWaWV3LmRhdGFBc0NoYXJQdHIoKSBsZW5ndGg6
Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOwogICAgICAgICB9CiAgICAgICAgIGlmIChieXRl
SW5kZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgICBbdGFzayByZXNvdXJjZUZpbmlzaGVk
Om51bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDVh
MmI3MzA4NDYwZmQ3NmFiNmUxODk1NGFhNDZkOTAyNDI3MzNkY2UuLmQwZGMyZDYxYTY4MDgyM2Y0
ZTVlMTVjMWNmNWYyMGNmNTg0ZjE4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzYxLDcgKzc2MSw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRs
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxv
YWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
IAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggMDVkMTc3MTc3NTFlMDBhNTJhNmEw
NWViMDA2ZjdiNGMxN2YxZDRiYi4uZWJjZGIyZTBkZDliNDI4MGYyNTE1NzNkYmE2YjViZDA2ZGZm
ZDViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCkBA
IC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNv
ZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNh
d0Vycm9yKSBjb25zdDsKICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgbGVuZ3RoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGUoU3RyaW5nVmlldywgVW5lbmNvZGFibGVIYW5kbGluZywgTkZDTm9ybWFsaXplID0g
TkZDTm9ybWFsaXplOjpZZXMpIGNvbnN0OwogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JV
UkxQYXJzaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbmNvZGUo
c3RyaW5nLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVkRW50aXRpZXMsIE5GQ05vcm1h
bGl6ZTo6Tm8pOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAKaW5kZXggNjI5MWI2NDI0NjRmMjc1YjQ1M2JjYzllNDBlMWM5ZmM1MDk5YTk2
MC4uNGFlNDRlYWEwYjAwODA1MGY4ZTA1YTMxNzgxYjdiNDA5OWQzMjRlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTUwLDkgKzUw
LDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRM
YXN0RXJyb3IoKTsKIAogICAgIGlmIChieXRlc1RvUmVhZCAhPSBJTlZBTElEX0ZJTEVfU0laRSB8
fCBsYXN0RXJyb3IgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihi
eXRlc1RvUmVhZCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQp
OwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7Ci0gICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNU
b1JlYWQgPT0gYnl0ZXNSZWFkKQorICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgKExQ
Vk9JRClidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNU
b1JlYWQgPT0gYnl0ZXNSZWFkKQogICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJy
b3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDAwOTRmNDdkNDY0MDFk
NTlhY2I4NWY3NjU0M2RhNjJkNzM4YzBmZTYuLmVjYjZiYWUxNjg5NTYxNjdmNjFmYWYzZGNhMjkz
NjQ2Y2RjYWQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApA
QCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdl
ZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVk
IGJ5IGZyYW1lLT5pbml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT53cml0ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUg
dGhlIGVtcHR5IGRvY3VtZW50Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUoKSk7CisgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEo
KS0+ZGF0YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDU3ZWU1ZGVkMjRiZGEy
NzVlNTg2YmRmNjEzMmE1MjQ1NWFiYWNjOTYuLmRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1
MDU5ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhj
b25zdCB4bWxDaGFyKiB1cmksCiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3BlY2lmeSBhbiBlbmNv
ZGluZyBoZXJlLiBOZWl0aGVyIEdlY2tvIG5vciBXaW5JRSByZXNwZWN0cwogICAgICAgICAvLyB0
aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMuCi0gICAgICAgIHhtbERv
Y1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0aW9ucyk7Cisg
ICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhQXND
aGFyUHRyKCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIq
KXVyaSwgMCwgb3B0aW9ucyk7CiAKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYygw
LCAwKTsKICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCAxZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5NzhmLi4xZmRlMmU4ZDYw
MzUzNDI2ZGJiNmRkZjMyMzhlNzYxMzU3NTI4N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNTksNyAr
MzU5LDcgQEAgc3RhdGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciopCiBjbGFzcyBPZmZzZXRC
dWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9mZnNl
dEJ1ZmZlcihWZWN0b3I8Y2hhcj4gYnVmZmVyKQorICAgIE9mZnNldEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAg
ICAgICAsIG1fY3VycmVudE9mZnNldCgwKQogICAgIHsKQEAgLTM3Nyw3ICszNzcsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBW
ZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmlu
ZGV4IGMzZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcuLjdlMGQ4ZGJlMTkw
MjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZl
cjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcAppbmRleCA0YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2Li5jYmQw
NGQ5OWI3YzI3MTY3MWM4NzUyYjE4YTkyZTQyMTU4NTZjOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDgx
LDcgKzQ4MSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0CiAKIHZvaWQgUGx1Z2luQ29udHJv
bGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNl
aXZlRGF0YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRh
KCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0
cmVhbUlELCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAg
LTUwNyw3ICs1MDcsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJgogICAgIGlmIChtX3BsdWdp
bkNhbmNlbGVkTWFudWFsU3RyZWFtTG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVn
aW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IGM3ODBiYzRmODExYWY4
ZmIzODdmYjBkMjJjN2ZkZTRmMWQxMzYwODkuLmU1YWE3MGNkMGMyZDc3ZWIyYjhiN2U0YzllOTE2
Yjg2ZGJlOWU2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5
VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3Bw
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgd3JpdGVUb0Rpc2soc3RkOjp1bmlxdWVfcHRyPEtleWVk
RW5jb2Rlcj4mJiBlbmNvZGVyLCBTdHJpbmcmJiBwYXRoKQogICAgIGlmIChoYW5kbGUgPT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJh
d0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBhdXRvIHdyaXR0ZW5CeXRlcyA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YUFzQ2hhclB0cigp
LCByYXdEYXRhLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZSho
YW5kbGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihy
YXdEYXRhLT5zaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUx
Ny4uNmMyNzc0NDk2NDMzOGNkYWE1YzgyNzMzMmI3ZGFhNWIwNWM4ZTcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMDYxLDcgKzMw
NjEsNyBAQCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZl
cigpLT5iZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVt
b3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQt
PnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBz
aGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4o
c2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYwZWM4YzgzOGE4NzA4MTcw
ZTFmMmM2OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJjOWUyOGI3Nzk4NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMjEs
NyArMjIxLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0g
ICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX3N5bmNE
YXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwg
bV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIo
bV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0
YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4
MjBhMjc4YWYxZGM2YS4uOTljYTFkODhiODMyYjBmYTNkNGM3MmYxNTViMzZkZGQ1YTFjM2IyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
CiAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRS
ZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkgfSwg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGQwY2I3OWU1ZDFl
NjVmOGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdk
MWI1MTNlYjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5k
UXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1
bWVudCwgV2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRm
OFN0cmluZykgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0
aCgpIH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfSwgWyZjaGFubmVsXShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIGRhdGEsIGJ5dGVM
ZW5ndGgpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29j
a2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwor
ICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgp
IHsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZTo6T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0
ZUxlbmd0aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtT
b2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVM
ZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUg
ZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4
Y2VwdGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0cmluZygiRmFpbGVkIHRv
IGxvYWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDQ5OWRhMThkMTc0ZmU3ODkyOGI4NzNj
YTcyY2I3ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIyNGZkMWIyODAwNGNh
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9S
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRh
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKIHsKICAgICBpZiAoYXV0byog
c291cmNlID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291cmNlSWRlbnRpZmllcikpIHsKICAgICAg
ICAgaWYgKGlzUmF3KQotICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKICAg
ICB9CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6
OmNoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGkKIAogdm9pZCBS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgYm9vbCBpc1JhdywgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZm
ZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBp
ZiAoaXNSYXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CkBAIC0xNTEsNyArMTUx
LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAgICAgcG9zdFRhc2tUb0hhbmRsZXIoaGFu
ZGxlcklkZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdURk1vdmUodGV4dCkuaXNvbGF0ZWRDb3B5
KCksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0byYgaGFuZGxlcikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXpl
KCkpOworICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaGFuZGxlci5kaWRS
ZWNlaXZlU3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICB9KTsKQEAgLTIzMCw5ICsyMzAs
OSBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRl
bnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOwog
fQogCi12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVS
YXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7
IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplICB9IH0sIDApOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJl
Y2VpdmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwg
c2l6ZSAgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJl
bW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdjNTU0ZmRiMTVlZTIzOWRlNjJiMzUwY2Uu
LmY4YzA1ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFlZGEwYTczNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIp
IGZpbmFsOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4OTkwOTMyYzQzODJiYjYxZmYwMDQ5ODRj
NGIzOTkwZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4NDUzMzExY2YzMWNiZjJiODVjMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBz
dGF0aWMgTlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9vbCBpc0ZpbGUsIGNvbnN0IGNoYXIgKmJ1
ZmZlciwgdWludDMyX3QgbGVuZ3RoLAogICAgICAgICBpZiAoIWZpbGVDb250ZW50cykKICAgICAg
ICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgICAgICBwb3N0QnVmZmVy
ID0gZmlsZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29udGVu
dHMtPmRhdGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9zdEJ1ZmZlclNpemUgPSBmaWxlQ29udGVu
dHMtPnNpemUoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIE5QQVBJIHNwZWMgc3RhdGVzIHRo
YXQgdGhlIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAppbmRleCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjLi4wOTBkNWE0
MGNlYmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3AKICAgICAgICAg
cGx1Z2luU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAKQEAgLTkwMSw3ICs5MDEs
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludAogICAgIG1fbWFudWFsU3RyZWFtLT5kaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwg
bWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0
c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJU
KG1fc2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDI0NzQ5
MTQ2ZDkwZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNjZjIuLmE1ODJiNjY1MmZhNTAxZDZlNzdk
YzI0MjkwNmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTk1LDEyICsx
OTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJM
LCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVp
bnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0
X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVh
bFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDJhNjAxY2MwOGI0MGU3
NWY5YWUxOGE2MjVhODJjMjYxZmZkN2MyN2UuLmU5MThmODkyYjdiZTA4MDU2MTRhZWU0OWViZTI5
M2EzMjIwMWUwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHMKICAgICBzdGFydChyZXNwb25zZVVS
TC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVh
ZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
Ly8gRGVsaXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8g
Z28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNj
YXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBTdHJpbmcm
IHJlc3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0cmlu
Zy5sZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGRlbGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgp
KTsKKyAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1
bHRDU3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwogICAgIHN0b3AoTlBS
RVNfRE9ORSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpzdGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJl
YQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQog
ewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKCkKICAgICB9CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFU
b0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fZmls
ZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmls
ZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCkBA
IC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFU
b0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOworICAgIGludCBieXRlQ291bnQgPSBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNvdW50ICE9IGxlbmd0aCkg
ewogICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdoZW4gd2UgYXJlIG91dCBv
ZiBkaXNrIHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KICAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aAppbmRleCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4N2Q0M2U1MjFmMDg5OTIzYWJlLi45YjA3MDk5
ODg0NzIwNDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYyOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNl
VVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsK
IApAQCAtNzMsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9p
ZCBub3RpZnlBbmREZXN0cm95U3RyZWFtKE5QUmVhc29uKTsKIAotICAgIHZvaWQgZGVsaXZlckRh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGVsaXZlckRhdGFU
b1BsdWdpbigpOwotICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpOwogCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsK
ICAgICB1aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDZjZGJlZGNkMDg1NzJlMGI2NTk5ODU0M2Zk
ZjQyZjI1ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMwNmQwZmZkODJhY2M4MmYyOGIwOWNmZTAyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKQEAgLTE3NiwxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUph
dmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7
CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3Rh
dHVzKSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFs
OwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVh
bUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJv
b2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUp
IGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3Vz
ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Niw3ICszNjYsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciop
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQppbmRleCBjMDJmODQwYzQwNzQ4MDFiZDg3NGY2Y2Y4MzJlOTdiODg0MWY1YzQ5
Li4xNTEzZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2NiYmQwNzExZjdkMmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTcs
NyArMTE1Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBE
RlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291
bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgY291bnQpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0
dXJuOwpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVh
bUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBp
ZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGNvdW50KTsKKyAgICByZXF1ZXN0
LT5hZGREYXRhKGRhdGEsIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0
cmVhbUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9h
ZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE2ODQsMTQgKzE2ODQsMTQgQEAgdm9pZCBQ
REZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgVVJMJiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12
b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1
bWVudFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVz
KG1fZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVu
Z3RoKTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgp
OwogICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiB9CiAKQEAgLTE3MjksNyArMTcyOSw3
IEBAIHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdl
dExlbmd0aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJn
ZXRMZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQ
REZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAppbmRleCBkM2M3YWM3MDUxMWZjNzJjODcwODRiOGEzNzRmOWQ2Yzcy
Njg1OWIwLi4xMzU1Y2ZmNGViNzdmNmY3MTdkYjkyMGUyMTQwNThmYzE2YjJmZWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTc0LDcgKzE3NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFt
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAv
LyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRh
dGEuCi0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAK
ICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2Fk
aW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CmluZGV4IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYyMzg3MGE2MDllMzM5MzlhY2YuLjljZWQ3ZGEw
NzUwMmY2MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTMzMCw5ICszMzAsOSBAQCB2
b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFVSTCYgcmVzcG9ucwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZShzdHJlYW1JRCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1v
ZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdm9pZCBQbHVnaW5Q
cm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQog
ewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgp
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0
YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5J
bnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5ICszNTAsOSBAQCB2b2lkIFBsdWdpblByb3h5
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyXwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQ
bHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlw
ZSwgaGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6
Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBs
ZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6bWFu
dWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAwMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEy
ZTU2MTJjNmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgxNjhkZDNhNzM4ZmVkMmIwZGMwNzE0NGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAg
LTg3LDExICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsK
LSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBz
dHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVh
bUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJy
aWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBiNjRhY2FiZGY3NTNhYTg5ZTdiNzBlNGQ1NmU1NWQ3NzBlZDMyMDIxLi4z
YTA5NjgzZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMwNzY4NDA3YTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJp
ZGU7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1f
cGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlE
LCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2Up
LCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAK
LXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5W
aWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgbV9wbHVnaW5WaWV3LT5t
X3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7
CiB9CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1
Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJl
c3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYg
aXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4MjhkMzBhMDZlOWQ4
ZmRkNzhiNTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40YTFmNWFjNTdhOWQ3NzU0ZTY0MDc4ZjdkYTQy
YjU3NmEzMzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdEZXN0
cm95ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwgbV9wbHVnaW4tPmlzQmVpbmdEZXN0
cm95ZWQoKTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBtYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAg
IHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2
MjEwMi4uMTc2NzRkZjAyYzMyYTEzZWRhODUwNmUyNzBkZmQ3NjM3MDM1MGEzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IGNoYXIqIGRhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNw
b25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCAwMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiLi4yYWMy
NWRjZDM5ZTQ4MGRmOTM2YzZhZWI3OWVjMjBhZmVjMmQ0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KLSAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJp
ZGVCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChX
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0
YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZm
ZXIpKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlk
ZUJ1ZmZlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBj
NTM2MjVhMTg4MzhmZDBkMjczZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4xNTIwMGVjZDkxOTI2OGMz
NDA3ZDkxOWMwNjY3MThjOTMyNDYxNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTdHJlYW1X
aXRoUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogCiAgICAgLy8gRklYTUU6IENh
biB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1
N2FhNGE4MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4wODYxNWU0OWY1MTMwM2E0
ZjU5Y2FkMDUzOWNmZmU3ZDlhMDViMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbS5tbQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbTo6c3RhcnRTdHJlYW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBsb25nIGxvbmcgZXhwZWMK
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KFtoZWFkZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBsZW5ndGhdKTsKIH0KICAg
ICAgICAgICAgICAgICAgICAgIAotdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06
OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgX1dLUEhTdHJlYW1EaWRSZWNl
aXZlRGF0YShtX2luc3RhbmNlLT5ob3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+cGx1Z2luSUQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fc3RyZWFtSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdF9jYXN0PGNoYXIqPihieXRlcyksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihi
eXRlcykpLCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciop
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNzU0MjY5Mzgx
MmU3OGI3Zjg5YThlMzQ0MDM3MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNlZjhjMDZhY2M5ODhhYTI0
YWI4ODI3YTM5OGY1YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpldmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltKU0RhdGEgbGVuZ3RoXQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25z
ZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsK
KyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0t
PmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDc2MTE3MWNlYTdjYTVmYTY3MjhjOWRjMDBkMmViN2IyZDE4
Zjc3ODAuLjY0YzI3N2I1ZjQzZDE1MWJkYTQxNWJlYzliNTlkNWYzY2NmYzA4NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUxOSw3ICs1MTksNyBAQCAt
ICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0Rh
dGEgKilkYXRhCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoSG9zdGVkTmV0c2NhcGVQ
bHVnaW5TdHJlYW0qIG1hbnVhbFN0cmVhbSA9IF9wcm94eS0+bWFudWFsU3RyZWFtKCkpCi0gICAg
ICAgIG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBtYW51YWxTdHJlYW0t
PmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilw
bHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5o
CmluZGV4IDJiYzk3OGQzNDAzZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMuLjE5MzkwYjVj
MDJhNzVmNzlmOTY2ZjgxYTQxYTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveVN0cmVhbVdpdGhFcnJvcihO
U0Vycm9yICopOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggZjg4OTBkMDUxNmIyMTJhY2ZlNzY5
NjY0MjVkZTU0NDEwNGM5YTY5NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMyNjkxNTgxNGU1NjYyMGM5
NTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciopCiAgICAgZGVzdHJveVN0cmVhbVdpdGhSZWFzb24oTlBSRVNfRE9ORSk7CiB9CiAK
LXZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQq
KWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
aW5kZXggMzNiYTU3YzE1NWYxOGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5NWU5Yy4uYThhMmVlODE3
MWEyZGI4ZDgyYzhiYjA1YTk5ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEw
NTEsNyArMTA1MSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyBy
ZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICB9CiAKICAgICBpZiAoX21hbnVhbFN0cmVh
bS0+cGx1Z2luKCkpCi0gICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7Cisg
ICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClw
bHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKill
cnJvcgpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVn
aW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICAKICAgICAgICAgc3RyZWFtLT5zdGFy
dFN0cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlk
UmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwg
W0pTRGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0p
OwogICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0N2UxNmIyYTRm
YjAyOGU0OGM4NDA5ZTg2OGNhNzIzODRlYWEwOWIuLmNiOTQ1MzRjMjdiZWEyZDZlOGVhN2FlZGQw
MWZkYWVmMTE0ZTU1ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBW
ZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGlu
c3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxz
byBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50
OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlw
ZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQnVmZmVyKToKKwogMjAyMS0wNi0wMyAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzgzNTYuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlYzdkMTE5ZWE4MTliMDE5OWE4NzNmMDIwNzY2
ZDQxOTIwMWFjMmEuLmVhNzMyYThlMGUwYzI2YzlkOTBhMTIzNTk0MGFjZGU1N2UyMTYzYTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXJMYXJnZVNlZ21lbnRzKQogewotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IwKDB4NDAwMCwg
J2EnKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMSgweDQwMDAsICdiJyk7Ci0gICAgVmVjdG9y
PGNoYXI+IHZlY3RvcjIoMHg0MDAwLCAnYycpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Iw
KDB4NDAwMCwgJ2EnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7
CkBAIC0xNjAsNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
QVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQogCi1zdGF0aWMgdm9pZCBj
aGVja0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0
IGNoYXIqIGV4cGVjdGVkKQorc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKIHsKICAg
ICAvLyBleHBlY3RlZCBpcyBudWxsIHRlcm1pbmF0ZWQsIGJ1ZmZlciBpcyBub3QuCiAgICAgc2l6
ZV90IGxlbmd0aCA9IHN0cmxlbihleHBlY3RlZCk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGlj
IHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBjaGFyKiBleHAKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRh
KQogewotICAgIFZlY3RvcjxjaGFyPiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZl
Y3RvcjxjaGFyPiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3RvcjxjaGFyPiBz
MyA9IHsnaScsICdqJywgJ2snLCAnbCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScs
ICdiJywgJ2MnLCAnZCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cn
LCAnaCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9Owog
ICAgIAogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNF
cXVhbFRvKQogewotICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPGNoYXI+
PiYmIGNvbnRlbnRzKSB7CisgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8
dWludDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKICAg
ICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwpAQCAtMjA5LDcgKzIw
OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKICAgICBFWFBFQ1RfRVEo
YnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVj
dG9yPGNoYXI+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CisgICAgYnVmZmVyMS0+YXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2Mn
LCAnZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywg
J2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0p
LmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRvSGV4U3RyaW5nKQogewotICAgIFZlY3RvcjxjaGFyPiB0MSA9IHsweDExLCAweDUs
IDB4MTJ9OworICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVu
ZChXVEZNb3ZlKHQxKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmco
KTsK
</data>
<flag name="commit-queue"
          id="452062"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430577</attachid>
            <date>2021-06-04 08:06:49 -0700</date>
            <delta_ts>2021-06-04 14:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604080648.patch</filename>
            <type>text/plain</type>
            <size>145236</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjYWI3MDlmMzIwNjVm
YTJkZjVlMDlmMWQzZGY4ZDMxZmRmNDgyMi4uMjc4Yjg2OWM1MDY1ODcwZDc4Njg3MDYyYWUzYWNl
ODU5NTUwNmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVj
dG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNo
YXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVy
biBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91
ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6
ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Qmxv
Yik6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9u
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojppc1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVu
Y29kaW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2Fk
ZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIw
MjEtMDYtMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNzgzMzYpOiBmYXN0L2RvbS9XaW5kb3cvcHJvcGVydHktYWNjZXNzLW9uLWNh
Y2hlZC13aW5kb3ctYWZ0ZXItZnJhbWUtcmVtb3ZlZC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBj
b25zdGFudCBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYjU1YTc2NDFkZWYzOWZmMWY3YjFlYjNiNzE2ZmM0
YmRiMzg3OTU5Li42OThkYzlhZThkYmQxY2Q3ZjcxYTJlM2U2YTRlMGE0ZDg1Yjg2NTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3Rv
cjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVh
ZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhh
dmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3Qq
YCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRv
IHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwOgorICAgICAgICAo
V2ViS2l0Ojp3cml0ZVRvRGlzayk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpwYXJzZVBvc3RCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorCiAyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
cmVhZCBzYWZldHkgaXNzdWVzIGluIFtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2YWM1ZDYxYjliOWNi
YjYwZTQ4ZjM2Y2MyODJlYzQuLjAwNzc3YTlhZjQwYjMwYjU2Mjc3M2VkNTJlNjIyOWNkYzZmNzUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0w
Ni0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0
b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hh
cmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5
dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAg
ICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBU
aGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJL
aXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorCiAy
MDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2Ji
YzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAuLmYxZjQyMTI3ZGU1MjA5YTU4ZTdjNjYzZTkyMzhhMGE4
Nzk3YmIxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCwgRmlsZVNlZWtPcmlnaW4pOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNh
dGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lz
ZS4KLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQg
d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKTsgLy8gRklYTUU6IFNob3VsZCB1c2UgYGNvbnN0IHVpbnQ4X3QqYC4KIC8vIFJldHVybnMg
bnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3
aXNlLgotV1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8v
IEZJWE1FOiBTaG91bGQgdXNlIGB1aW50OF90KmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9k
ZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBl
ZGE1MWQwZmU1ZGQ1NTRjYTg0OWNkNjdkN2EwMjhmZDEwMzEyZmI3Li40ODM2ZDI4MTNmZTc0YjEy
YTJlZDBhMDVhYmM5OTk5NWZkYjkwYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVk
QnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2Nv
bnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlw
ZSgpLCBzaGFyZWRCdWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwg
b3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxp
a2Ugd2UgZG8gb3RoZXIgYmxvYnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDU1Zjc5YjcwN2NmMTY5Yzc4NjMwOWEzNTRi
ZTFjNTdjYzczZDAyNTAuLmYxODNjYjg4MjMwNWYxZDMyOWI5MDg3M2FmYjRiYzllNTM2NjQzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWltZVR5cGU+
IHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIH0KIAogLy8gaHR0cHM6
Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtYm9keS1wYWNrYWdlLWRhdGEKLXN0YXRp
YyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQorc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1E
YXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgYXV0byBw
YXJzZU11bHRpcGFydFBhcnQgPSBbY29udGV4dF0gKGNvbnN0IGNoYXIqIHBhcnQsIHNpemVfdCBw
YXJ0TGVuZ3RoLCBET01Gb3JtRGF0YSYgZm9ybSkgLT4gYm9vbCB7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGhlYWRlckVuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0ocGFydCwgcGFy
dExlbmd0aCwgIlxyXG5cclxuIiwgNCkpOwpAQCAtMTk0LDEzICsxOTQsMTMgQEAgc3RhdGljIFJl
ZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnMKICAgICAgICAgY29uc3QgY2hhciogY3VycmVudEJvdW5kYXJ5ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShkYXRhLCBsZW5ndGgsIGJvdW5kYXJ5LmRhdGEo
KSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgaWYgKCFjdXJyZW50Qm91bmRhcnkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgY29uc3QgY2hhciogbmV4dEJvdW5kYXJ5
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShjdXJyZW50Qm91bmRhcnkgKyBib3Vu
ZGFyeUxlbmd0aCwgbGVuZ3RoIC0gKGN1cnJlbnRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0g
ZGF0YSksIGJvdW5kYXJ5LmRhdGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKKyAgICAgICAgY29uc3Qg
Y2hhciogbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShjdXJy
ZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVuZ3RoIC0gKGN1cnJlbnRCb3VuZGFyeSAr
IGJvdW5kYXJ5TGVuZ3RoIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpLCBi
b3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91
bmRhcnkpIHsKICAgICAgICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkg
KyBib3VuZGFyeUxlbmd0aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRh
cnlMZW5ndGggLSBzdHJsZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJy
ZW50Qm91bmRhcnkgPSBuZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVu
Z3RoLCBsZW5ndGggLSAobmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91
bmRhcnkuZGF0YSgpLCBib3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCwgbGVuZ3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5
TGVuZ3RoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1pbWVUeXBlICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnR5cGUsICJhcHBsaWNhdGlvbiIpICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnN1YnR5cGUsICJ4LXd3dy1mb3JtLXVybGVuY29kZWQi
KSkgewogICAgICAgICBhdXRvIGRhdGFTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGxl
bmd0aCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5k
RGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExET01TdHJpbmc+KFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0
Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOgotICAgICAgICBpZiAoYXV0byBmb3JtRGF0
YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRh
ID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBkYXRhLCBsZW5ndGgpKQog
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+Pigq
Zm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlw
ZUVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKaW5kZXggOWU2ZGJiOGFmYWM3NDJmNGMyNDhhZjU5NTlhYjE4Nzc3ODVmM2MwMC4uMGI0
YWJmY2NiNTY0ZDdjYTQ4NTk4ZmY5YmU3ODcxNGJmNzlhMGRmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
aGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hsaWdodC0+ZGF0YUFzVUludDhQdHIo
KSksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihoaWdobGlnaHQtPmRhdGEoKSks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXgg
ZTgzY2RkNzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5
MzFkMTFjNzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6
ZGF0YUZyb21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRo
cmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVm
ZmVyLnNpemUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0
ZSh7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6
SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODky
NWU0NzliNWU0MzYuLmI3Zjc3N2E0MDNiZTgxZDA4Yzg2NzNlZjRmY2ViZDY5ZGE4MmQ4MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTI4NCwxMSArMjg0LDEyIEBAIHN0YXRpYyB2b2lk
IGVuY29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CisgICAgLy8gRklYTUU6IFVzZSBWZWN0b3I8dWludDhfdD4gYW5kIHBhc3MgaXQg
ZGlyZWN0bHkgdG8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS4KICAgICBWZWN0b3I8Y2hhcj4gZGF0
YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0
YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3Qg
dWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmNwcAppbmRleCA4NmFmY2RiYjc2YzBhMmZmNTJhOGYxNTQzMGIxMzliZGJmZDYwZDVhLi5h
ZDllNDQ5OTYxYzg1NDViMjBkZDdmM2ExOGMwMWRiN2RmZDRhMmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAt
MjE0LDcgKzIxNCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVTdHJpbmdEYXRh
KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUodGV4dCkpOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZl
UmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgUlRDRGF0
YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5h
cnlUeXBlOjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IDZkZmMxMDU2MThlNDI2ZTQwMDE1NzZkNDIwNWUwNTAx
NzZkYTAwZDQuLjhmOGY3NTM3NTY3ZmVkNWZkZTE3YTc3ZjhlNTQ3MDg4NDZhZTVhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudCBBUEkKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5u
ZWxTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWREZXRlY3RFcnJvcigpIGZpbmFsOwogICAgIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IDQ2ZWY2ZjhiMGJjZTYyOTJiOWEwOWFkMTE1ZTJj
NGZjYmRkZWUyYmUuLmU3YzIxYWVmNWIzMDUxM2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9p
ZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVTdHJpbmdEYXRhKFN0cmlu
ZyYmIHRleHQpCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogfQog
Ci12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlcjo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiB7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIHNpemUpOwogfQpAQCAt
MTA0LDcgKzEwNCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3Ry
aW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJh
d0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFtX2lz
UmVhZHlUb1NlbmQpIHsKICAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKE1lc3NhZ2Ug
eyB0cnVlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKSB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGNhMWRjZGJjMWNlOTVmMjU4NDdkYmJkOTZlZmRiYzBi
ZDhkNGQxYTEuLmJlYmVhNGRjNzNlZjRhN2M4Y2NlMzllOWNiODUzZWM0YjFlNTI3NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5u
ZWxTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShT
dHJpbmcmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25z
dCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
RGV0ZWN0RXJyb3IoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNE
ZWNyZWFzaW5nKHNpemVfdCk7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBS
VENEYXRhQ2hhbm5lbEhhbmRsZXIKICAgICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgZmluYWw7CiAg
ICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5h
bDsKIAogICAgIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBtX3JlbW90ZUlkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlU291cmNlLmgKaW5kZXggMWQ2ZWZmMDVhYTQ1ZDYxM2E2NWQ3MjU2
ODFhNGQ3MDQ4ZDYyMGQxNy4uMzMyNDk5ZDAxZTM1ZTU2Y2NkNGU3N2Q1NjUwMjFmNzA4NDg1OGJm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgflJUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKCk7CiAKICAgICB2b2lkIHNlbmRT
dHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpIHsgbV9oYW5kbGVyLT5zZW5kU3RyaW5nRGF0
YSh0ZXh0KTsgfQotICAgIHZvaWQgc2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpIHsgbV9oYW5kbGVyLT5zZW5kUmF3RGF0YShkYXRhLCBzaXplKTsgfQorICAgIHZvaWQg
c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgbV9oYW5kbGVy
LT5zZW5kUmF3RGF0YShkYXRhLCBzaXplKTsgfQogICAgIHZvaWQgY2xvc2UoKSB7IG1faGFuZGxl
ci0+Y2xvc2UoKTsgfQogCiBwcml2YXRlOgpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAg
IC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudAogICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlT
dGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlk
Q2hhbmdlUmVhZHlTdGF0ZShtX2lkZW50aWZpZXIsIHN0YXRlKTsgfQogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEobV9pZGVudGlmaWVyLCB0ZXh0KTsgfQotICAgIHZvaWQgZGlk
UmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9j
b25uZWN0aW9uLT5kaWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9
CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVSYXdEYXRhKG1faWRlbnRpZmll
ciwgZGF0YSwgc2l6ZSk7IH0KICAgICB2b2lkIGRpZERldGVjdEVycm9yKCkgZmluYWwgeyBtX2Nv
bm5lY3Rpb24tPmRpZERldGVjdEVycm9yKG1faWRlbnRpZmllcik7IH0KICAgICB2b2lkIGJ1ZmZl
cmVkQW1vdW50SXNEZWNyZWFzaW5nKHNpemVfdCBhbW91bnQpIGZpbmFsIHsgbV9jb25uZWN0aW9u
LT5idWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhtX2lkZW50aWZpZXIsIGFtb3VudCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggYzc0ZTRjMDlmOWYwNGJmMDI5MWNhMTNlYzEwNjg3NmE1YzEzOTY4My4uZDFlOGU0YmJjZjEz
ZWI3M2EwMGZhYWZhMWZhYjk0ZWM5ZTI0MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcm
IHV0ZjhUZXh0KQogICAgIHJldHVybiBtX2NoYW5uZWwtPlNlbmQoeyBydGM6OkNvcHlPbldyaXRl
QnVmZmVyKHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCkpLCBmYWxzZSB9KTsKIH0K
IAotYm9vbCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICByZXR1cm4gbV9jaGFubmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcihkYXRhLCBs
ZW5ndGgpLCB0cnVlIH0pOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJiBidWZm
ZXIpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpEYXRhQnVmZmVyPiBwcm90ZWN0ZWRC
dWZmZXIobmV3IHdlYnJ0Yzo6RGF0YUJ1ZmZlcihidWZmZXIpKTsKICAgICBwb3N0VGFzayhbcHJv
dGVjdGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBidWZmZXIgPSBXVEZNb3ZlKHByb3Rl
Y3RlZEJ1ZmZlcildIHsKLSAgICAgICAgY29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci0+ZGF0YS5kYXRhPGNoYXI+KCkpOworICAgICAgICBjb25z
dCB1aW50OF90KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
LT5kYXRhLmRhdGE8dWludDhfdD4oKSk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAg
ICAgICAgICAgIHByb3RlY3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVy
LT5zaXplKCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRm
ZTE4Y2FmYTEuLjJiZTMxMjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3
ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAg
IHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNv
bnN0IENTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBz
aXplX3QpIGZpbmFsOworICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRh
Q2hhbm5lbE9ic2VydmVyIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggZDNhM2IwMDY2NGQ2ZGZlODVhZTJiOTAyNmZlZWUyYzk3NjQwNmEyOS4uMWU4YzIx
YWIwOWRiYjcyY2ZhZmQ4ZjE4ZmY1MGZjZjgyMjViNjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0Zv
bnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdG
b250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
b3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAg
ICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RG
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUob3RmRm9udC0+ZGF0YSgpLCBvdGZGb250LT5z
aXplKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAg
ICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3Vt
ZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDQyZjIy
YjQ2ZmMwNGE0NDZjOGM3ZTNhYzhkOTI0MDg0MmJkNDBmMjUuLmUxZWY0YWI5NDM2NjM4YTM0MzYz
NzUyNDY5NjYzMTQ1ZDg3NDdhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0CiAgICAgLCBtX3NpemUoYnVmZmVyLnNp
emUoKSkKIHsKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsKLSAgICBibG9iUGFydHMu
YXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhQXNVSW50OFB0cigpLCBidWZmZXIuc2l6ZSgpIH0p
OworICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSB9KTsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwo
KTsKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5h
bFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA4ZGZkZDgzNTNiZjdkYmNhMjI1
ZWJlZDgxOTIzZGM4NzI1M2ZkOThmLi43ZmNiM2VlMjcyMjNmZGUyNTk0NjdkNzY4ZjhiNzM3MmRm
MTAyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKENTdHJpbmcm
JiB1dGY4KQogdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKGNvbnN0IEpTQzo6QXJyYXlC
dWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCiB7CiAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpOworICAgICAgICBh
dXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgp
KTsKICAgICAgICAgbV93cml0ZVJhd0RhdGEoZGF0YSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgTmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGNvbnN0IGF1dG8mIHJlc3VsdCA9IGxvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKSkg
ewotICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICBtX3dyaXRlUmF3RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRh
KCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKGVycm9yQ29kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDNhZTY2NTI2Y2MxOGI5MjE0ZGYwNTU3
NjhlNDU2MzRkOTAwZTBhY2MuLjVlZTY0NWZiZWMzM2U5Y2VkMzU0MDI1OGFhNjAyN2U3Mzg1OGY1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE5ldHdv
cmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGlj
OgogICAgIHVzaW5nIFdyaXRlU3RyaW5nID0gRnVuY3Rpb248dm9pZChjb25zdCBDU3RyaW5nJiB1
dGY4KT47Ci0gICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVuY3Rpb248dm9pZChjb25zdCBjaGFy
Kiwgc2l6ZV90KT47CisgICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVuY3Rpb248dm9pZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KT47CiAgICAgZW51bSBjbGFzcyBDb250aW51ZSB7IE5vLCBZZXMg
fTsKICAgICB1c2luZyBQcm9jZXNzRXJyb3IgPSBGdW5jdGlvbjxDb250aW51ZShFeGNlcHRpb25D
b2RlKT47CiAgICAgTmV0d29ya1NlbmRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV3Jp
dGVTdHJpbmcmJiwgV3JpdGVSYXdEYXRhJiYsIFByb2Nlc3NFcnJvciYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGE3Nzg4
NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1YjgxMmQ0ZjA0NzIyOWQ3
NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBAQCBzaXplX3QgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKIH0KIAotdm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBpZiAoIW1fZGF0YUJ1ZmZl
cikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCdWZmZXJSZXNvdXJjZURh
dGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSYgcgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK05ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJj
ZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJl
c291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEyZTIyOGFlYmMzMTBiNS4u
ZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQo
KTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50
OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAg
ICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0
YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVj
b2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRD
YWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsK
ICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3ZGU5YWY2N2ZkYzNkOTdi
ZjVmOWMyOWUuLmFmN2ZmNWU2MTE5M2M1M2I3NmZiZmEyZGI3NDg4OWE0MGM2OTc3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFy
KgogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKTsKIAogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+
bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRh
ID0gbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhTGVuZ3RoKTsKIAogICAgICAg
ICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIsIGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdl
IGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8v
IE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5kIHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQg
Zm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUgYSBkZWNvZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1
NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZiMGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZk
MTU3YzA5Y2Q0ODRlYWQyNGFmNDg0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0
aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJv
b2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAo
YnVmZmVyKSB7CiAgICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1l
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVm
ZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVy
biBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXpl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7CiAgICAgaWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAg
KnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXgg
ZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2FmNTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNj
ZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7Ci0gICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1l
KEZyYW1lKik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3Vy
Y2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3
NDgxMmY5Nzk0YjAuLjdlZTY5OTI2MTQ4ZjFlODE1YTk2MTFhNjQyODFlNmQ1ODU3NTdlMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsK
IH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYjlkYzViMDZhODhhZDE5ZWRlOWRhOGEwMDU3
OWRhMWFhODdiM2IxOC4uMGZhNmM2MTllNDAxNDM4ZGU2YWU5ODA3ZGIwZWIxODA1MThmZmFkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMTAzLDcgKzEx
MDMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICAgICAgZGF0YVJlY2VpdmVkKGNv
bnRlbnQtPmRhdGFBc0NoYXJQdHIoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nKCk7CiAK
QEAgLTE1MjcsNyArMTUyNyw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJj
aGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkp
OwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFp
blJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtYWluUmVz
b3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIx
NjEsNyArMjE2MSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011
bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwog
ICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRh
LT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+ZGF0YUFzQ2hhclB0cigpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxOTI1NTY5OWIyNGYw
MmU5N2ZjMGRjNGRjYWM0MjU4ODUzM2UwODExLi5mZjljZDZmMWVmNWE3ZmY5ZjIyMTVhMTQ4MjIy
NzY5YjYwNzBjY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDgyLDEzICs0ODIsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogICAgICAgICBpZiAob3B0aW9ucygpLmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRl
cmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgICAgICAgICBpZiAobV9yZXNvdXJj
ZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhQXNDaGFyUHRyKCks
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9uc2U6
OlR5cGU6OkRlZmF1bHQpOwogCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2U6OmZpbHRlcihyZXNwb25zZSwgbV9vcHRp
b25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgPyBS
ZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpObyA6IFJlc291
cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcykpOwogICAgICAg
ICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRh
dGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIo
KS0+ZGF0YUFzQ2hhclB0cigpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwog
CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmll
ciwgZGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgY29uc3QgYXV0
byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgp
OwogICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9u
b3VzTG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1p
bmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgcmVzcG9uc2UsIHNlY3VyaXR5
T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMGYwOWQy
NmRhYzEzMTM2ZmY4YjNkOWU1YWY0MTQzZTMwZjhjNTdjOC4uYTZmY2U5NTQ1Y2QzYWRkNzUxMjA1
YjEzOTAzZDZiNjM1OWE0ZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0zMTI3LDcgKzMxMjcsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1l
c3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3Bv
bnNlLCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDAsIC0xLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25z
ZSwgZGF0YSA/IGRhdGEtPmRhdGFBc0NoYXJQdHIoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCBlY2RkMTdhZTBiNjdlNDU3M2UwNzk1YjEyNDA2OTZkOTIxY2RiNTBkLi45NTA2ZmM4
NjNlZmI5NWRhNzI4YWY4YmNmYjQzNjUzNDIxNDNiOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZQogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKIAogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggZGZmMDYxNGFhYzkxNDFkNDQwMTUxMDk4OGMx
ZTE1MTgxOTgyMmNiNC4uYzQ1MTBlZjNkNDYzNmYwYTk1ZjAwMjhmYzU4ZjI2NDRkY2Q1NWUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJD
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0c2NhcGVQbHVnSW5TdHIKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hh
ciosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FudHNBbGxTdHJlYW1z
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDUzNTM5ZmI2N2RlMWY1ZjE2Mjg0MjlkYjNmMWFiMmY1M2NlZGQ2NzIu
LjYzZTdlOTllZWQ4YmQ4YWUzZDhmOTBiYTlhZTdiYTc4NTJjNzhhZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBSCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBh
bmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAg
IC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmICht
X29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2Fs
bGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxl
bmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRh
KHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5n
dGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRm
NWI4ZjVjY2IyNDdmZjBhNWUuLmU0NmJiMjVhNmQxOGUxZjY1YzExZTFkZDZmMDk0MTYzZmZjY2Y1
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAt
NTU3LDcgKzU1Nyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUmVmCiAgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVz
b3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVz
b3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaAppbmRleCBjNzg2ZDdiM2U1ZDg4
NTk5NjU5YTNmNGQwOWJmOTZlMjBkYjBkYzMzLi5lMTgyOGFjYjg0OTU2MzI3ZDZhYzEzYmRlYTAx
OTRkYzE1M2E5ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291
cmNlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmgKQEAgLTU1LDkgKzU1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0VxdWFsRW5jb2Rp
bmdGb3JDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFN0cmluZyBkZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBy
ZXR1cm4gZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgp
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZsdXNoKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCk7CisgICAgU3RyaW5nIGRlY29kZUFuZEZsdXNoKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIHsgcmV0dXJuIGRlY29kZUFuZEZsdXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOyB9CiAKICAgICB2b2lkIHNldEhpbnRFbmNvZGluZyhjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiBwYXJlbnRGcmFtZURlY29kZXIpOwogICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDhjYzNjNTY4YzQzNzk2YWM2
MWIzMDk3NTQ3YTg5ZWY4MTJkOThkNGQuLmRkODg5MzVkYWI2NDViNTBjOTA4YTUyZjlkN2YxODBk
YjFmZTIwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBA
IC05NCw3ICs5NCw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1
ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
bV9wYXJzZU9mZnNldCk7Ci0gICAgICAgIG1fY3VlUGFyc2VyLT5wYXJzZUJ5dGVzKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIG1fY3VlUGFyc2VyLT5wYXJzZUJ5dGVzKGRhdGEu
ZGF0YUFzQ2hhclB0cigpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1fcGFyc2VPZmZzZXQgKz0g
ZGF0YS5zaXplKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBmMjY0ZjFkZDcxMjNk
NjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRkNWY5ZWE3NjZjNjAwMGY4ZmY3MzZj
MjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCku
bWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YUFzQ2hh
clB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFu
aWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9m
ICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VN
YW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFw
cGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3Rh
cnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWFj
NGIxZmI4YzQ0MjAzMGZlZDllMGY5NTFkOTQzYTBlZWVhZWRjZC4uNmRkMjVkZDRmOTkyZGZlNjNi
OTEwNTQzNzAzYmU1NjEwYmI4ZGJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjkyLDcg
KzEyOTIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1
ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAgIGlmICghaGFuZGxlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YUFzQ2hhclB0cigpLCBkYXRhLnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihkYXRhLnNpemUoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMy
YTBkODlkYzZhYTgwYjUwYjE5NWRjNTEuLmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRk
OTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0
bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50
IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0
byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8q
IGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5j
b2RpbmcsIHF1b3RlZFByaW50YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEg
PSBxdW90ZWRQcmludGFibGVFbmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVl
ZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIxNjczM2Y3ODQ5ZGMyYi4uOWJlMWNlYTZkZjY1NGNkNGRh
N2E0YzQ2MGJiZWY2Yjc5MWZhZTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0
b3I8dWludDhfdD4gcGFydDsKICAgICAgICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBh
cnQpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBl
bmQgb2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LT5h
cHBlbmQocGFydC5kYXRhKCksIHBhcnQuc2l6ZSgpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNl
dFNlcGFyYXRvcigiXHJcbiIpOwotICAgICAgICBWZWN0b3I8Y2hhcj4gbmV4dENoYXJzOworICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVy
LnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgc2VwZXJhdG9yLiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFzVUludDhQdHIoKSAgICwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCkgICAsIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwg
cGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0
IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50
YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0cigpLCBjb250ZW50LT5zaXplKCkpOwor
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZl
bkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2
ZDM5MWMzYWUwZmExYWJjNTkyYmFkZGY4NzcuLmFmZjZmNTNjNDVhNjQ5MmYxYjVhYjkyNTI3MDhi
ODdlZDgxODBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBwcmV2aW91c0RhdGFT
aXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Ci0gICAgICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLnNpemUoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGFBc0NoYXJQdHIoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgpKTsKIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAKICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKICAg
ICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGMpCiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGFBc0NoYXJQdHIo
KSwgbV9kYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhNmIxMDQ4NzZjODY2NWE2ZjI2NGM1YTIwYTI3OTU5NWQxYTlm
MGZmLi42NmM2MGYxNjk5ZTVkMzViNzAwY2Q4NWFmMjA4OWI0YTkxNjliZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8
fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LT5kYXRhKCksIGNvbnZlcnRlZEZvbnQtPnNpemUoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MjU4NjUzZjI1NTE4MmY3NGVjZmQ0ZDg3YWFlOTlhYTE2
NjNkMTExLi4wMmMxZTJmNGMyYjViYTQ2NzEwNmYzY2I5MDY3OWNjMGExMDlmNzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKQEAgLTUyLDcgKzUyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVj
dG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpAQCAtODEsMTUg
KzgxLDkgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCi0v
LyBGSVhNRTogTW92ZSB0aGUgd2hvbGUgY2xhc3MgZnJvbSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9y
PHVpbnQ4X3Q+IGFuZCBtYWtlIHRoaXMgZWZmaWNpZW50LCByZXBsYWNpbmcgdGhlIFZlY3Rvcjxj
aGFyPiB2ZXJzaW9uIGFib3ZlLgogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlciB7IHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkgfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKQEAgLTEwMiw3
ICs5Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gY29tYmluZWREYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQogICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CkBAIC0xMTMsNyArMTA3LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMiwxMSArMTE2LDYgQEAgY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YUFzVUludDhQdHIoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpOwotfQotCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CkBAIC0xNTAsNyArMTM5LDcgQEAgU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIg
VW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAK
ICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApAQCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYmIGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAg
IFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAg
ICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkp
OyB9LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IEdS
ZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLT5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLT5kYXRhKCkpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7IH0KKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQogICAgICAgICBb
XShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5z
aXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVu
Z3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAzKTsKIAogICAg
IC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNoYXIqIHAgPSBi
dWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJhY3RlcnM4KCk7
CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZlci5zaHJpbmso
cCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2UzMmZiLi41Y2Rl
OWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtOTksOCAr
OTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0
YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3Qg
YWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBl
bmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJ
bnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9y
PGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgogICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAg
ICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKICAgICAgICAg
RGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCisgICAgICAgIFZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjA0LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1
bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9y
PGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7
CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKQEAg
LTIzNSw3ICsyMzUsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApp
bmRleCBhMjAzZmVlNjE0MjUxM2NjMjJlNmY4OWRjNGM4MjRmYTA3MDJlMDlkLi41ZTQ0NjZjZDNm
MTcxODhhMjdjMGNkZTFlYThhODAxYjAyYTI0N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC00MiwyNCArNDIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYgc2VwYXJhdG9yKQogICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3Np
dGlvbigwKQotICAgICwgbV9zZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAg
ICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCiAg
ICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgLCBtX3NlcGFyYXRvckluZGV4KDApCiB7
CiB9CiAKIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAgIDogbV9idWZm
ZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9zZWdtZW50KDAp
Ci0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAg
LCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCi0gICAgLCBtX3NlcGFyYXRvckluZGV4KDApCiB7
CiAgICAgc2V0U2VwYXJhdG9yKHNlcGFyYXRvcik7CiB9CkBAIC03NSw3ICs2Myw3IEBAIHZvaWQg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnNldFNlcGFyYXRvcihjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAgICAgbV9zZXBhcmF0b3IuYXBwZW5kKHNlcGFyYXRvciwgc3RybGVuKHNlcGFyYXRvcikp
OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNo
YXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQorYm9vbCBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wgaW5jbHVkZVNl
cGFyYXRvcikKIHsKICAgICBpZiAobV9yZWFjaGVkRW5kT2ZGaWxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC04Myw3ICs3MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5l
eHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgY2h1
bmsuY2xlYXIoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB3aGlsZSAobV9zZWdtZW50
SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgIGNoYXIgY3VycmVudENoYXJh
Y3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKKyAgICAgICAgICAgIGF1dG8gY3Vy
cmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKICAgICAgICAgICAg
IGlmIChjdXJyZW50Q2hhcmFjdGVyICE9IG1fc2VwYXJhdG9yW21fc2VwYXJhdG9ySW5kZXhdKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fc2VwYXJhdG9ySW5k
ZXggPD0gbV9zZXBhcmF0b3Iuc2l6ZSgpKTsKQEAgLTExMiw3ICsxMDAsNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBp
bmNsdWRlU2VwYXJhdAogICAgICAgICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewogICAgICAgICAg
ICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChtX3NlcGFyYXRv
ckluZGV4ID4gMCkKLSAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBhcmF0b3IuZGF0
YSgpLCBtX3NlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgpKSwgbV9zZXBh
cmF0b3JJbmRleCk7CiAgICAgICAgICAgICByZXR1cm4gIWNodW5rLmlzRW1wdHkoKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTEyMiwxNCArMTEwLDE0IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0
CiAKIFN0cmluZyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBWZWN0b3I8
Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAoIW5leHRDaHVu
ayhkYXRhLCBpbmNsdWRlU2VwYXJhdG9yKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgcmV0dXJuIGRhdGEuc2l6ZSgpID8gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAotc2l6ZV90
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpwZWVrKFZlY3RvcjxjaGFyPiYgZGF0YSwgc2l6ZV90
IHJlcXVlc3RlZFNpemUpCitzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIHsKICAgICBkYXRhLmNs
ZWFyKCk7CiAgICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gbV9zZWdtZW50TGVuZ3RoIC0gbV9zZWdt
ZW50SW5kZXgpIHsKQEAgLTE0MSw3ICsxMjksNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKICAg
ICBkYXRhLmFwcGVuZChtX3NlZ21lbnQgKyBtX3NlZ21lbnRJbmRleCwgcmVhZEJ5dGVzQ291bnQp
OwogCiAgICAgc2l6ZV90IGJ1ZmZlclBvc2l0aW9uID0gbV9idWZmZXJQb3NpdGlvbiArIG1fc2Vn
bWVudExlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBzZWdtZW50ID0gMDsKKyAgICBjb25zdCB1aW50
OF90KiBzZWdtZW50ID0gbnVsbHB0cjsKIAogICAgIC8vIExldCdzIHByZXRlbmQgYWxsIHRoZSBk
YXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUg
cmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5oCmluZGV4IDc1NmVlZTI0NmIwZTJjYWUyMGM3ZWU3Nzc5ZTY1YzBmOGQ3MzQ2
M2MuLmM5ZjViMDZmYjQ2NTZkYzJlYWNkNDA0NDFmZjM0MWUyNWZkNGM3ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDgs
MjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7
CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdhcyBy
ZWFjaGVkLgotICAgIGJvb2wgbmV4dENodW5rKFZlY3RvcjxjaGFyPiYgZGF0YSwgYm9vbCBpbmNs
dWRlU2VwYXJhdG9yID0gZmFsc2UpOworICAgIGJvb2wgbmV4dENodW5rKFZlY3Rvcjx1aW50OF90
PiYgZGF0YSwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJu
cyBhIG51bGwgc3RyaW5nIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGhhcyBiZWVuIHJlYWNo
ZWQuCiAgICAgU3RyaW5nIG5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhi
b29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFkcyBzaXplIGJ5dGVz
IGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBidWZmZXIsIHdpdGhvdXQgY2hhbmdpbmcg
dGhlIGJ1ZmZlciBwb3NpdGlvbi4KICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMg
cmVhZC4gVGhhdCBudW1iZXIgbWlnaHQgYmUgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgc2l6ZSBp
ZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgc2l6ZV90IHBlZWsoVmVj
dG9yPGNoYXI+Jiwgc2l6ZV90KTsKKyAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBz
aXplX3QpOwogCiBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7Ci0gICAgc2l6
ZV90IG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgY2hhciogbV9zZWdtZW50OwotICAgIHNp
emVfdCBtX3NlZ21lbnRMZW5ndGg7Ci0gICAgc2l6ZV90IG1fc2VnbWVudEluZGV4OworICAgIHNp
emVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVu
dCB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9zZWdtZW50TGVuZ3RoIHsgMCB9OworICAgIHNp
emVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBib29sIG1fcmVhY2hlZEVuZE9mRmlsZTsK
LSAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3I7Ci0gICAgc2l6ZV90IG1fc2VwYXJhdG9ySW5k
ZXg7CisgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKKyAgICBzaXplX3Qg
bV9zZXBhcmF0b3JJbmRleCB7IDAgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcAppbmRleCAxNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjLi40NWQx
NGFkOTAwMzczYTI3YmYzYjJmMzMyMzgyMmZlOGYzNDE2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QK
ICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsK
IAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0
YSA9IGluaXREYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0
YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXpl
ID0gMDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlm
ICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBj
b25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmlu
ZGV4IGUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2NkYjc4M2UuLjRkZGI2ZGY4M2Vj
YjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwogICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUuYXJlYSgp
ICogc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgICAgICBpZiAoIWJ1ZmZlci50cnlSZXNlcnZlQ2Fw
YWNpdHkoYnVmZmVyU2l6ZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBi
dWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQ
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhl
bHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAg
IG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgp
LCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtMjA1LDkgKzIwNSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZSht
X3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5k
YXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkg
fTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVp
bnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpbkJvdW5kcyhj
b25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaAppbmRleCAxY2E5NzYzM2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5
Li40OGRmZGYwZWZkZmI4ZjhiNTU1NmNjMmY2YTY3MWU1OTk2YWQxZmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTU2LDcgKzU2LDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhQXNVSW50OFB0
cigpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcAppbmRleCAxZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1MTk4ZjgzNTA2
ZGUzOTM3Li5iZjhjMzBmYmYxYWZiNDBlYmZlMDQzMTc5ZTNhNDYzYTA5YzljYzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8Y2hhcj4gY29udmVydGVk
Rm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkp
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udCkpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb252ZXJ0ZWRG
b250LmRhdGEoKSwgY29udmVydGVkRm9udC5zaXplKCkpOwogICAgIGVsc2UKICAgICAgICAgYnVm
ZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGVmNWU1ZmI5ZTEzNjRhZjY3NTdlNTBm
OGI4ZWYxNzJiZmMwZDYxNzkuLmU0Y2M1ZGMxZWY0OTVjNjUxOGE4NTQyMTBkYWY1NGY4ODFjYmMx
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzaXplX3Qgc2hhcmVkQnVmZmVy
R2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRp
b24sCiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIAotICAgIGNvbnN0IGNoYXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9z
aXRpb247CisgICAgY29uc3QgdWludDhfdCogc291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkg
KyBwb3NpdGlvbjsKICAgICBzaXplX3QgYW1vdW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwg
c291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKICAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3Vu
dCk7CiAgICAgcmV0dXJuIGFtb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFi
Zi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2
b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0
ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVu
dC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQot
ICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRh
dGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0
eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3
MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2
Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVl
VHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhf
dD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFi
bGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBl
RmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0
YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdj
NTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUx
YTBiMDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRh
KCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFz
Q2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2Rl
ciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRh
dGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFk
VHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggNDQ5ODM3MzY2
MWE3ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMxNi4uMTcxMzVhMTQxY2Q2ZmEyY2U2YTg3MmM3
NzMxOWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yNzAsNyAr
MjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKIAogdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
ICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBPcGVuQ0RNRXJyb3IgZXJyb3Ig
PSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5n
ZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGFBc1VJbnQ4UHRyKCkp
LAorICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2Vy
dGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0
aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAgICAgY2Fs
bGJhY2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1NUX0RFQlVHKCJwYXJz
aW5nIGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01F
TURVTVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3IHBheWxvYWQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmlldz4gdHlwZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwotICAgIEdTVF9NRU1E
VU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6
ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVz
c2FnZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYWxsZW5nZUNhbGxiYWNrIDog
bV9jaGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAgIGNoYWxsZW5nZUNhbGxiYWNrKCk7CiAgICAg
bV9jaGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsKQEAgLTUwNywxMSArNTA3LDExIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0RGF0YSA9IEluaXREYXRhKGluc3RhbmNlLT5r
ZXlTeXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNoYXJlZEJ1ZmZlcikpOwogCiAgICAgR1NUX1RS
QUNFKCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNlc3Npb24gaWQsIGluaXQgZGF0YSBzaXplICV6
dSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgIEdTVF9NRU1EVU1QKCJpbml0
IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIsIG1faW5p
dERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwog
CiAgICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIG9wZW5jZG1fY29u
c3RydWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVuZGVyU3lzdGVtKCksIHRodW5kZXJMaWNlbnNl
VHlwZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlwZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAot
ICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFj
a3MsIHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEo
KSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNl
c3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAg
ICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKQEAgLTU3
Miw3ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNz
YWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
R1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdl
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1l
c3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRp
YUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGlmICghbV9zZXNzaW9u
IHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vz
c2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkp
KQorICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2Rt
X3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9u
c2UtPnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25GYWlsdXJlKCk7CiB9CiAKQEAgLTYwNyw3ICs2
MDcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIGlmIChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5w
YXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9m
IHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01F
TURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXpl
KCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2Ut
PmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5ZmI1OTk4NjIxNWI5ZDVkYWUxNzlkMmQ3NTlj
ZWY3NDE4MTQ3Ni4uNTk2NmMzZjI1OTcwMzAwNjM2ZmU1OTA5YjQ3NjM1ZDFmMzVjODM2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAg
ICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBvc2l0aW9uKSAtIGJ1ZmZlci5kYXRhKCk7
CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNl
IGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCmluZGV4IGEwM2U3MWFiMWJjM2IxY2E1MDdjZjM4ZTI3NDE4N2JlYzBhOWQxOTEuLjRi
OGFlNmEwY2Q4NTQ2ZGVmNjZmNzRiOWY2OTc2MjNhZTI0ZDQwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIGdldEVPVEhlYWRlcihTaGFy
ZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5
RAogICAgIG92ZXJsYXlMZW5ndGggPSAwOwogCiAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBmb250
RGF0YS0+c2l6ZSgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwor
ICAgIGF1dG8qIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwogCiAgICAgRU9UUHJlZml4KiBwcmVm
aXggPSBlb3RIZWFkZXIucHJlZml4KCk7CiAKQEAgLTMzNCw4ICszMzQsOCBAQCBib29sIGdldEVP
VEhlYWRlcihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6
ZV90JiBvdmVybGF5RAogCiAgICAgLy8gSWYgcG9zc2libGUsIGVuc3VyZSB0aGF0IHRoZSBmYW1p
bHkgbmFtZSBpcyBhIHByZWZpeCBvZiB0aGUgZnVsbCBuYW1lLgogICAgIGlmIChmdWxsTmFtZUxl
bmd0aCA+PSBmYW1pbHlOYW1lTGVuZ3RoICYmIG1lbWNtcChmYW1pbHlOYW1lLCBmdWxsTmFtZSwg
ZmFtaWx5TmFtZUxlbmd0aCkpIHsKLSAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGZ1bGxOYW1lKSAtIGRhdGE7Ci0gICAgICAgIG92ZXJsYXlEc3QgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmYW1pbHlOYW1lKSAtIGRhdGE7CisgICAgICAg
IG92ZXJsYXlTcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmdWxsTmFtZSkg
LSBkYXRhOworICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZmFtaWx5TmFtZSkgLSBkYXRhOwogICAgICAgICBvdmVybGF5TGVuZ3RoID0gZmFtaWx5
TmFtZUxlbmd0aDsKICAgICB9CiAgICAgZW90SGVhZGVyLmFwcGVuZEJpZ0VuZGlhblN0cmluZyhm
dWxsTmFtZSwgZnVsbE5hbWVMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDBj
MGMxMzcyMDNkZjM2Y2Y1NzU1ZjEyZjQ5Yjk1NjIzNjJmMjRjNTIuLjczMzZhMjM1MWNhNzg4ZWI2
ODlhMDJlZGRlMzA3OTgwMWNhMmFlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb24KICAgICBEV09SRCBzaXplID0gR2V0
Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewotICAgICAgICBWZWN0b3I8Y2hh
cj4gZGF0YShzaXplKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAg
ICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRh
LmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0g
c2l6ZSk7CiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NGYzOWQyYTYyNmFiYjQ0NzFj
NjAzYmYwZjYwZDViZjY1NDk4OTczLi42NDI0YzAzYzM3M2E1NWI0MjlhNTk0MWMwYTQ4ZjZkZWZi
ZmI2YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SW1hZ2VUeXBlIElDT0ltYWdlRGVjb2Rlcjo6aW1hZ2VUeXBlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiAgICAgY29uc3QgdWludDMyX3QgaW1hZ2VPZmZzZXQgPSBtX2Rp
ckVudHJpZXNbaW5kZXhdLm1faW1hZ2VPZmZzZXQ7CiAgICAgaWYgKChpbWFnZU9mZnNldCA+IG1f
ZGF0YS0+c2l6ZSgpKSB8fCAoKG1fZGF0YS0+c2l6ZSgpIC0gaW1hZ2VPZmZzZXQpIDwgNCkpCiAg
ICAgICAgIHJldHVybiBVbmtub3duOwotICAgIHJldHVybiBzdHJuY21wKCZtX2RhdGEtPmRhdGEo
KVtpbWFnZU9mZnNldF0sICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CisgICAgcmV0dXJuIHN0
cm5jbXAoJm1fZGF0YS0+ZGF0YUFzQ2hhclB0cigpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0
KSA/IEJNUCA6IFBORzsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5
YTQ3MGViYWExMWExMjg4NWI2MDNlNTNmZThhODRmMTNjNzYzOWRlLi5jMTJjNDU5YTVhM2U1YjM1
MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBieXRlc1RvVXNlID0gZGF0
YS5zaXplKCkgLSBieXRlc1RvU2tpcDsKICAgICAgICAgbV9yZWFkT2Zmc2V0ICs9IGJ5dGVzVG9V
c2U7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlclNpemUgPSBtX3JlYWRPZmZzZXQ7Ci0gICAgICAg
IHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnByZXRfY2FzdDxwbmdfYnl0
ZXA+KGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpICsgYnl0ZXNUb1NraXApKSwgYnl0ZXNU
b1VzZSk7CisgICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnBy
ZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpICsgYnl0
ZXNUb1NraXApKSwgYnl0ZXNUb1VzZSk7CiAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgc3BlY2lm
eSB0aGUgc3VwZXJjbGFzcyBlbmNvZGVkRGF0YVN0YXR1cygpIGJlY2F1c2Ugd2UKICAgICAgICAg
Ly8gbWVyZWx5IHdhbnQgdG8gY2hlY2sgaWYgd2UndmUgbWFuYWdlZCB0byBzZXQgdGhlIHNpemUs
IG5vdAogICAgICAgICAvLyAocmVjdXJzaXZlbHkpIHRyaWdnZXIgYWRkaXRpb25hbCBkZWNvZGlu
ZyBpZiB3ZSBoYXZlbid0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA2MDM3NWRlNWJjZGNi
NDc2YWUwZWY0MTc1Y2U3MWIxZTFkNjE1NWZmLi4wNTQ0MjhkNTBkYzYxYWFhZDUxODg3OWQyMmNi
YzJmOTc3OTE1MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFhYzk4N2VhZTg4OWRmOWYyNzQyLi5kZDA1
ZWYwZmJkM2U3MzA5NzQzNTA1YWNjYzAxMDE0ZWY0ZDljNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpID0gMDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCmluZGV4IDQx
MjQ3ZjY4NGY3NjA5MGE2ZDJiZTI1MGE1NTg4NjRjY2YwNDIxNTcuLmM5YzkzYmE2MDExOGY5MTlk
MTE2MDI5MzJkYWU4M2Q3OTk0NjdmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlQ29ubmVjdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwg
UlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3Ry
aW5nRGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
LCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
YXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcihSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXplX3QpID0gMDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmNwcAppbmRleCBkMDMwMDUzNmVkOTMwZmJmOWMyMDJiYjk3MjYxMGQ0YzVmODlhOGM0Li45M2Jk
OTYyZDRkZWFkNDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5ZWVlYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5k
U3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRS
YXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmgKaW5kZXggNGE1MTA5MmJjNDFmMmNmOWY3ZjNkMDRmMjc3YTc1YzI5NGUxY2FhNS4u
ZTA3MGJkYjEzZTg3MjU4N2M1M2UwNGY0OTYxN2ZlZDU1OWEwYTg5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENsaWVudChSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikg
ZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5hbDsK
LSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIGJv
b2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBj
bG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVu
dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKaW5kZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uYzg3
ZDg4ODA0Mzc1OTc5NzA3MTE5YWRhNzIyNmMyOTFhNTA4ZjhmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMyw3ICs0MTMsOCBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgICAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPGNoYXI+PihlbGVtZW50LmRhdGEp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgp
KTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApp
bmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi42NDM2YWFjNTlk
ODMxODRlZWNmMTNjMjA4YWRjMWU1MDM3M2UzZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgs
NyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNl
aXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNpemUoKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0K
aW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2YxZDVhZjdkZWU1Ni4uMGIxZmQ3NDVl
YmEyZjYxZWVjZTYxYTFjYTU4MTMxZWRlZGU5ZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAKICAg
ICAgICAgICAgIHNpemVfdCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1
ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5lbmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAgICAgICAg
IGJ5dGVJbmRleCArPSBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAgICAgIFt0
YXNrIHJlc291cmNlOm51bGxwdHIgcmVjZWl2ZWREYXRhOmJ1ZmZlclZpZXcuZGF0YSgpIGxlbmd0
aDpieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcl07CisgICAgICAgICAgICBbdGFzayByZXNvdXJj
ZTpudWxscHRyIHJlY2VpdmVkRGF0YTpidWZmZXJWaWV3LmRhdGFBc0NoYXJQdHIoKSBsZW5ndGg6
Ynl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXJdOwogICAgICAgICB9CiAgICAgICAgIGlmIChieXRl
SW5kZXggPj0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgICBbdGFzayByZXNvdXJjZUZpbmlzaGVk
Om51bGxwdHIgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDVh
MmI3MzA4NDYwZmQ3NmFiNmUxODk1NGFhNDZkOTAyNDI3MzNkY2UuLmQwZGMyZDYxYTY4MDgyM2Y0
ZTVlMTVjMWNmNWYyMGNmNTg0ZjE4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzYxLDcgKzc2MSw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRs
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxv
YWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
IAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggZTU2NGEwY2U2NjYxNGE0OWExMDMxMzY4ODUxYzRk
YTg4MjM1MmE2MS4uYTMwOWMyNThjZDlmMTEyZDNiYmNlNmNhYTcxNDgxODM2YTFmYjAxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBidWZmZXItPmRhdGFBc0NoYXJQdHIoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNp
emUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5o
CmluZGV4IDA1ZDE3NzE3NzUxZTAwYTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2RiMmUw
ZGQ5YjQyODBmMjUxNTczZGJhNmI1YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3Ro
LCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5nIGRl
Y29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlY29k
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBkZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2Rh
YmxlSGFuZGxpbmcsIE5GQ05vcm1hbGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsKICAg
ICBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZykg
Y29uc3QgZmluYWwgeyByZXR1cm4gZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZzo6
VVJMRW5jb2RlZEVudGl0aWVzLCBORkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDYyOTFiNjQyNDY0
ZjI3NWI0NTNiY2M5ZTQwZTFjOWZjNTA5OWE5NjAuLjRhZTQ0ZWFhMGIwMDgwNTBmOGUwNWEzMTc4
MWI3YjQwOTlkMzI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwCkBAIC01MCw5ICs1MCw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKICAgICBpZiAoYnl0ZXNU
b1JlYWQgIT0gSU5WQUxJRF9GSUxFX1NJWkUgfHwgbGFzdEVycm9yID09IE5PX0VSUk9SKSB7Ci0g
ICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwot
ICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1Jl
YWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKKyAgICAgICAg
aWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIChMUFZPSUQpYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1Jl
YWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKICAgICAgICAg
ICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29u
dGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCku
ZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDczOGMwZmU2Li5l
Y2I2YmFlMTY4OTU2MTY3ZjYxZmFmM2RjYTI5MzY0NmNkY2FkNDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0
YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
ICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9h
ZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBs
b2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdl
L3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBs
b2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRh
dGEoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGFBc0NoYXJQdHIoKSwgZGF0YSgpLT5z
aXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
ZW5kKCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcAppbmRleCA1N2VlNWRlZDI0YmRhMjc1ZTU4NmJkZjYxMzJhNTI0NTVhYmFjYzk2Li5k
ZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0
aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogCiAgICAgICAg
IC8vIFdlIGRvbid0IHNwZWNpZnkgYW4gZW5jb2RpbmcgaGVyZS4gTmVpdGhlciBHZWNrbyBub3Ig
V2luSUUgcmVzcGVjdHMKICAgICAgICAgLy8gdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUg
SFRUUCBoZWFkZXJzLgotICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRh
ID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25z
dCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOworICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVh
ZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwgZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOwogCiAgICAgICAg
IHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoMCwgMCk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNF
cnJvckZ1bmMoMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMWQ4ZGFkYmU0Njc2MTkyZjY1YWU4ZTA4
YzU2ODFjNmIwY2NlOTc4Zi4uMWZkZTJlOGQ2MDM1MzQyNmRiYjZkZGYzMjM4ZTc2MTM1NzUyODdk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIHN0YXRpYyBpbnQgbWF0Y2hGdW5j
KGNvbnN0IGNoYXIqKQogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPGNoYXI+IGJ1ZmZlcikK
KyAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAgICAgLCBtX2N1cnJlbnRPZmZzZXQoMCkKICAg
ICB7CkBAIC0zNzcsNyArMzc3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBW
ZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAg
IHVuc2lnbmVkIG1fY3VycmVudE9mZnNldDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IDc2MWMw
NWNmNmQ2ZTY5MmYyNzE2ZmFjNmMzNGNkYzkzNjFlOGM1OGMuLjgwYmFjNGIyODljMGI1NzQxMTMx
ODQ1YTVkMzA2ZTZhZjhmODJmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTk0LDcgKzE5NCw3IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIENTdHJpbmcg
bV9zbmlmZmVkQ29udGVudFR5cGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1fcmVhZEJ1ZmZlcjsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9yZWFkQnVmZmVyOwogICAgIHVpbnQ2NF90IG1fYm9keURhdGFU
b3RhbEJ5dGVzU2VudCB7IDAgfTsKICAgICBHUmVmUHRyPEdGaWxlPiBtX2Rvd25sb2FkRGVzdGlu
YXRpb25GaWxlOwogICAgIEdSZWZQdHI8R0ZpbGU+IG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4
IGMzZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcuLjdlMGQ4ZGJlMTkwMjU5
OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0
YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAppbmRleCA0YjIwYzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2Li5jYmQwNGQ5
OWI3YzI3MTY3MWM4NzUyYjE4YTkyZTQyMTU4NTZjOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDgxLDcg
KzQ4MSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZl
RGF0YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVh
bUlELCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTUw
Nyw3ICs1MDcsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJgogICAgIGlmIChtX3BsdWdpbkNh
bmNlbGVkTWFudWFsU3RyZWFtTG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IGM3ODBiYzRmODExYWY4ZmIz
ODdmYjBkMjJjN2ZkZTRmMWQxMzYwODkuLmU1YWE3MGNkMGMyZDc3ZWIyYjhiN2U0YzllOTE2Yjg2
ZGJlOWU2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRp
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCkBA
IC03OSw3ICs3OSw3IEBAIHZvaWQgd3JpdGVUb0Rpc2soc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5j
b2Rlcj4mJiBlbmNvZGVyLCBTdHJpbmcmJiBwYXRoKQogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0Rh
dGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBhdXRvIHdyaXR0ZW5CeXRlcyA9IEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YUFzQ2hhclB0cigpLCBy
YXdEYXRhLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5k
bGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYXdE
YXRhLT5zaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNy4u
NmMyNzc0NDk2NDMzOGNkYWE1YzgyNzMzMmI3ZGFhNWIwNWM4ZTcwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMDYxLDcgKzMwNjEs
NyBAQCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZlcigp
LT5iZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNp
emUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4oc2Vn
bWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYwZWM4YzgzOGE4NzA4MTcwZTFm
MmM2OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJjOWUyOGI3Nzk4NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMjEsNyAr
MjIxLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAg
ICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBh
Mjc4YWYxZGM2YS4uOTljYTFkODhiODMyYjBmYTNkNGM3MmYxNTViMzZkZGQ1YTFjM2IyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGQwY2I3OWU1ZDFlNjVm
OGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdkMWI1
MTNlYjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5kUXVl
dWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0
cmluZykgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgo
KSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgp
IH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfSwgWyZjaGFubmVsXShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIGRhdGEsIGJ5dGVMZW5n
dGgpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAg
IH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsK
KyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0ZUxl
bmd0aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5n
dGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUgZXhj
ZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4Y2Vw
dGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0cmluZygiRmFpbGVkIHRvIGxv
YWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDQ5OWRhMThkMTc0ZmU3ODkyOGI4NzNjYTcy
Y2I3ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIyNGZkMWIyODAwNGNhNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKIHsKICAgICBpZiAoYXV0byogc291
cmNlID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
aWYgKGlzUmF3KQotICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAg
IHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKICAgICB9
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OmNo
YW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGkKIAogdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgYm9vbCBpc1JhdywgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAo
aXNSYXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAgICAgcG9zdFRhc2tUb0hhbmRsZXIoaGFuZGxl
cklkZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdURk1vdmUodGV4dCkuaXNvbGF0ZWRDb3B5KCks
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0byYgaGFuZGxlcikgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkp
OworICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNl
aXZlU3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICB9KTsKQEAgLTIzMCw5ICsyMzAsOSBA
QCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRp
ZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOwogfQog
Ci12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBSVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdE
YXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlk
ZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplICB9IH0sIDApOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2Vp
dmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgc2l6
ZSAgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90
ZVNvdXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdjNTU0ZmRiMTVlZTIzOWRlNjJiMzUwY2UuLmY4
YzA1ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFlZGEwYTczNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRh
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hhciosIHNpemVfdCkg
ZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIpIGZp
bmFsOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4OTkwOTMyYzQzODJiYjYxZmYwMDQ5ODRjNGIz
OTkwZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4NDUzMzExY2YzMWNiZjJiODVjMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0
aWMgTlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9vbCBpc0ZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZl
ciwgdWludDMyX3QgbGVuZ3RoLAogICAgICAgICBpZiAoIWZpbGVDb250ZW50cykKICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgICAgICBwb3N0QnVmZmVyID0g
ZmlsZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29udGVudHMt
PmRhdGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9zdEJ1ZmZlclNpemUgPSBmaWxlQ29udGVudHMt
PnNpemUoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIE5QQVBJIHNwZWMgc3RhdGVzIHRoYXQg
dGhlIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApp
bmRleCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjLi4wOTBkNWE0MGNl
YmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3AKICAgICAgICAgcGx1
Z2luU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBl
UGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAKQEAgLTkwMSw3ICs5MDEsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludAogICAgIG1fbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWlt
ZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKG1f
c2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDI0NzQ5MTQ2
ZDkwZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNjZjIuLmE1ODJiNjY1MmZhNTAxZDZlNzdkYzI0
MjkwNmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTk1LDEyICsxOTUs
MTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBp
bnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJy
aWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2
NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDJhNjAxY2MwOGI0MGU3NWY5
YWUxOGE2MjVhODJjMjYxZmZkN2MyN2UuLmU5MThmODkyYjdiZTA4MDU2MTRhZWU0OWViZTI5M2Ez
MjIwMWUwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHMKICAgICBzdGFydChyZXNwb25zZVVSTC5z
dHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVy
cyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8g
RGVsaXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28g
YXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBl
UGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBTdHJpbmcmIHJl
c3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0cmluZy5s
ZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRl
bGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHRD
U3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwogICAgIHN0b3AoTlBSRVNf
RE9ORSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpzdGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVy
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewog
ICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKCkKICAgICB9CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0Zp
bGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fZmlsZUhh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBh
dGguaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCkBAIC0y
NzYsNyArMjc2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0Zp
bGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOworICAgIGludCBieXRlQ291bnQgPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNvdW50ICE9IGxlbmd0aCkgewog
ICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdoZW4gd2UgYXJlIG91dCBvZiBk
aXNrIHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KICAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApp
bmRleCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4N2Q0M2U1MjFmMDg5OTIzYWJlLi45YjA3MDk5ODg0
NzIwNDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYyOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNlVVJM
LCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsKIApA
QCAtNzMsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBu
b3RpZnlBbmREZXN0cm95U3RyZWFtKE5QUmVhc29uKTsKIAotICAgIHZvaWQgZGVsaXZlckRhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGVsaXZlckRhdGFUb1Bs
dWdpbigpOwotICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpOwogCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKICAg
ICB1aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDZjZGJlZGNkMDg1NzJlMGI2NTk5ODU0M2ZkZjQy
ZjI1ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMwNmQwZmZkODJhY2M4MmYyOGIwOWNmZTAyMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTE3NiwxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFT
Y3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CiAg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVz
KSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwot
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlE
KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZp
bmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Niw3ICszNjYsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBjMDJmODQwYzQwNzQ4MDFiZDg3NGY2Y2Y4MzJlOTdiODg0MWY1YzQ5Li4x
NTEzZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2NiYmQwNzExZjdkMmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTcsNyAr
MTE1Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291bnQp
Cit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgY291bnQpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAo
IXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGNvdW50KTsKKyAgICByZXF1ZXN0LT5h
ZGREYXRhKGRhdGEsIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVh
bUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE2ODQsMTQgKzE2ODQsMTQgQEAgdm9pZCBQREZQ
bHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
VVJMJiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lk
IFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVu
dFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRD
RihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1f
ZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3Ro
KTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOwog
ICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiB9CiAKQEAgLTE3MjksNyArMTcyOSw3IEBA
IHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExl
bmd0aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRM
ZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQ
bHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAppbmRleCBkM2M3YWM3MDUxMWZjNzJjODcwODRiOGEzNzRmOWQ2YzcyNjg1
OWIwLi4xMzU1Y2ZmNGViNzdmNmY3MTdkYjkyMGUyMTQwNThmYzE2YjJmZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlk
UmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhh
cyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2Fk
aW5nKHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBU
ZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEu
Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5n
LgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmlu
ZGV4IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYyMzg3MGE2MDllMzM5MzlhY2YuLjljZWQ3ZGEwNzUw
MmY2MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTMzMCw5ICszMzAsOSBAQCB2b2lk
IFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVzcG9ucwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShzdHJlYW1JRCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlm
aWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdm9pZCBQbHVnaW5Qcm94
eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewot
ICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250
cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFSZWZl
cmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgpKSwg
bV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShz
dHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0
YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1
aW50NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5ICszNTAsOSBAQCB2b2lkIFBsdWdpblByb3h5Ojpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyXwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwg
aGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5n
dGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFs
U3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAwMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEyZTU2
MTJjNmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgxNjhkZDNhNzM4ZmVkMmIwZGMwNzE0NGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg3
LDExICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJl
YW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlE
LCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRl
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCBiNjRhY2FiZGY3NTNhYTg5ZTdiNzBlNGQ1NmU1NWQ3NzBlZDMyMDIxLi4zYTA5
NjgzZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMwNzY4NDA3YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7
CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1
Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCBy
ZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBt
aW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZv
aWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3
OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgbV9wbHVnaW5WaWV3LT5tX3Bs
dWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CiB9
CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2lu
LT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQg
ZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4MjhkMzBhMDZlOWQ4ZmRk
NzhiNTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40YTFmNWFjNTdhOWQ3NzU0ZTY0MDc4ZjdkYTQyYjU3
NmEzMzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdEZXN0cm95
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwgbV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95
ZWQoKTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBtYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZv
aWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRG
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2MjEw
Mi4uMTc2NzRkZjAyYzMyYTEzZWRhODUwNmUyNzBkZmQ3NjM3MDM1MGEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTY5LDcgKzExNjksNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IGNoYXIqIGRhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCAwMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiLi4yYWMyNWRj
ZDM5ZTQ4MGRmOTM2YzZhZWI3OWVjMjBhZmVjMmQ0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
CiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
Ly8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KLSAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJpZGVC
dWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZv
ck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIp
KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1
ZmZlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBjNTM2
MjVhMTg4MzhmZDBkMjczZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4xNTIwMGVjZDkxOTI2OGMzNDA3
ZDkxOWMwNjY3MThjOTMyNDYxNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTdHJlYW1XaXRo
UmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogCiAgICAgLy8gRklYTUU6IENhbiB0
aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1N2Fh
NGE4MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4wODYxNWU0OWY1MTMwM2E0ZjU5
Y2FkMDUzOWNmZmU3ZDlhMDViMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbTo6c3RhcnRTdHJlYW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBsb25nIGxvbmcgZXhwZWMKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KFtoZWFkZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBsZW5ndGhdKTsKIH0KICAgICAg
ICAgICAgICAgICAgICAgIAotdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgX1dLUEhTdHJlYW1EaWRSZWNlaXZl
RGF0YShtX2luc3RhbmNlLT5ob3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+cGx1Z2luSUQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RyZWFtSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dF9jYXN0PGNoYXIqPihieXRlcyksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRl
cykpLCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNzU0MjY5MzgxMmU3
OGI3Zjg5YThlMzQ0MDM3MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNlZjhjMDZhY2M5ODhhYTI0YWI4
ODI3YTM5OGY1YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpl
dmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOltKU0RhdGEgbGVuZ3RoXQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25zZShy
ZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKKyAg
ICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0tPmRp
ZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IDc2MTE3MWNlYTdjYTVmYTY3MjhjOWRjMDBkMmViN2IyZDE4Zjc3
ODAuLjY0YzI3N2I1ZjQzZDE1MWJkYTQxNWJlYzliNTlkNWYzY2NmYzA4NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUxOSw3ICs1MTksNyBAQCAtICh2
b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEg
KilkYXRhCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0qIG1hbnVhbFN0cmVhbSA9IF9wcm94eS0+bWFudWFsU3RyZWFtKCkpCi0gICAgICAg
IG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBtYW51YWxTdHJlYW0tPmRp
ZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10p
LCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVn
aW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmlu
ZGV4IDJiYzk3OGQzNDAzZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMuLjE5MzkwYjVjMDJh
NzVmNzlmOTY2ZjgxYTQxYTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveVN0cmVhbVdpdGhFcnJvcihOU0Vy
cm9yICopOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggZjg4OTBkMDUxNmIyMTJhY2ZlNzY5NjY0
MjVkZTU0NDEwNGM5YTY5NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMyNjkxNTgxNGU1NjYyMGM5NTUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciopCiAgICAgZGVzdHJveVN0cmVhbVdpdGhSZWFzb24oTlBSRVNfRE9ORSk7CiB9CiAKLXZv
aWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFdlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8gZGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWJ5
dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5k
ZXggMzNiYTU3YzE1NWYxOGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5NWU5Yy4uYThhMmVlODE3MWEy
ZGI4ZDgyYzhiYjA1YTk5ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEwNTEs
NyArMTA1MSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNl
aXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICB9CiAKICAgICBpZiAoX21hbnVhbFN0cmVhbS0+
cGx1Z2luKCkpCi0gICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAg
ICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVn
aW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJv
cgpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICAKICAgICAgICAgc3RyZWFtLT5zdGFydFN0
cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVj
ZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pT
RGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwog
ICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0N2UxNmIyYTRmYjAy
OGU0OGM4NDA5ZTg2OGNhNzIzODRlYWEwOWIuLmNiOTQ1MzRjMjdiZWEyZDZlOGVhN2FlZGQwMWZk
YWVmMTE0ZTU1ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0
b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBo
YXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90
KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0
byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQnVmZmVyKToKKwogMjAyMS0wNi0wMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNzgzNTYuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlYzdkMTE5ZWE4MTliMDE5OWE4NzNmMDIwNzY2ZDQx
OTIwMWFjMmEuLmVhNzMyYThlMGUwYzI2YzlkOTBhMTIzNTk0MGFjZGU1N2UyMTYzYTYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0xMDMsOSArMTAzLDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXJMYXJnZVNlZ21lbnRzKQogewotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IwKDB4NDAwMCwgJ2En
KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMSgweDQwMDAsICdiJyk7Ci0gICAgVmVjdG9yPGNo
YXI+IHZlY3RvcjIoMHg0MDAwLCAnYycpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4
NDAwMCwgJ2EnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CkBA
IC0xNjAsNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQogCi1zdGF0aWMgdm9pZCBjaGVj
a0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkKQorc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKIHsKICAgICAv
LyBleHBlY3RlZCBpcyBudWxsIHRlcm1pbmF0ZWQsIGJ1ZmZlciBpcyBub3QuCiAgICAgc2l6ZV90
IGxlbmd0aCA9IHN0cmxlbihleHBlY3RlZCk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBj
b25zdCBjaGFyKiBleHAKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQog
ewotICAgIFZlY3RvcjxjaGFyPiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rv
cjxjaGFyPiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMyA9
IHsnaScsICdqJywgJ2snLCAnbCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdi
JywgJ2MnLCAnZCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAn
aCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwogICAg
IAogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHMxKSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVh
bFRvKQogewotICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPGNoYXI+PiYm
IGNvbnRlbnRzKSB7CisgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWlu
dDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKICAgICAg
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwpAQCAtMjA5LDcgKzIwOSw3
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgYXV0byBidWZmZXIx
ID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKICAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9y
PGNoYXI+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CisgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIx
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2Mn
fSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdl
dCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRvSGV4U3RyaW5nKQogewotICAgIFZlY3RvcjxjaGFyPiB0MSA9IHsweDExLCAweDUsIDB4
MTJ9OworICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHQxKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430613</attachid>
            <date>2021-06-04 14:32:06 -0700</date>
            <delta_ts>2021-06-04 14:43:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604143205.patch</filename>
            <type>text/plain</type>
            <size>260409</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCmluZGV4IGQzYTNiMDA2NjRkNmRmZTg1YWUyYjkwMjZmZWVlMmM5NzY0MDZhMjkuLjY4
MjI3MTE0Y2YwNzM5YTQ3MjBmYzNkNjQzMGY0NDk1OTdiYTA2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ1NTRm9u
dEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBT
VkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1f
c3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChh
dXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRl
ZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKm90ZkZvbnQpKTsKICAg
ICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBs
YXRmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJT
dHJlYW1FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVu
Y29kZXIuY3BwCmluZGV4IDNlMWJiZTIzOTQ2MGJiOGRhZTEyNWM3OGM0ZGE4Y2JhOWY2YmYyODIu
LmNlMTA4Njc3Yjk2NjVkNzU2ODEyZWFkYmEyM2Y1YjIzMDliNTQ2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmVuY29kZShj
b25zdCBTdHJpbmcmIGlucHV0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJ5dGVz
LnNocmluayhieXRlc1dyaXR0ZW4pOwotICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXNXcml0
dGVuKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGJ5dGVzLmRhdGEoKSwgYnl0
ZXNXcml0dGVuKTsKIH0KIAogUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5j
b2Rlcjo6Zmx1c2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggNDJmMjJiNDZmYzA0YTQ0
NmM4YzdlM2FjOGQ5MjQwODQyYmQ0MGYyNS4uZTFlZjRhYjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMx
NDVkODc0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAg
QmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3QKICAgICAsIG1fc2l6ZShidWZmZXIuc2l6ZSgpKQogewog
ICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVj
dG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci5zaXplKCkgfSk7CisgICAgYmxv
YlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwog
ICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZN
b3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IGQzNjQ0OWNjOGEwYjZhMjY3NDQzNmE2NmU3ZjQ2
MmVlNzAzYTk1M2MuLmMxZTYwYWUxN2NjYjg5NWZhMTdiMGNiNmI0ZGY2YWQ5YTBjYjU2ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIG1fY2xpZW50LT5kaWRT
dGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7
CiAgICAgQVNTRVJUKGRhdGEpOwogICAgIEFTU0VSVChkYXRhTGVuZ3RoID4gMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGRmZDMyM2I2NTFiMGMxMGJh
MmYzNzY5ZWViMGY1YWRlYjhjYjJjODIuLjljYmI5YjYxMTFhNzE2MjcxM2RkNWRjY2U3ZjA1M2Vl
YzA4NTY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRl
eCA4ZGZkZDgzNTNiZjdkYmNhMjI1ZWJlZDgxOTIzZGM4NzI1M2ZkOThmLi43ZmNiM2VlMjcyMjNm
ZGUyNTk0NjdkNzY4ZjhiNzM3MmRmMTAyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1
ZXVlOjplbnF1ZXVlKENTdHJpbmcmJiB1dGY4KQogdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1
ZXVlKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CiAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0
YS5kYXRhKCkpOworICAgICAgICBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJpbmFyeURhdGEuZGF0YSgpKTsKICAgICAgICAgbV93cml0ZVJhd0RhdGEoZGF0YSArIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAyLDcg
KzEwMiw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHJlc3VsdCA9IGxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKSkgewotICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICBtX3dyaXRlUmF3RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKGVycm9y
Q29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDNh
ZTY2NTI2Y2MxOGI5MjE0ZGYwNTU3NjhlNDU2MzRkOTAwZTBhY2MuLjVlZTY0NWZiZWMzM2U5Y2Vk
MzU0MDI1OGFhNjAyN2U3Mzg1OGY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHVzaW5nIFdyaXRlU3RyaW5nID0gRnVuY3Rpb248
dm9pZChjb25zdCBDU3RyaW5nJiB1dGY4KT47Ci0gICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVu
Y3Rpb248dm9pZChjb25zdCBjaGFyKiwgc2l6ZV90KT47CisgICAgdXNpbmcgV3JpdGVSYXdEYXRh
ID0gRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT47CiAgICAgZW51bSBjbGFz
cyBDb250aW51ZSB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBQcm9jZXNzRXJyb3IgPSBGdW5jdGlv
bjxDb250aW51ZShFeGNlcHRpb25Db2RlKT47CiAgICAgTmV0d29ya1NlbmRRdWV1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgV3JpdGVTdHJpbmcmJiwgV3JpdGVSYXdEYXRhJiYsIFByb2Nlc3NF
cnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMjE4Y2U0Yjk0N2M0MjU0N2VjNGY5Y2Y5ZTg1MTdhNWRj
MzUyYzRjNC4uYThmMmE2NTdlM2FiN2Y4ZDMxOGUyMDY1Y2M1ZTVkNDViNTlkZWViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAg
ICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRp
ZmllciwgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0
d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRp
ZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhm
MDQwNDQ0YmIxODNkMTYyYzYwZjZmZDQ3NTJiZWNkOWNlNmFiOTkuLmJjNjNlZjhjMWY0M2M4YWRj
ZTdkMTdiZWE5MDA0NzE3YWQ4NDE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE5NywxMyArMTk3LDEzIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFn
ZSYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2Fk
ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNl
KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZy
YW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBA
IC00MjQsNyArNDI0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudExvYWRl
ciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVy
Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA5MywxNCArMTA5MywxNCBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3Bv
bnNlSW1wbCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwog
fQogICAgIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
RGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMoZnJhbWUpKQogICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmFnZW50cywgaWRlbnRpZmll
ciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGds
b2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNj
b3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBh
Nzc4ODRkYmU1YTJjMzFiNmYwNTM5YzA0MGYzODdjZTdmZjkyMTc2Li42NzdjNWI4MTJkNGYwNDcy
MjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc2l6ZV90IE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogICAg
IHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CiB9CiAKLXZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgaWYgKCFtX2RhdGFC
dWZmZXIpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3Vy
Y2VEYXRhKGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29u
c3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYg
KCFyZXNvdXJjZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGY5NjYxMTI2MjE1NmI4ZWNhNDIwOWIzODVhMmUyMjhhZWJjMzEw
YjUuLmVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyAr
MTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgp
IGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250
ZW50KCk7CiAKICAgICAgICAgU3RyaW5nIG1fcmVxdWVzdElkOwpAQCAtMTQxLDcgKzE0MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUpOwogICAgIEluc3BlY3RvclBhZ2VB
Z2VudDo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkID0gZmFsc2UpOwotICAgIFJl
c291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICBSZXNvdXJj
ZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBtYXli
ZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQg
YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNl
Kik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBjYzkwZmU5ZDEwMGRjMjAxN2RlOWFmNjdmZGMz
ZDk3YmY1ZjljMjllLi5jNjk2NzBlMWMzMzI1Mjg3MzhjZGUwMWYxYWQwNjdiY2NiMzkwMDkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMjQsMTMgKzEyNCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywg
dGV4dEVuY29kaW5nLCB1c2VEZXRlY3Rvcik7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChkYXRhTGVuZ3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0
aCA9IHN0cmxlbihkYXRhKTsKKyAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpOwogCiAgICAgICAgIG1fcmVzcG9uc2VUZXh0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQpAQCAt
NTcyLDcgKzU3Miw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKGlkZW50aWZpZXIsIG51bGxwdHIsIGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgp
LCAwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRS
ZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faGlk
ZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCBkMWJhMjc1NTMxN2ZjYzVmZGU3MGY1MjU3MjcwMTA1ZjJh
NGI1YzRmLi42NmFlN2E0NmZlNzk5MWIzOTJiYjA2NTMxZDM2NTA2YmEzMWUyNDE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OkxvYWRUeXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9h
ZGVyKik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2Um
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCBmNTVjYmVmMzdlMjk0ZWE3YWJlOTM4OWE2YjBhNDRiMWNiNzFh
ZGJiLi5lMzI1YzE4ZGQ0ZDdkMWU2ZDE1N2MwOWNkNDg0ZWFkMjRhZjQ4NDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAotc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJp
bmcqIHJlc3VsdCkKK3N0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5n
KiByZXN1bHQpCiB7CiAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICBUZXh0RW5jb2RpbmcgZW5j
b2RpbmcodGV4dEVuY29kaW5nTmFtZSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnMKICAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05h
bWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewogICAgIGlmICh3aXRoQmFz
ZTY0RW5jb2RlKSB7CiAgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRh
LCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCmluZGV4IGRlYzNkMDAxYjFkNDFkNGYzZjI0NWNhZjUwYWRmNzg4YTE5
NjUwMDcuLmI1MWFkZGIxYmQ4ZjJjY2U2OTU2MDc5OWNkMWQ5NTJkMmRlNDI4MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
aApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRpbWVzdGFtcCgpOwog
CiAgICAgc3RhdGljIGJvb2wgbWFpblJlc291cmNlQ29udGVudChGcmFtZSosIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwotICAgIHN0YXRpYyBib29sIGRhdGFDb250ZW50
KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3Rh
dGljIGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0
cmluZyogcmVzdWx0KTsKIAogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZT4gYnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSopOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJh
bWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCAzYmRmOGNj
YzUzYjE1NzVmNTViZTg2Y2E2NzdkNzQ4MTJmOTc5NGIwLi5iNGU2YTNhNTNiNGMwYzBkYTFjMzE3
MmRkNDJjYWU2YThjZDIxZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb24KICAgICByZXR1
cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiti
b29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJv
dGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmgKaW5kZXggYjAyYTJhOTg3NjY4MjNiNWQ1NTI4MTg1MjcwYzUwMDAwMzZjYzAyOC4uOGI2
ZGVmZmZhYjgwZjVkYWMyNTg3ZTM3MWMwMTg3OWI5ZjNmZGY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIGJvb2wgY29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICBib29s
IGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgc3Rh
dGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVu
dExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKaW5kZXggMDQ3MjM5NmRlNWZkYTlk
ZDg3NWEzODMzMjA5MzAxNzA0OTNkZWMzMi4uMjE1YzA0ZWM5ODk1ZTlmMWU2ZTE0N2RhODIwOTMw
MDk4NTIzOTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYjlkYzViMDZh
ODhhZDE5ZWRlOWRhOGEwMDU3OWRhMWFhODdiM2IxOC4uZGY2N2MxNTQ0ODQ0ODI3NzM5YWQzZTI3
YzBjMzY5NzIzYWU3OTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFm
dGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBE
b2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIC8vIEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFyc2lu
ZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0aGUg
ZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1w
b3JhcmlseS4KQEAgLTExNTgsNyArMTE1OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRV
c2VBY3RpdmVTZXJ2aWNlV29ya2VyRnJvbVBhcmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lCiB9
CiAjZW5kaWYKIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX2dvdEZpcnN0
Qnl0ZSkgewogICAgICAgICBtX2dvdEZpcnN0Qnl0ZSA9IHRydWU7CkBAIC0xMjUzLDEzICsxMjUz
LDEzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpCiAgICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKIH0K
IAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1fbWFpblJlc291cmNlKTsKICAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCkBAIC0yMzIwLDcgKzIzMjAsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChTZWN1cml0
eVBvbGljeVZpb2xhdGlvbgogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
Y2hhciogZGF0YSwgaW50IHNpemUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAg
ICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IDQ1YjIwMmJjZGY0YjQ0YTY4ZGUwNWZlODI3Njk3OTQ4ZThjZTI0NWIu
LmQ1Mzc5NDdlMDJmYWRmZjI2YmZhYjBlODNkODk1Y2E4NzNjZTA4NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zNTYsNyArMzU2LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAgICAgLy8gVGhl
IFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhl
IGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlv
bkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlv
bkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7CkBAIC00NTAsNyArNDUwLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0TWFp
bkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0TG9h
ZChjb25zdCBjaGFyKiwgaW50KTsKKyAgICB2b2lkIGNvbW1pdExvYWQoY29uc3QgdWludDhfdCos
IGludCk7CiAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBz
ZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKQEAgLTQ3Niwx
MyArNDc2LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9y
IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmlu
ZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1w
dHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCAxOTI1NTY5OWIyNGYwMmU5N2ZjMGRjNGRjYWM0MjU4ODUzM2UwODEx
Li43OTc5ZDk5Yzg5MjRhZTZmN2ZjYjYxYTViOTczOTgxY2IzMDM0OTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDI1
LDEzICs0MjUsMTMgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291
cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZywgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZywgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IGJmNDE2MjdlMWQ3Nzg4
OGFkMDdkMjMwZWZjMzU0NWMzNGRkNTg4ZTAuLjA1YTI1ZWNlYjI0ZmNlOTY1Nzk5NzA0ZTAxOTQ4
NWFjMDVlMzM1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKQEAgLTg1LDE0ICs4NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgICAgIHZvaWQgZGF0YVNlbnQo
Q2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3Jr
ZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VU
aW1pbmcmKTsKICAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9z
c09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCA2NDUxNjgxOTBlMzc2YTE3ZTJkOGJhNjQ2NWJlMGMw
ZGRlMzY4MmYwLi44NWMwYTM4NmNkYzIxNDcyNzA0YWNiOWMwZjRmMmQ2MDQ4OTEwMjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBiZWdpbigpOwogICAgIGJvb2wgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBk
aXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9IHRydWUsIERvY3VtZW50KiBvd25lckRvY3Vt
ZW50ID0gbnVsbHB0cik7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVf
dCBsZW5ndGgpIHsgYWRkRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyks
IGxlbmd0aCk7IH0KICAgICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmlu
ZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZy
b20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBlZmQ5M2VhZTRmMTdkZDM2ZjczNzExNDdl
ZDBmMWM5NTJmNWVhNzBjLi44MzM2Y2IxOGI2N2QyZmE4MDkzZGU3OTJkZTNkNTUwNWU1ZmU4ZDcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtODQzLDcgKzg0Myw3
IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQoKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGlu
dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZmVhMDM4MjY5NjM2MDVjMzgzZjZiYTIzMTNlOGU0NTc3N2NlMTE1Ny4uNjlh
MTEzMjM4YTBhOGM2YTZmZTViMDM2ZGYwN2Y0ODM5Zjc5YWQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOwor
ICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBp
bnQpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmlu
YWw7CiAKICAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCAzMWQzM2EzMzlkMGY3MGNlZTU2OWJlYmZlZDUyZjM2OTQ3ODY1ZWRkLi4zZWI1
Y2VlNjQyNmM0NGRjMTc0MjIyMTVmYWFiMTU2OTMxZGIyZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggYTc5OTNjYjliNTUzODE1NTdmMTcwNmQwYmEzOTk1YzA5Mzk3MWU0Mi4u
OTlkNjk1NWE5MmQwZGMzZWRhNGQxMjExOGViZjA1NWYwODA3NGVmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBA
IHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIE1lZGlhUmVzb3Vy
Y2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJj
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4
IDk0YTY4NDJlNDg5MDQ0Yjg1NWIwYzMyNmQyMmNjMWQzNDRiMmNmMjQuLmZmNmMyODg3MTAwODhm
NGIwNTRjZTQ3NjNkNWRhMGRkYzkyYzIwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0
YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcg
bG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IGVjZGQxN2FlMGI2N2U0NTczZTA3OTViMTI0
MDY5NmQ5MjFjZGI1MGQuLmFkYWU2NDAwZmM0YjMzOGJjN2JjNWI4NjlhMjQ1YjJlOTBhYjQ0YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAg
ICAgfSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRh
LCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwog
fQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvCiAgICAgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRh
TGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAg
ICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuaAppbmRleCBkZmYwNjE0YWFjOTE0MWQ0NDAxNTEwOTg4YzFlMTUxODE5ODIyY2I0Li40OGJi
MjE1M2M5M2YyZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNDEsNyArNDEs
NyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciop
IHsgfQogICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTc0
LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFy
KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApp
bmRleCBjYzFiY2VlMjZjM2E0MWY1ZDg5Y2M4ZWJiNDJmNDQ0ZjcwMzMzMjljLi5jNzA5NTg4NjQ4
NzVkNTE1MTMxOTQzN2U4YWRhNzdmMTRkZGJlM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpKQogICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+
aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2UobV9mcmFtZSwgaWRlbnRpZmllciwgbG9hZGVyLCByLCByZXNvdXJjZUxv
YWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8g
Tm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJl
IGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xODgsNyAr
MTg4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ24KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKCZtX2ZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGVycm9y
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNl
bmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxkCiAgICAgLy8gb25seSBkaXNw
YXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IGI4YWE0ZDNmYmRhZjU2ZjM0ZDc1YjVlMmU5
YmI5OTg3NWY2OWI5YzQuLjRlYjBmODI1ZmIwNDA4YTU1MGY4YjY4YzdhZWEzZDc0YWNkZWI5ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCkBAIC01
MywxOCArNTMsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9IG51bGxwdHIpOwot
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFp
bmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDUzNTM5ZmI2N2RlMWY1ZjE2Mjg0MjlkYjNm
MWFiMmY1M2NlZGQ2NzIuLjkxMGM2N2FlMDkxZDhjN2FlMzM0ZDA1ZDZiODI5YTA0MDY0YTNiM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzIwLDcgKzMy
MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJj
ZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hh
cmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBA
IC01MzMsNyArNTMzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KICAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2lu
Y2UgYSBzdWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEg
d2F5IHRoYXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAw
LCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQogewogICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xl
bmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgogICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAm
JiAhbGVuZ3RoKSk7CkBAIC03MjMsNyArNzIzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCmluZGV4IGQyYWI3MTg3Y2RkMmIyZDc1ZWYxNDc2NWRiMWMzMDE5YTA2MWI3MGQu
LjUxNTM0MzI2MDc1Y2JhZjE5MWZmOGM3NmJkNzFjNzQzNGM2MGMxYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGlj
eUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZl
cnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBAIC0xODgsNyArMTg4LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
U2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlw
ZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQo
KTsKIApAQCAtMTk4LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3Bv
bnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBjY2YxMjE3OTBh
NGVhYzMxMTE1Njc0ZjViOGY1Y2NiMjQ3ZmYwYTVlLi4wZDQwNTJiYzAwYzJmZjEzNmZlMzRkNzZh
MWI1NDIyOGVmMjhiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2VQb2xpY3koKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdM
b2FkZXIuZ2V0KCkpIHsKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFT
U0VSVChtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBlZDU5MTkyMTljYmJmMzM0Mzk3NjY0ZDUxMmE5ZjdkNmM5N2VjYWMxLi41Mzk4
NjYyOTI0OGY2ZTM1MTJiYzkyNTQ0MTkzMzc4NzgwZWNlMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAt
OTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tS
ZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgaW50LCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaAppbmRleCBj
Nzg2ZDdiM2U1ZDg4NTk5NjU5YTNmNGQwOWJmOTZlMjBkYjBkYzMzLi5lMTgyOGFjYjg0OTU2MzI3
ZDZhYzEzYmRlYTAxOTRkYzE1M2E5ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
UmVzb3VyY2VEZWNvZGVyLmgKQEAgLTU1LDkgKzU1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0VxdWFsRW5jb2RpbmdGb3JDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpOworICAgIFN0cmluZyBkZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEpLCBsZW5ndGgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZsdXNoKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZUFuZEZsdXNoKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGRlY29kZUFuZEZsdXNoKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOyB9CiAKICAgICB2b2lkIHNldEhpbnRF
bmNvZGluZyhjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiBwYXJlbnRGcmFtZURlY29kZXIpOwog
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDhjYzNj
NTY4YzQzNzk2YWM2MWIzMDk3NTQ3YTg5ZWY4MTJkOThkNGQuLmRkODg5MzVkYWI2NDViNTBjOTA4
YTUyZjlkN2YxODBkYjFmZTIwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNz
TmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAgICB3aGlsZSAobV9wYXJz
ZU9mZnNldCA8IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEobV9wYXJzZU9mZnNldCk7Ci0gICAgICAgIG1fY3VlUGFyc2VyLT5wYXJzZUJ5
dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIG1fY3VlUGFyc2VyLT5wYXJz
ZUJ5dGVzKGRhdGEuZGF0YUFzQ2hhclB0cigpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1fcGFy
c2VPZmZzZXQgKz0gZGF0YS5zaXplKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggMmE5NjQ0ZjQ5YjNhODU1OWM5YmMw
N2EwNGNmZjNiOTk1YTk5YTQ1Zi4uNjI1YmI3ZWIyZTdiNTA3MWMxZDEyYzA3NTIzNmUxZmJlNmJl
ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNp
Z25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciov
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgLypkYXRhTGVu
Z3RoKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIC8qaWRlbnRpZmllciovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
VGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDA2NWJjYWIx
MTc5NmVlNDI3M2JlNmEzZmUxMjU5MDZjZjU3NmJiZmYuLjhlZmUzOWNmN2I4NWRkOWRkNGY4YjQw
OGI0ZWJjNDkxMDE5MDJhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVz
cG9uc2UpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCAxNTgxNWQzNTQ0ZGVhNmUyZjE4MzFmMTk2MzFmZmQ0YjNiMzdhYTJlLi44MjQ1ODg5MDJhYjNk
ZTkwNjZlNGJiZGY0NWE2MWI1NTJiOWE0NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yMjksMTAgKzIyOSw5IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihkYXRhTGVuZ3RoKTsKLSAg
ICBtZW1jcHkoYnVmZmVyLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5p
c1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3Jh
cHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAppbmRleCA4MzIy
ODZhNzk1YWZkOTgxNjQzZDVjNTk4OTJkOTA2NzU3ODFmMDZhLi41NzYyNjBlYTdmOTNlZmYyM2I0
YjQ3ZDFlYThlMDkwY2NkNWI0NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAvLyBBbGwgZXhlY3V0ZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAg
ICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50IGRhdGFMZW5ndGgpIG92
ZXJyaWRlOwogICAgICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICAgICAgdm9pZCBkaWRGaW5pc2hUaW1pbmco
Y29uc3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZjI2
NGYxZGQ3MTIzZDY5MmM2NTdmMWVjZTE0OTk0YzQxOTYzMzQ1YS4uZDRjYWY0ZDVmOWVhNzY2YzYw
MDBmOGZmNzM2YzI0N2MxMzIzYjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
LmRhdGFBc0NoYXJQdHIoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4
IDQ4NzYwNjZkYjQyZTkxMjQ3N2YxMDRhMzEwMTc4MDM4NGU5MmM2MTAuLjIzYjE1NDJmOTVhYmMz
NTE1MWI2MGZlZDA3YTc5NDA5OTBjM2Q4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMTQ5LDcgKzE0
OSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yTWFp
bkVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBj
aGFyKiwgaW50LCBsb25nIGxvbmcsIGJvb2wpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludCwgbG9uZyBsb25nLCBi
b29sKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDU0ZWE1NTA0OTI2Y2VhNDhhZTAyMDIzMThmZTBh
NzYyYTE1NDJiNDUuLjUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1heWJlTG9hZE1h
aW5SZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAg
IHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yTWFp
blJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICB2b2lkIG1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsK
KyAgICB2b2lkIG1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxsQXRPbmNlKTsK
ICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogICAgIHZvaWQgZmFpbGVk
TG9hZGluZ01haW5SZXNvdXJjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGQzODYwNDVjMGFjZjg1MjRlYzI1M2YwNGZmMzNjMDM2MDc2MzRiMWQuLmMwOTc1NzVh
MGE5YTE3ZWNhYmZjMzU5YzkzODBmMTE1OTZkNTZhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKICAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25zZSwgbV90eXBlKTsKIH0KIAotdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+
ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDNlNTFmZDg3N2Q0MzVkMDM2NWY5YTAxNmFmYmQ5YzRjMDgyOWIxM2QuLjAyZDdh
ZDk3YTI4ZDQ3YzNmYWI1ZTNiYWIwN2ViZTliMDY5ZTIzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApp
bmRleCBlOTkyY2I2OTA3NTg5MGIzMmEwZDg5ZGM2YWE4MGI1MGIxOTVkYzUxLi5hY2ZiYmI3MDIw
MjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTE4MSw3ICsxODEs
NyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBh
Z2UqIHBhZ2UpCiAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwg
YXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlIHdv
dWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVhbSB3aXRob3V0IGhhdmluZyB0byBmZXRj
aCBpdCBhbGwuCi0gICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5kYXRhQXNVSW50
OFB0cigpOworICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAg
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAg
aWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAg
ICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCmluZGV4IDRlZWY3MDc0ODFhMDUzOTVkOTYxMmI3ODIyMTY3MzNmNzg0OWRj
MmIuLmYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAg
LTE0OSwxNCArMTQ5LDE0IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJh
dG9yKGVuZE9mUGFydEJvdW5kYXJ5LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBWZWN0b3I8Y2hh
cj4gcGFydDsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBhcnQ7CiAgICAgICAgIGlmICghbV9s
aW5lUmVhZGVyLm5leHRDaHVuayhwYXJ0KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5h
cnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQp
KTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwotICAgICAgICBW
ZWN0b3I8Y2hhcj4gbmV4dENoYXJzOworICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJz
OwogICAgICAgICBpZiAobV9saW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgc2VwZXJhdG9yLiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29u
dGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7
Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YUFz
VUludDhQdHIoKSAgICwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0
YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBi
YXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjA0LDcgKzIwNCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAg
ICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhQXNVSW50OFB0
cigpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVj
b2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFy
eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDNl
NDUxMjhkN2U4ZWVlMzBhMjYxMzZkM2U2ZDM0M2VmOTQ2NDU4NzYuLmE1OTk2OTZkNjY2NDQ2ZDA5
NzI0NDNjZDE0ODYwZGJmMWE5NTkwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
bGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4
IGQwMWZmOWQ1NTIzYzQ4NWMwN2UzNmNlZGJmMTAzZWRhNmVlNjE5ZTQuLjVjZmZhZjdhN2QxZWM2
YjBhNWMzYWUzMjM4NjIyZGUyNzg4Y2JkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCBkN2JkMzI4NzVkNTJkNmQzOTFjM2FlMGZhMWFiYzU5MmJhZGRmODc3Li4y
MTkyZjE1MjBhYTM5YjE3YmU5YmYwMmRlODQ4MDkyM2RkODYyZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpOwogICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoZGF0YSwgbGVu
Z3RoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIH0K
IH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBj
OTZlYjdhYTI0ODJiMzllYTY5NTA1MWJhZTA1ZWMwMTg0ODFhZWEwLi5mZGRmOTc5OTVhZmZjMGU1
MzViZDVjNTE5ZTI2YmFhYzg2MmNjMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29k
ZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY3LDcgKzY3LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKICAgICBz
dGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqKSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIHBy
ZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50LmgKaW5kZXggYzgwMzE1ZTY5MDZkMjI0MDk0NjUxOWUwMjA3MDdjM2Q5MDZmNGIxZi4uMjNl
YWI4ZGYyOTU4ZmY4YjQ5ZjM1NDViNTA4M2ZlMjk4OWVmMTIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIC8q
IGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9h
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGE3Y2UwMGQx
YWZmYjBkNmFhZThlN2ZhYWE1NzQ5YzA3NWY1YzI1NjEuLjg0YTBmZTFlMzM5OWJlYzU2MjMxMjI2
Mjk4NTg5NjFjNmU3ZGNiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiB7CiAgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAyMDlmYWEzNTlkOTg1ZDIzYjI4ZDhiMzAzZmFkZDM5NTU2NDU0ZWJlLi41
NTMwODc0NGE0ODdmNjE3YmJjYjBkNzRlY2Q5NjBmMWIxZTgxMWZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4
IGE2YjEwNDg3NmM4NjY1YTZmMjY0YzVhMjBhMjc5NTk1ZDFhOWYwZmYuLjQ2ZjU0NDVmOWU3YjNl
N2E4NzBjMDcxNDZlMWIzNDRjMzllMmQ1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBDYWNoZWRTVkdG
b250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAg
ICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJl
bW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNv
bnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVk
Rm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmNvbnZlcnRlZEZvbnQpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRy
OwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggMGRhYzdmZjAzY2M4NDZkMTg5NmEwODhmNjI2
MzAyODYxNmJkZmE2OS4uYjZlNjhmM2M3MjlmYjQxYzkyOWE2ZDE3OGRhNjAzOTlmZGM5MWYyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lk
IEV2ZW50U291cmNlOjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChtX3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKaW5kZXggMGYyZjA0MTU0MzEzMjM1MjIzY2RmZmI3
YzVjNGMzNjk0YzRlOTAzNC4uZTEwZDhkOTE2ZmIwZjI1ZmJlYTNmN2FjMmFmNTVmNTcwYjIwZGNh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRs
ZS5jcHAKaW5kZXggZWU0ZjM2MWRkMDgzZGU3M2M5YzRkZTg4MTQxMjQwYWYxNWZiMjkwMy4uM2I5
NjAyMTA5NTk2MzI1YTBkNDc0MzJlNDY2ZjQ1ZjgyZDE2MTBkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgRmlsZUhhbmRsZTo6
d3JpdGUoY29uc3Qgdm9pZCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkK
ICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSht
X2ZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5n
dGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgK
aW5kZXggNThjZjE0MDQ4ZDM1NTMwMjA3N2YxYzRlZDUxNDkyNWE1YzdkOTE0Yy4uM2Y0ODMyYTVh
NjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflBsYXRmb3JtQ29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggODI1ODY1M2Yy
NTUxODJmNzRlY2ZkNGQ4N2FhZTk5YWExNjYzZDExMS4uMDA0MGE4YTYxMTg3ZmIwZTQ5ZTg2ZjMz
NzBiYjhmODIzNzc1YWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC0zNiwxNCArMzYsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ewogICAgIGFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKIFNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmls
ZURhdGEpCkBAIC01Miw3ICs1Miw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CiB9CiAKLVNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3RvcjxjaGFyPiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZN
b3ZlKGRhdGEpKTsKIH0KQEAgLTgxLDE1ICs4MSw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRo
KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPGNo
YXI+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHZlY3RvcikpKTsKLX0KLQotLy8gRklYTUU6IE1vdmUgdGhlIHdob2xlIGNsYXNzIGZy
b20gVmVjdG9yPGNoYXI+IHRvIFZlY3Rvcjx1aW50OF90PiBhbmQgbWFrZSB0aGlzIGVmZmljaWVu
dCwgcmVwbGFjaW5nIHRoZSBWZWN0b3I8Y2hhcj4gdmVyc2lvbiBhYm92ZS4KIFJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIgeyB2ZWN0b3IuZGF0YSgpLCB2
ZWN0b3Iuc2l6ZSgpIH0pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHZlY3RvcikpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25l
U2VnbWVudCgpIGNvbnN0CkBAIC0xMDIsNyArOTYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29t
YmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0g
MSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPGNoYXI+IGNvbWJpbmVkRGF0YTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fc2l6ZSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDog
bV9zZWdtZW50cykKICAgICAgICAgY29tYmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNlZ21lbnQt
PmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOwpAQCAtMTEzLDcgKzEwNyw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAogICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVy
OjpkYXRhKCkgY29uc3QKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMjIsMTEgKzExNiw2IEBAIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCi1jb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGFBc1VJbnQ4UHRyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKTsKLX0KLQogU2hh
cmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAt
MTUwLDcgKzEzOSw3IEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QK
IAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKIHsKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFy
KSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5
QnVmZmVyKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVB
cnJheUJ1ZmZlciBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICV6
dVxuIiwgc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTgsNyArMTQ3LDcg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKIAogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBzZWdtZW50IDogbV9zZWdtZW50cykgewotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0
YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudC5zZWdt
ZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKICAgICAgICAgcG9zaXRpb24g
Kz0gc2VnbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogCkBAIC0xNzgsMjIgKzE2NywxNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBB
U1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwotICAgIFZlY3RvcjxjaGFy
PiB2ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7Ci19Ci0KLXZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKK3ZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRh
LnNpemUoKTsKQEAgLTI0MCwyMCArMjI0LDIwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Citjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBh
dXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8
Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorICAgICAgICBbXShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAogI2lmIFVTRShD
RikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQo
KSkpOyB9LAorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyBy
ZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShH
TElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwg
bnVsbHB0cikpOyB9LAorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAg
IFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEt
PmRhdGEoKTsgfSwKICNlbmRpZgotICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YS5kYXRhKCkpOyB9CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkp
OyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQpAQCAtMzI2LDcgKzMxMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBk
YXRhLnNpemUoKTsgfSwKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7
IHJldHVybiBkYXRhLnNpemUoKTsgfSwKICNpZiBVU0UoQ0YpCiAgICAgICAgIFtdKGNvbnN0IFJl
dGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0YS5n
ZXQoKSk7IH0sCiAjZW5kaWYKQEAgLTM1Myw3ICszMzcsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPnNpemUoKSAtIG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlv
bldpdGhpblNlZ21lbnQ7CiB9CkBAIC0zNjcsMTAgKzM1MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGxlbmd0aCAqIDMpOwogCiAgICAgLy8gQ29udmVy
dCB0byBydW5zIG9mIDgtYml0IGNoYXJhY3RlcnMuCi0gICAgY2hhciogcCA9IGJ1ZmZlci5kYXRh
KCk7CisgICAgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkp
OwogICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAg
ICAgICAgICAgY29uc3QgTENoYXIqIGQgPSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3
ICszNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgICAgICB9CiAgICAgfQogCi0gICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVy
LmRhdGEoKSk7CisgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YnVmZmVyLmRhdGEoKSkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IDhhYzY5ZDU5MTAzNmYxZjYwMGZlODM4NGY2ZmIyOWQ5OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdl
OTA5M2RmOGVkYjYxZWFlYWRkZDAwZWI4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC02NiwxNCArNjYsMTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxT
aGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAKICAg
ICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVj
dG9yPGNoYXI+JiYpOwogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYpOwogCiAjaWYgVVNFKEZPVU5EQVRJT04pCkBAIC05OSw4ICs5OCw4IEBAIHB1
YmxpYzoKICAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRz
IHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5Lgog
ICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3Rl
YWQuCiAgICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24g
YW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBj
b25zdDsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSk7IH0KIAogICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGll
cyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZl
ciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgpA
QCAtMTExLDkgKzExMCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhc2l6ZSgpOyB9CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7
CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAg
ICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAK
QEAgLTEyMywxMCArMTIyLDExIEBAIHB1YmxpYzoKICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmlu
ZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCiAgICAgY2xhc3MgRGF0YVNl
Z21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAg
ICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBEYXRh
U2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQogICAgICAgICBEYXRhU2VnbWVu
dChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGlj
OgogICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
CiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAg
ICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKKyAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhf
dD4sCiAjaWYgVVNFKENGKQogICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5k
aWYKQEAgLTIwNCw5ICsyMDQsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNo
YXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7
CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNF
KENGKQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIz
NSw4IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1Ymxp
YzoKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4mJiwgc2l6ZV90KTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIq
IGRhdGEoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29u
c3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNm
ZWU2MTQyNTEzY2MyMmU2Zjg5ZGM0YzgyNGZhMDcwMmUwOWQuLjVlNDQ2NmNkM2YxNzE4OGEyN2Mw
Y2RlMWVhOGE4MDFiMDJhMjQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTQyLDI0ICs0MiwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0
b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0g
ICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdt
ZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKICAgICAsIG1fc2Vw
YXJhdG9yKHNlcGFyYXRvcikKLSAgICAsIG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKIH0KIAogU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIp
Ci0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1f
c2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hl
ZEVuZE9mRmlsZShmYWxzZSkKLSAgICAsIG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKICAgICBzZXRT
ZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0KQEAgLTc1LDcgKzYzLDcgQEAgdm9pZCBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6c2V0U2VwYXJhdG9yKGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICBt
X3NlcGFyYXRvci5hcHBlbmQoc2VwYXJhdG9yLCBzdHJsZW4oc2VwYXJhdG9yKSk7CiB9CiAKLWJv
b2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5r
LCBib29sIGluY2x1ZGVTZXBhcmF0b3IpCitib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpu
ZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQog
ewogICAgIGlmIChtX3JlYWNoZWRFbmRPZkZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTgzLDcgKzcxLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZl
Y3RvcjxjaGFyPiYgY2h1bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKICAgICBjaHVuay5jbGVhcigp
OwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHdoaWxlIChtX3NlZ21lbnRJbmRleCA8IG1f
c2VnbWVudExlbmd0aCkgewotICAgICAgICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gbV9z
ZWdtZW50W21fc2VnbWVudEluZGV4KytdOworICAgICAgICAgICAgYXV0byBjdXJyZW50Q2hhcmFj
dGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4KytdOwogICAgICAgICAgICAgaWYgKGN1cnJl
bnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0b3JbbV9zZXBhcmF0b3JJbmRleF0pIHsKICAgICAgICAg
ICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9zZXBhcmF0b3JJbmRleCA8PSBtX3Nl
cGFyYXRvci5zaXplKCkpOwpAQCAtMTEyLDcgKzEwMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBh
cmF0CiAgICAgICAgIGlmICghbV9zZWdtZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBtX3JlYWNo
ZWRFbmRPZkZpbGUgPSB0cnVlOwogICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAw
KQotICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZChtX3NlcGFyYXRvci5kYXRhKCksIG1fc2Vw
YXJhdG9ySW5kZXgpOworICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihtX3NlcGFyYXRvci5kYXRhKCkpLCBtX3NlcGFyYXRvckluZGV4
KTsKICAgICAgICAgICAgIHJldHVybiAhY2h1bmsuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTIyLDE0ICsxMTAsMTQgQEAgYm9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4
dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKIAogU3RyaW5n
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4x
RmFsbGJhY2soYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewotICAgIFZlY3RvcjxjaGFyPiBkYXRh
OworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmICghbmV4dENodW5rKGRhdGEsIGlu
Y2x1ZGVTZXBhcmF0b3IpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4g
ZGF0YS5zaXplKCkgPyBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkgOiBlbXB0eVN0cmluZygpOwogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSkKK3NpemVfdCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8dWludDhf
dD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0ZWRTaXplKQogewogICAgIGRhdGEuY2xlYXIoKTsKICAg
ICBpZiAocmVxdWVzdGVkU2l6ZSA8PSBtX3NlZ21lbnRMZW5ndGggLSBtX3NlZ21lbnRJbmRleCkg
ewpAQCAtMTQxLDcgKzEyOSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVl
ayhWZWN0b3I8Y2hhcj4mIGRhdGEsIHNpemVfdCByZXF1ZXN0ZWRTaXplKQogICAgIGRhdGEuYXBw
ZW5kKG1fc2VnbWVudCArIG1fc2VnbWVudEluZGV4LCByZWFkQnl0ZXNDb3VudCk7CiAKICAgICBz
aXplX3QgYnVmZmVyUG9zaXRpb24gPSBtX2J1ZmZlclBvc2l0aW9uICsgbV9zZWdtZW50TGVuZ3Ro
OwotICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21l
bnQgPSBudWxscHRyOwogCiAgICAgLy8gTGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4g
b25lIGJsb2NrLgogICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGlu
IGZhdm9yIG9mIGp1c3QgaXRlcmF0aW5nIHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmgKaW5kZXggNzU2ZWVlMjQ2YjBlMmNhZTIwYzdlZTc3NzllNjVjMGY4ZDczNDYzYy4uYzlmNWIw
NmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQxZTI1ZmQ0Yzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00OCwyNCArNDgsMjQg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKIAogICAgIC8v
IFJldHVybnMgZmFsc2Ugd2hlbiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0g
ICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0
b3IgPSBmYWxzZSk7CisgICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBi
b29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIGEgbnVsbCBz
dHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgaGFzIGJlZW4gcmVhY2hlZC4KICAgICBT
dHJpbmcgbmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVk
ZVNlcGFyYXRvciA9IGZhbHNlKTsKIAogICAgIC8vIFJlYWRzIHNpemUgYnl0ZXMgYXQgdGhlIGN1
cnJlbnQgbG9jYXRpb24gaW4gdGhlIGJ1ZmZlciwgd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVmZmVy
IHBvc2l0aW9uLgogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBUaGF0
IG51bWJlciBtaWdodCBiZSBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplIGlmIHRoZSBlbmQg
b2YgdGhlIGJ1ZmZlciB3YXMgcmVhY2hlZC4KLSAgICBzaXplX3QgcGVlayhWZWN0b3I8Y2hhcj4m
LCBzaXplX3QpOworICAgIHNpemVfdCBwZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAK
IHByaXZhdGU6CiAgICAgU2hhcmVkQnVmZmVyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9idWZm
ZXJQb3NpdGlvbjsKLSAgICBjb25zdCBjaGFyKiBtX3NlZ21lbnQ7Ci0gICAgc2l6ZV90IG1fc2Vn
bWVudExlbmd0aDsKLSAgICBzaXplX3QgbV9zZWdtZW50SW5kZXg7CisgICAgc2l6ZV90IG1fYnVm
ZmVyUG9zaXRpb24geyAwIH07CisgICAgY29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0
ciB9OworICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGggeyAwIH07CisgICAgc2l6ZV90IG1fc2Vn
bWVudEluZGV4IHsgMCB9OwogICAgIGJvb2wgbV9yZWFjaGVkRW5kT2ZGaWxlOwotICAgIFZlY3Rv
cjxjaGFyPiBtX3NlcGFyYXRvcjsKLSAgICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleDsKKyAgICBW
ZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBmYWxzZSB9OworICAgIHNpemVfdCBtX3NlcGFyYXRv
ckluZGV4IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMGJm
MGM0YWZiMDFiNWExYjk5ZWE3YzlmNjZhMzFjMDYyY2UzYWFhMi4uMDc5N2RmYmU4ZDAxOGJlNjM2
MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgYWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVm
ZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggMzg3MTczOGU1ZDVjMDUzY2JkYjJkNGJiOWI3MzAzODJm
YmNhYzQyZS4uNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlcwogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3ZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRh
IHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDU2YTc4OGNkNzUwNDhlZmRlY2FlZTY2ZWNm
YWYwZjk2NTBkYzc4NmIuLjA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRp
bmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQppbmRleCA0OWY4ZmE0YmNlMGQwZjg4MGJhNDM3NTEzYTMyNjZm
NTZmNWEwMDYxLi45ZDBjZTkwYzBiMDE5MjgwNjU4ZTg3MTM4YzFjNTFkMTc2NDY3ODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFBhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlcwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3ZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0
YS5nZXQoKSBsZW5ndGhdKTsKICAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2
YWx1YXRvciBhZGREYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBs
ZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT11dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCmluZGV4IDE1ZTYwZjIwNWNlZDJhNTY0ODlhNDc0ZjAxMTQ3MmI3OThhNmMzNWMuLjQ1ZDE0
YWQ5MDAzNzNhMjdiZjNiMmYzMzIzODIyZmU4ZjM0MTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAog
ICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwog
Ci0gICAgY29uc3QgY2hhciogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRh
ID0gaW5pdERhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRh
LnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUg
PSAwOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYg
KCFrZXlJZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXRE
YXRhLmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5k
ZXggZTFlNWMzMDQzNTZjMGFhOWQ5YzA1NDVkOTZhMzVhNjYzY2RiNzgzZS4uNGRkYjZkZjgzZWNi
OGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7CiAgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkg
KiBzaXplb2YodWludDMyX3QpOwogCiAgICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBh
Y2l0eShidWZmZXJTaXplKSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGJ1
ZmZlci5ncm93KGJ1ZmZlclNpemUpOwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVs
cy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAg
bV9zaXplID0gc2l6ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCks
IG1fc2l6ZSk7CiAgICAgICAgIGNsZWFyKCk7CkBAIC0yMDUsOSArMjA1LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1f
c2l6ZSkpOwotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRh
dGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OworICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9
OwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAg
IG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRzKGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMzZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3MTku
LjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2MyZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4UHRy
KCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzZWQ0ZTA1YzQzOTRk
ZmY2M2FlNWZjNmJhMWVmMWE4MDQyNTQzY2I3Li5hMjhlNjFjMDJhNzJjYTkzODlhNjg2MzI1YjU0
NmUzMWM0YzA0OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9
CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCAx
ZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1MTk4ZjgzNTA2ZGUzOTM3Li5jY2QxYTEwYmExZjhkYjg1
NTFlZDk2Njk3ODBjNzlmMDA2MTU3ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgc3Rh
dGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQs
IHVpbnQxNl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3Jp
dGVVSW50MzIoVmVjdG9yPGNoYXI+JiB2ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQorc3RhdGljIGJv
b2wgd3JpdGVVSW50MzIoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQog
ewogICAgIHVpbnQzMl90IGJpZ0VuZGlhblZhbHVlID0gaHRvbmwodmFsdWUpOwotICAgIHJldHVy
biB2ZWN0b3IudHJ5QXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPigmYmlnRW5kaWFu
VmFsdWUpLCBzaXplb2YoYmlnRW5kaWFuVmFsdWUpKTsKKyAgICByZXR1cm4gdmVjdG9yLnRyeUFw
cGVuZChyZWludGVycHJldF9jYXN0X3B0cjx1aW50OF90Kj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6
ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rv
cjxjaGFyPiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDE2
KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIHsKICAgICB1aW50MTZf
dCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25zKHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFw
cGVuZChyZWludGVycHJldF9jYXN0X3B0cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9m
KGJpZ0VuZGlhblZhbHVlKSk7CisgICAgcmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdF9wdHI8dWludDhfdCo+KCZiaWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5W
YWx1ZSkpOwogfQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0
ZjQ2NDY7IC8qICd3T0ZGJyAqLwpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmICghbV92ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fdmVjdG9yLnNpemUoKSAr
IG4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX3ZlY3Rvci5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBuKTsKKyAgICAgICAgbV92ZWN0b3IuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG9mZnNldCArIG4gPiBtX3ZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICBtX3ZlY3Rvci5ncm93
KG9mZnNldCArIG4pOwogICAgICAgICBtX3ZlY3Rvci5yZW1vdmUob2Zmc2V0LCBuKTsKLSAgICAg
ICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBuKTsKKyAgICAgICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBuKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MjIsMTEgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3Rvcjxj
aGFyPiYgbV92ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX3ZlY3RvcjsKIH07CiAjZW5k
aWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjxj
aGFyPiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBW
ZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1w
dHkoKSk7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogCiAjaWYgVVNFKFdPRkYyKQogICAg
IGlmIChzaWduYXR1cmUgPT0ga1dvZmYyU2lnbmF0dXJlKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHdvZmZEYXRhID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDhfdCo+KHdvZmYu
ZGF0YSgpKTsKKyAgICAgICAgYXV0byogd29mZkRhdGEgPSB3b2ZmLmRhdGEoKTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IHdvZmZTaXplID0gd29mZi5zaXplKCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBzZm50U2l6ZSA9IHdvZmYyOjpDb21wdXRlV09GRjJGaW5hbFNpemUod29mZkRhdGEsIHdvZmZT
aXplKTsKIApAQCAtMjkyLDkgKzI5Miw5IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyIHx8ICFp
c1dPRkYoKmJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb252ZXJ0ZWRGb250OworICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7Cisg
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmNvbnZlcnRlZEZv
bnQpKTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDVjMGNh
NGZjMjA3ZDIxMGZkMDgwNTRjNGZmYTdlZmNhMzNhMGIxMmQuLjNkNTcwMTA3ZjI4Zjg1NDQ3NDFl
MzQ5NWMwMTYwN2U0ZGU5MDJkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzcsNyArMzcsNyBAQCBib29sIGlzV09GRihT
aGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYg
aXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxl
LAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5z
IHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVy
dFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpOworYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBj
dXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMs
IGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2Fz
IGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCAzMGNmNzllY2ZkZjI1ODJm
NTQ1MmFiZjIxMjk2MTI4NTYzM2Y3ODMwLi4yNDc3MjhlNmNiYzA3ZjI4MmZhNThmNTE3YjhhNmZl
MDZlNWIwNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
Y2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2
b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xMjgs
NyArMTI4LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE4KICAgICBtX3BhcmVudC5sb2FkRmlu
aXNoZWQoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiwgaW50KQordm9pZCBDYWNo
ZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQogewogICAgIEFTU0VSVCgmcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsgfQogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVk
IGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVy
cm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIw
OSw3ICsyMDksNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlz
aGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IHNpemUpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBlZjVl
NWZiOWUxMzY0YWY2NzU3ZTUwZjhiOGVmMTcyYmZjMGQ2MTc5Li5hMzQ0YmJlY2RhOWZmZTY3ZDRl
OGQzZTQ1ZTJkMDRiZWQzZDUwYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAg
c2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBi
dWZmZXIsIG9mZl90IHBvc2l0aW9uLAogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQog
ICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBzaGFyZWRC
dWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOworICAgIGF1dG8qIHNvdXJjZSA9IHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpICsgcG9zaXRpb247CiAgICAgc2l6ZV90IGFtb3VudCA9IHN0ZDo6bWluPHNpemVf
dD4oY291bnQsIHNvdXJjZVNpemUgLSBwb3NpdGlvbik7CiAgICAgbWVtY3B5KGJ1ZmZlciwgc291
cmNlLCBhbW91bnQpOwogICAgIHJldHVybiBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmluZGV4IDNm
OGRlMjRlYzE0MjZiYjc3ZDc3Yjg5N2MxMzRmZmFiOWM2NjA4ZWQuLmExZTViNzMyZmIwYmY0ZTU0
MmQ0MWJhOWU4NjlkZjAxZDY1OWUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIHN0YXRpYyBTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uVVRJLCBjCiAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3Mg
Y2FsbGJhY2tzID0gewogICAgICAgICBbXSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBidWZmZXIs
IHNpemVfdCBjb3VudCkgLT4gc2l6ZV90IHsKICAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gKnN0
YXRpY19jYXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOwotICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGJ1ZmZlciwgY291bnQpOwogICAgICAgICB9LAogICAg
ICAgICBudWxscHRyCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFiZi4u
YzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lk
IEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0p
CiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVudC0+
ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQotICAg
ICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCksIGRh
dGFMZW5ndGgpOworICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZv
ckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3MGQ1
YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2Miw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlw
ZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVT
aXplOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFj
ZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0YWJs
ZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdjNTBk
YjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUxYTBi
MDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCks
IHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFzQ2hh
clB0cigpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEs
IHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlw
ZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggNDQ5ODM3MzY2MWE3
ZWIwOTlmYjk4NDU2ZTk0YTQxZDg0YWRiMWMxNi4uMTcxMzVhMTQxY2Q2ZmEyY2U2YTg3MmM3NzMx
OWU0MzNiMzg3NjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yNzAsNyArMjcw
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKIAogdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBv
cGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQo
KSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGFBc1VJbnQ4UHRyKCkpLAor
ICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlm
aWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZp
Y2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAgICAgY2FsbGJh
Y2soIWVycm9yID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1NUX0RFQlVHKCJwYXJzaW5n
IGJ1ZmZlciBvZiBzaXplICV6dSIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURV
TVAoImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKIAogICAgICAgICBTdHJpbmdWaWV3IHBheWxvYWQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nVmlldz4gdHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIjpUeXBlOiIpLCA2KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwotICAgIEdTVF9NRU1EVU1Q
KCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgp
KTsKKyAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYWxsZW5nZUNhbGxiYWNrIDogbV9j
aGFsbGVuZ2VDYWxsYmFja3MpCiAgICAgICAgIGNoYWxsZW5nZUNhbGxiYWNrKCk7CiAgICAgbV9j
aGFsbGVuZ2VDYWxsYmFja3MuY2xlYXIoKTsKQEAgLTUwNywxMSArNTA3LDExIEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUsIGNvbnN0IEF0CiAgICAgbV9pbml0RGF0YSA9IEluaXREYXRhKGluc3RhbmNlLT5rZXlT
eXN0ZW0oKSwgV1RGTW92ZShpbml0RGF0YVNoYXJlZEJ1ZmZlcikpOwogCiAgICAgR1NUX1RSQUNF
KCJHb2luZyB0byByZXF1ZXN0IGEgbmV3IHNlc3Npb24gaWQsIGluaXQgZGF0YSBzaXplICV6dSIs
IG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgIEdTVF9NRU1EVU1QKCJpbml0IGRh
dGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERh
dGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogCiAg
ICAgT3BlbkNETVNlc3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIG9wZW5jZG1fY29uc3Ry
dWN0X3Nlc3Npb24oJmluc3RhbmNlLT50aHVuZGVyU3lzdGVtKCksIHRodW5kZXJMaWNlbnNlVHlw
ZShsaWNlbnNlVHlwZSksIGluaXREYXRhVHlwZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAg
ICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3Ms
IHRoaXMsICZzZXNzaW9uKTsKKyAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwg
bV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAg
ICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKQEAgLTU3Miw3
ICs1NzIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIGlmIChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdl
IG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NU
X01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5z
aXplKCkpOworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3Nh
Z2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtl
eU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKQEAgLTU4Niw3
ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwotICAgIGlmICghbV9zZXNzaW9uIHx8
IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lv
bi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkpKQor
ICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nl
c3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2Ut
PnNpemUoKSkpCiAgICAgICAgIHNlc3Npb25GYWlsdXJlKCk7CiB9CiAKQEAgLTYwNyw3ICs2MDcs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXls
b2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNp
emUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURV
TVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRh
dGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2Vl
ZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggZTg5ZmI1OTk4NjIxNWI5ZDVkYWUxNzlkMmQ3NTljZWY3
NDE4MTQ3Ni4uYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVHlwZXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAg
ICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
cG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwb3NpdGlvbikgLSBidWZmZXIuZGF0YSgpOwogICAgICAg
ICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMg
aW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApp
bmRleCBhMDNlNzFhYjFiYzNiMWNhNTA3Y2YzOGUyNzQxODdiZWMwYTlkMTkxLi40YjhhZTZhMGNk
ODU0NmRlZjY2Zjc0YjlmNjk3NjIzYWUyNGQ0MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVy
KiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQKICAgICBv
dmVybGF5TGVuZ3RoID0gMDsKIAogICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gZm9udERhdGEtPnNp
emUoKTsKLSAgICBjb25zdCBjaGFyKiBkYXRhID0gZm9udERhdGEtPmRhdGEoKTsKKyAgICBhdXRv
KiBkYXRhID0gZm9udERhdGEtPmRhdGEoKTsKIAogICAgIEVPVFByZWZpeCogcHJlZml4ID0gZW90
SGVhZGVyLnByZWZpeCgpOwogCkBAIC0zMzQsOCArMzM0LDggQEAgYm9vbCBnZXRFT1RIZWFkZXIo
U2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3Zl
cmxheUQKIAogICAgIC8vIElmIHBvc3NpYmxlLCBlbnN1cmUgdGhhdCB0aGUgZmFtaWx5IG5hbWUg
aXMgYSBwcmVmaXggb2YgdGhlIGZ1bGwgbmFtZS4KICAgICBpZiAoZnVsbE5hbWVMZW5ndGggPj0g
ZmFtaWx5TmFtZUxlbmd0aCAmJiBtZW1jbXAoZmFtaWx5TmFtZSwgZnVsbE5hbWUsIGZhbWlseU5h
bWVMZW5ndGgpKSB7Ci0gICAgICAgIG92ZXJsYXlTcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihmdWxsTmFtZSkgLSBkYXRhOwotICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZmFtaWx5TmFtZSkgLSBkYXRhOworICAgICAgICBvdmVybGF5
U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZnVsbE5hbWUpIC0gZGF0YTsK
KyAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGZh
bWlseU5hbWUpIC0gZGF0YTsKICAgICAgICAgb3ZlcmxheUxlbmd0aCA9IGZhbWlseU5hbWVMZW5n
dGg7CiAgICAgfQogICAgIGVvdEhlYWRlci5hcHBlbmRCaWdFbmRpYW5TdHJpbmcoZnVsbE5hbWUs
IGZ1bGxOYW1lTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCAwYzBjMTM3MjAz
ZGYzNmNmNTc1NWYxMmY0OWI5NTYyMzYyZjI0YzUyLi43MzM2YTIzNTFjYTc4OGViNjg5YTAyZWRk
ZTMwNzk4MDFjYTJhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRh
KGhkYywgdGFibGUsIDAsIDAsIDApOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGEo
c2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09S
RCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCks
IHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwog
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA2NzVhMTcyMWQ3NTQ2NjhmMjY2MDM3NjRi
OGEwMTQzY2NlMjM3ODgzLi43YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlm
L0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEFWSUZJ
bWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAogYm9vbCBBVklGSW1h
Z2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVt
b3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQorICAgIGlmIChh
dmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVj
ZWl2ZWQgPyBtX2RlY29kZXItPnNldEZhaWxlZCgpIDogZmFsc2U7CiAKICAgICBpZiAoYXZpZkRl
Y29kZXJQYXJzZShtX2F2aWZEZWNvZGVyLmdldCgpKSAhPSBBVklGX1JFU1VMVF9PSwpAQCAtNjQs
NyArNjQsNyBAQCB2b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1l
SW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9kYXRhUGFyc2VkKSB7Ci0gICAgICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5
KG1fYXZpZkRlY29kZXIuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKSB7CisgICAgICAgIGlm
IChhdmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spIHsKICAgICAgICAgICAgIG1fZGVjb2Rl
ci0+c2V0RmFpbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODRmMzlkMmE2MjZhYmI0NDcxYzYwM2JmMGY2MGQ1YmY2
NTQ5ODk3My4uYzcxN2M0NWQzMDU3YzA1NTM2ZWU2MDUwZjkzOTcwNDZkMTBkZjJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBJQ09JbWFnZURlY29k
ZXI6OkltYWdlVHlwZSBJQ09JbWFnZURlY29kZXI6OmltYWdlVHlwZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogICAgIGNvbnN0IHVpbnQzMl90IGltYWdlT2Zmc2V0ID0gbV9kaXJFbnRyaWVzW2luZGV4
XS5tX2ltYWdlT2Zmc2V0OwogICAgIGlmICgoaW1hZ2VPZmZzZXQgPiBtX2RhdGEtPnNpemUoKSkg
fHwgKChtX2RhdGEtPnNpemUoKSAtIGltYWdlT2Zmc2V0KSA8IDQpKQogICAgICAgICByZXR1cm4g
VW5rbm93bjsKLSAgICByZXR1cm4gc3RybmNtcCgmbV9kYXRhLT5kYXRhKClbaW1hZ2VPZmZzZXRd
LCAiXHg4OVBORyIsIDQpID8gQk1QIDogUE5HOworICAgIHJldHVybiBtZW1jbXAoJm1fZGF0YS0+
ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0KSA/IEJNUCA6IFBORzsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5YTQ3MGViYWExMWExMjg4NWI2MDNlNTNm
ZThhODRmMTNjNzYzOWRlLi5jMTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYXV0byBieXRlc1RvVXNlID0gZGF0YS5zaXplKCkgLSBieXRlc1RvU2tpcDsK
ICAgICAgICAgbV9yZWFkT2Zmc2V0ICs9IGJ5dGVzVG9Vc2U7CiAgICAgICAgIG1fY3VycmVudEJ1
ZmZlclNpemUgPSBtX3JlYWRPZmZzZXQ7Ci0gICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcs
IG1faW5mbywgcmVpbnRlcnByZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8Y2hhcio+KGRh
dGEuZGF0YSgpICsgYnl0ZXNUb1NraXApKSwgYnl0ZXNUb1VzZSk7CisgICAgICAgIHBuZ19wcm9j
ZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnByZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpICsgYnl0ZXNUb1NraXApKSwgYnl0ZXNUb1VzZSk7
CiAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc3VwZXJjbGFzcyBlbmNvZGVk
RGF0YVN0YXR1cygpIGJlY2F1c2Ugd2UKICAgICAgICAgLy8gbWVyZWx5IHdhbnQgdG8gY2hlY2sg
aWYgd2UndmUgbWFuYWdlZCB0byBzZXQgdGhlIHNpemUsIG5vdAogICAgICAgICAvLyAocmVjdXJz
aXZlbHkpIHRyaWdnZXIgYWRkaXRpb25hbCBkZWNvZGluZyBpZiB3ZSBoYXZlbid0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmEzNTVmMGNlZmFiNTdkMjM3ODFlMWJiNmVm
MTczNzE1YjFhMzk4NS4uMDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9p
ZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIC8vIFdoZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwg
YSBjYWxsIHRvIHNldERhdGEoKSBmcm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBk
YXRhCiAgICAgLy8gdGhlIFdlYlBEZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGlu
Y29uc2lzdGVudCBzdGF0ZSwgc28gd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7Ci0g
ICAgV2ViUERhdGEgaW5wdXREYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihwcm90ZWN0ZWREYXRhLT5kYXRhKCkpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKKyAgICBX
ZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0
YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBE
ZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0
YXRlKTsKICAgICBpZiAoIWRlbXV4ZXIpIHsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdFQlBJ
bWFnZURlY29kZXI6OnBhcnNlSGVhZGVyKCkKICAgICBpZiAobV9kYXRhLT5zaXplKCkgPCB3ZWJw
SGVhZGVyU2l6ZSkKICAgICAgICAgcmV0dXJuOyAvLyBBd2FpdCBWUDhYIGhlYWRlciBzbyBXZWJQ
RGVtdXhQYXJ0aWFsIHN1Y2NlZWRzLgogCi0gICAgV2ViUERhdGEgaW5wdXREYXRhID0geyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6
ZSgpIH07CisgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERl
bXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3Rh
dGUpOwogICAgIGlmICghZGVtdXhlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA2MDM3
NWRlNWJjZGNiNDc2YWUwZWY0MTc1Y2U3MWIxZTFkNjE1NWZmLi4wNTQ0MjhkNTBkYzYxYWFhZDUx
ODg3OWQyMmNiYzJmOTc3OTE1MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMTA4LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQuaAppbmRleCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFhYzk4N2VhZTg4OWRmOWYy
NzQyLi5kZDA1ZWYwZmJkM2U3MzA5NzQzNTA1YWNjYzAxMDE0ZWY0ZDljNTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNp
emVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpID0g
MDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5o
CmluZGV4IDQxMjQ3ZjY4NGY3NjA5MGE2ZDJiZTI1MGE1NTg4NjRjY2YwNDIxNTcuLmM5YzkzYmE2
MDExOGY5MTlkMTE2MDI5MzJkYWU4M2Q3OTk0NjdmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciwgUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlU3RyaW5nRGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcihSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0Rl
Y3JlYXNpbmcoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXplX3QpID0gMDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmNwcAppbmRleCBkMDMwMDUzNmVkOTMwZmJmOWMyMDJiYjk3MjYxMGQ0YzVmODlh
OGM0Li45M2JkOTYyZDRkZWFkNDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5ZWVlYTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrOjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2s6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggNGE1MTA5MmJjNDFmMmNmOWY3ZjNkMDRmMjc3YTc1YzI5
NGUxY2FhNS4uZTA3MGJkYjEzZTg3MjU4N2M1M2UwNGY0OTYxN2ZlZDU1OWEwYTg5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENsaWVu
dChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcikgZmluYWw7CiAKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcm
KSBmaW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFs
OworICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IGQyZWViZGVkOTVkZTc1Y2MwOTQ1
OWUzYjFiMDYxOTZkYjZlNjEzZmIuLjMyZGQ4YzA4ZTIxOTA2ZjRhMmQ4ZjJhOGMzMGM3ZWE1YWE5
NTI2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyBib29sIHdyaXRlRmls
ZVBhdGhzT3JEYXRhQnVmZmVyc1RvRmlsZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
VGhyCiAgICAgZm9yIChhdXRvJiBwYXJ0IDogZmlsZVBhdGhzT3JEYXRhQnVmZmVycykgewogICAg
ICAgICBpZiAocGFydC5zZWNvbmQuZGF0YSgpKSB7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0g
cGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFydC5zZWNv
bmQuZGF0YSgpLT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgeworICAgICAgICAgICAgaWYg
KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgp
LCBsZW5ndGgpICE9IGxlbmd0aCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHdyaXRpbmcgYSBCbG9iIHRvIHRlbXBvcmFyeSBmaWxlIik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBiNzdmOTAwNzgxOWZmZWMyOTViNjA1Mjk0OGFlOTk0ZGFl
MjQ2MWRmLi4zZTc0YTZhMDRlZjA1YTc5ZDJjYjE0MWFhOGMzYWVkZmQyZjQzMzFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+JiB2
ZWN0b3IpCiAgICAgcmV0dXJuIGNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsK
IH0KIAotUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKFZlY3RvcjxjaGFyPiYmIHZlY3Rv
cikKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0
b3IpCiB7CiAgICAgYXV0byBkYXRhID0gY3JlYXRlKCk7CiAgICAgZGF0YS0+bV9lbGVtZW50cy5h
cHBlbmQoV1RGTW92ZSh2ZWN0b3IpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB1bnNpZ25lZCBGb3Jt
RGF0YTo6aW1hZ2VPck1lZGlhRmlsZXNDb3VudCgpIGNvbnN0CiB1aW50NjRfdCBGb3JtRGF0YUVs
ZW1lbnQ6Omxlbmd0aEluQnl0ZXMoY29uc3QgRnVuY3Rpb248dWludDY0X3QoY29uc3QgVVJMJik+
JiBibG9iU2l6ZSkgY29uc3QKIHsKICAgICByZXR1cm4gc3dpdGNoT24oZGF0YSwKLSAgICAgICAg
W10gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgW10gKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVu
dDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgaWYgKGZpbGVEYXRh
LmZpbGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKQEAgLTE2NCw3ICsxNjQs
NyBAQCB1aW50NjRfdCBGb3JtRGF0YUVsZW1lbnQ6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogRm9y
bURhdGFFbGVtZW50IEZvcm1EYXRhRWxlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gc3dpdGNoT24oZGF0YSwKLSAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxjaGFyPiYg
Ynl0ZXMpIHsKKyAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsKICAg
ICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yIHsgYnl0ZXMuZGF0YSgpLCBi
eXRlcy5zaXplKCkgfSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVs
ZW1lbnQoZmlsZURhdGEuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMTc4LDEyICsxNzgsMTIgQEAgdm9p
ZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtX2VsZW1lbnRz
LmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVj
dG9yPGNoYXI+PihtX2VsZW1lbnRzLmxhc3QoKS5kYXRhKSkgewotICAgICAgICAgICAgdmVjdG9y
LT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOworICAg
ICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PihtX2Vs
ZW1lbnRzLmxhc3QoKS5kYXRhKSkgeworICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KLSAgICBtX2VsZW1lbnRzLmFwcGVuZChWZWN0b3IgeyByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSB9KTsKKyAgICBtX2VsZW1lbnRzLmFw
cGVuZChWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSk7
CiB9CiAKIHZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkK
QEAgLTI4NCwxMiArMjg0LDEyIEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZE5vbk11bHRpUGFydEtl
eVZhbHVlUGFpckl0ZW1zKGNvbnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwKICAgICBhcHBlbmRE
YXRhKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKIH0KIAotVmVjdG9y
PGNoYXI+IEZvcm1EYXRhOjpmbGF0dGVuKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGb3JtRGF0
YTo6ZmxhdHRlbigpIGNvbnN0CiB7CiAgICAgLy8gQ29uY2F0ZW5hdGUgYWxsIHRoZSBieXRlIGFy
cmF5cywgYnV0IG9taXQgYW55IGZpbGVzLgotICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4o
ZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZl
Y3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHZl
Y3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiBkYXRhOwpA
QCAtMjk4LDcgKzI5OCw3IEBAIFZlY3RvcjxjaGFyPiBGb3JtRGF0YTo6ZmxhdHRlbigpIGNvbnN0
CiBTdHJpbmcgRm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiB7CiAgICAgYXV0byBi
eXRlcyA9IGZsYXR0ZW4oKTsKLSAgICByZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNvZGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsK
KyAgICByZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNvZGUoYnl0ZXMuZGF0YSgpLCBieXRlcy5z
aXplKCkpOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoQmxvYlJlZ2lzdHJ5
SW1wbCogYmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVm
ZXJlbmNlcyhCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsCiAKICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIHN3aXRjaE9uKGVsZW1lbnQuZGF0
YSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAg
ICAgICAgWyZdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAg
ICAgbmV3Rm9ybURhdGEtPmFwcGVuZERhdGEoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwog
ICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0
YSYgZmlsZURhdGEpIHsKICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRmlsZVJh
bmdlKGZpbGVEYXRhLmZpbGVuYW1lLCBmaWxlRGF0YS5maWxlU3RhcnQsIGZpbGVEYXRhLmZpbGVM
ZW5ndGgsIGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwpAQCAtNDEwLDcg
KzQxMCw3IEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPGNoYXI+PihlbGVtZW50LmRhdGEpKQorICAgICAgICBpZiAo
IVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCmluZGV4IDhmMjIxMDJmYmMzYWYyYTBhMDdhOGNhNWMyOTExZTEwNWJiZGM2NGQu
LjViZmY2NWE2MzZjMzE3NTUyOWUyNGRjMTM2NTEwOGNmMmI2YWY3NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTM4LDEyICszOCwxMiBAQCBjbGFz
cyBUZXh0RW5jb2Rpbmc7CiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5j
b2RlZEZpbGVEYXRhOwogICAgIHN0cnVjdCBFbmNvZGVkQmxvYkRhdGE7Ci0gICAgdXNpbmcgRGF0
YSA9IFZhcmlhbnQ8VmVjdG9yPGNoYXI+LCBFbmNvZGVkRmlsZURhdGEsIEVuY29kZWRCbG9iRGF0
YT47CisgICAgdXNpbmcgRGF0YSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBFbmNvZGVkRmls
ZURhdGEsIEVuY29kZWRCbG9iRGF0YT47CiAKICAgICBGb3JtRGF0YUVsZW1lbnQoKSA9IGRlZmF1
bHQ7CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KERhdGEmJiBkYXRhKQogICAgICAgICA6
IGRhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZl
Y3RvcjxjaGFyPiYmIGFycmF5KQorICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8
dWludDhfdD4mJiBhcnJheSkKICAgICAgICAgOiBkYXRhKFdURk1vdmUoYXJyYXkpKSB7IH0KICAg
ICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50NjRfdCBmaWxlU3Rh
cnQsIGludDY0X3QgZmlsZUxlbmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxlRGF0YSB7IGZp
bGVuYW1lLCBmaWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUgfSkgeyB9CkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwotICAg
IHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJik7CisgICAgc3RhdGlj
IFJlZjxGb3JtRGF0YT4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBzdGF0aWMgUmVm
PEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgc3RhdGljIFJlZjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogICAgIHN0YXRpYyBSZWY8
Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBET01Gb3JtRGF0YSYsIEVuY29kaW5nVHlwZSA9IEZvcm1V
UkxFbmNvZGVkKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihj
b25zdCBVUkwmIGJsb2JVUkwpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPGNoYXI+IGZs
YXR0ZW4oKSBjb25zdDsgLy8gb21pdHMgZmlsZXMKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gZmxhdHRlbigpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcwogICAgIFN0cmluZyBmbGF0
dGVuVG9TdHJpbmcoKSBjb25zdDsgLy8gb21pdHMgZmlsZXMKIAogICAgIC8vIFJlc29sdmUgYWxs
IGJsb2IgcmVmZXJlbmNlcyBzbyB3ZSBvbmx5IGhhdmUgZmlsZSBhbmQgZGF0YS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aAppbmRleCBmYmEwMjMzYmVmYTJjZDRjMTYxNGY3MDU2YjRiMDc1Mzc5MzFlY2VmLi5iNjMzN2Q1
NmNlOGNkOWJlZmY5ZGZiZTExMzY2MmJjNzc1NmI2NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJj
ZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25n
IGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2Rl
ZERhdGFMZW5ndGgqLykgeyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDQ2MDMxNTk0ZDNhZDU1ZTYyNzQ3MDliZTg2YzUyNWUyOWVjMmVj
ZjcuLjRjMDQyMTBjNWE1MTNhYzNmNTQ3MTQ2ZDlmODVjODJiZDg4MTM3NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsK
LSAgICBtX2RhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBsZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBT
eW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4
IDg4MTAzOGM4N2QxYmM5ZjQxNmJhMTE2MzVlM2I0MTQ1YzhkODgwYTkuLjY4MzhlOWQ4Y2Y0Mzc5
NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTY2LDcg
KzY2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJl
c291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRleCBhNmYyYjczYzE3ZGZjZjg2Mjg0YzhjNWRl
NTYyMDZhOWE1MDg3NGNkLi5mNmIyYTE4NTc5MmI5OGUyNDhkMTVmMDc2MDhkNmRiY2M4NzBlZjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdHJ1Y3QgRm9ybVN0
cmVhbUZpZWxkcyB7CiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gcmVtYWluaW5nRWxlbWVu
dHM7IC8vIGluIHJldmVyc2Ugb3JkZXIKICAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBj
dXJyZW50U3RyZWFtOwogICAgIGxvbmcgbG9uZyBjdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggeyBC
bG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlIH07Ci0gICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVj
dG9yTWFsbG9jPiBjdXJyZW50RGF0YTsKKyAgICBNYWxsb2NQdHI8dWludDhfdCwgV1RGOjpWZWN0
b3JNYWxsb2M+IGN1cnJlbnREYXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFtIHsg
bnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGggeyAwIH07CiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCB7IDAgfTsKQEAgLTEzOCwxMCArMTM4LDEw
IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZv
cm0pCiAgICAgRm9ybURhdGFFbGVtZW50JiBuZXh0SW5wdXQgPSBmb3JtLT5yZW1haW5pbmdFbGVt
ZW50cy5sYXN0KCk7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBzd2l0Y2hPbihuZXh0SW5wdXQuZGF0
YSwKLSAgICAgICAgW2Zvcm1dIChWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgIFtmb3Jt
XSAoVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBi
eXRlcy5zaXplKCk7Ci0gICAgICAgICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxs
b2M+IGRhdGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAgICBmb3JtLT5jdXJy
ZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEuZ2V0KCkpLCBzaXplLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7CisgICAgICAgICAgICBNYWxsb2NQdHI8dWludDhfdCwgV1RGOjpWZWN0b3JN
YWxsb2M+IGRhdGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7CisgICAgICAgICAgICBmb3JtLT5j
dXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0NvcHko
MCwgZGF0YS5nZXQoKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgICAgICAgICAgZm9y
bS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0sIFtmb3JtXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURh
dGEmIGZpbGVEYXRhKSB7CkBAIC0zOTUsOCArMzk1LDggQEAgdm9pZCBzZXRIVFRQQm9keShDRk11
dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIEZvcm1EYXRhKiBmb3JtRGF0YSkKICAgICAvLyBI
YW5kbGUgdGhlIGNvbW1vbiBzcGVjaWFsIGNhc2Ugb2Ygb25lIHBpZWNlIG9mIGZvcm0gZGF0YSwg
d2l0aCBubyBmaWxlcy4KICAgICBhdXRvJiBlbGVtZW50cyA9IGZvcm1EYXRhLT5lbGVtZW50cygp
OwogICAgIGlmIChlbGVtZW50cy5zaXplKCkgPT0gMSAmJiAhZm9ybURhdGEtPmFsd2F5c1N0cmVh
bSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hh
cj4+KGVsZW1lbnRzWzBdLmRhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odmVj
dG9yLT5kYXRhKCkpLCB2ZWN0b3ItPnNpemUoKSkpOworICAgICAgICBpZiAoYXV0byogdmVjdG9y
ID0gV1RGOjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50c1swXS5kYXRhKSkgeworICAg
ICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgdmVjdG9y
LT5kYXRhKCksIHZlY3Rvci0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQUmVxdWVzdEJvZHkocmVxdWVzdCwgZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCA0MjE5YmI1M2My
MDU2OTc1M2IwYjE5MmMzYjkzZjFkNWFmN2RlZTU2Li45YmU1ODY4MmNhYzMzYmJhYWE5ZTE4NmQy
YTM0YzQ2NDBiNDE1YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yMzYs
NyArMjM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbAogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggOWQwMDU1ODFhZGVjMGNjNGM2NThkOGNl
ZTc0ZmFiNWQwYTcyZDZiNi4uMDU3NmVkODgxMjQxMDgyMjQ0NzZjYjZiYjc1NThmOTVjOWM3ODVl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBXRUJDT1JFX0VY
UE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lk
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVzVG9C
ZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3Bv
bnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCBjaGFyKilkYXRhIGxlbmd0
aDooaW50KWxlbmd0aDsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCB1aW50OF90Kilk
YXRhIGxlbmd0aDooaW50KWxlbmd0aDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRs
ZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJs
ZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRo
RXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCmluZGV4IGRjYWFiNzA1MWNkYzIyYzk5MTlhMzU5Y2ZmYWU2ODFmN2MxY2EzNGYu
LmE2ZjcxYWY0MjBkZjhkYmQzY2QyZTM0ZmMwMjc4ZDQ2MGFkOGIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KQEAgLTU3MCw3ICs1NzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0
aCAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02MTQsNyArNjE0LDcgQEAgYm9vbCBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZv
cm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtODczLDcgKzg3Myw3
IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihjb25zdCBjaGFyKilkYXRhIGxlbmd0aDooaW50KWxlbmd0aAorLSAodm9pZClyZXNvdXJj
ZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IHVp
bnQ4X3QqKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpk
YXRhIGxlbmd0aDpsZW5ndGhdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3Bw
CmluZGV4IGU1NjRhMGNlNjY2MTRhNDlhMTAzMTM2ODg1MWM0ZGE4ODIzNTJhNjEuLmEzMDljMjU4
Y2Q5ZjExMmQzYmJjZTZjYWE3MTQ4MTgzNmExZmIwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJl
ZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRs
ZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhQXNDaGFy
UHRyKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigm
bV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCAwNWQxNzcxNzc1MWUw
MGE1MmE2YTA1ZWIwMDZmN2I0YzE3ZjFkNGJiLi5lYmNkYjJlMGRkOWI0MjgwZjI1MTU3M2RiYTZi
NWJkMDZkZmZkNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBzdG9wT25FcnJvciwg
Ym9vbCYgc2F3RXJyb3IpIGNvbnN0OwogICAgIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIFN0cmluZyBkZWNvZGUoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZShTdHJpbmdWaWV3LCBVbmVuY29kYWJsZUhhbmRsaW5nLCBORkNOb3Jt
YWxpemUgPSBORkNOb3JtYWxpemU6OlllcykgY29uc3Q7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGVuY29kZShzdHJpbmcsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcywg
TkZDTm9ybWFsaXplOjpObyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA2MjkxYjY0MjQ2NGYyNzViNDUzYmNjOWU0MGUxYzlm
YzUwOTlhOTYwLi44OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAt
NTAsNyArNTAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIERXT1JEIGxhc3RFcnJv
ciA9IEdldExhc3RFcnJvcigpOwogCiAgICAgaWYgKGJ5dGVzVG9SZWFkICE9IElOVkFMSURfRklM
RV9TSVpFIHx8IGxhc3RFcnJvciA9PSBOT19FUlJPUikgewotICAgICAgICBWZWN0b3I8Y2hhcj4g
YnVmZmVyKGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRl
c1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxl
KGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAm
JiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCiAgICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmluZGV4IDFmMzNhM2I2MTNjYjAzZWI1ODNlODU5NGJh
YTAyOTI0MGJmOGFiYWEuLjhlYTQ0ZGNmMjU2YWIwMDQzMTI5MGNiNGU2NTUxYjgzNjMyYzU5ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFNWR1RvT1RGRm9udENvbnZlcnRlcihjb25zdCBT
VkdGb250RWxlbWVudCYpOwogICAgIGJvb2wgY29udmVydFNWR1RvT1RGRm9udCgpOwogCi0gICAg
VmVjdG9yPGNoYXI+IHJlbGVhc2VSZXN1bHQoKQorICAgIFZlY3Rvcjx1aW50OF90PiByZWxlYXNl
UmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9
CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8R2x5cGhEYXRhPiBtX2ds
eXBoczsKICAgICBIYXNoTWFwPFN0cmluZywgR2x5cGg+IG1fZ2x5cGhOYW1lVG9JbmRleE1hcDsg
Ly8gU1ZHIDEuMTogIkl0IGlzIHJlY29tbWVuZGVkIHRoYXQgZ2x5cGggbmFtZXMgYmUgdW5pcXVl
IHdpdGhpbiBhIGZvbnQuIgogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8R2x5cGgsIDE+PiBt
X2NvZGVwb2ludHNUb0luZGljZXNNYXA7Ci0gICAgVmVjdG9yPGNoYXI+IG1fcmVzdWx0OworICAg
IFZlY3Rvcjx1aW50OF90PiBtX3Jlc3VsdDsKICAgICBWZWN0b3I8Y2hhciwgMTc+IG1fZW1wdHlH
bHlwaENoYXJTdHJpbmc7CiAgICAgRmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAgICAgY29uc3Qg
U1ZHRm9udEVsZW1lbnQmIG1fZm9udEVsZW1lbnQ7CkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBib29s
IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6Y29udmVydFNWR1RvT1RGRm9udCgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXI+PiBjb252ZXJ0U1ZHVG9PVEZG
b250KGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBlbGVtZW50KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgU1ZHVG9PVEZGb250Q29udmVydGVyIGNvbnZlcnRlcihlbGVtZW50KTsKICAg
ICBpZiAoY29udmVydGVyLmVycm9yKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uaAppbmRleCA4NzUxOTEzNGI3MjY4NjNkMDljZDEzY2MyODdhYmMzODU1MmE0
YTYyLi44OGQ3MjcyNjgxODY2NzhiNmZlNmY4ZTZiYjJiYzQwMGMxYzdkMDlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgKQEAgLTMxLDYgKzMxLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdGb250RWxlbWVudDsKIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1l
bnQmKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0U1ZHVG9PVEZGb250
KGNvbnN0IFNWR0ZvbnRFbGVtZW50Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDAwOTRmNDdkNDY0MDFkNTlh
Y2I4NWY3NjU0M2RhNjJkNzM4YzBmZTYuLmVjYjZiYWUxNjg5NTYxNjdmNjFmYWYzZGNhMjkzNjQ2
Y2RjYWQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAt
NDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5
IGZyYW1lLT5pbml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhl
IGVtcHR5IGRvY3VtZW50Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUoKSk7CisgICAgICAg
IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+
ZGF0YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggMmM5M2NlYzI0ODM0NzBk
OTAzNTRlMjRmNGJiMjg2MmI0NzIwNTY0My4uZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZi
NTliZWJhNThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjpyZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogICAgIG1heWJlRGV0ZXJtaW5lU3Rh
dHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UpOwogfQogCi12b2lkIE1vY2tDb250ZW50
RmlsdGVyOjphZGREYXRhKGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
OjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpCiB7CiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0
dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA4NTQ1ZjE5OWE2NGQyNmRhMmM1NGEwNTM3ZGEw
NzU5MTI1OGQ1MjVlLi40MTFhMzAwOTQ3YjUzOWUyNmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRk
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKaW5kZXggYTFmOTQ3ZWI4NzEyMWQ5Y2MwMDdkNzIzN2IwY2Q3ZTEyODI0MGMyNi4uZmFi
YmQwM2ViMGFkYzEyMDRlMTA0MWExMDhlMDViNzZlNDU0NTUwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwCiAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRy
dWU7CiB9CiAKLXZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiZjk0ZmQ0OGNhYjE0
YmQ1MzQ4OTIxN2YyMDRiZjIzYTg2MDRjNWU4Li4xNWM0NTEzODAwNTA0YWIwM2Q0OTE3OWJiNTRl
ODIwMGUyZDQ5OThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2Vy
Rm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGZiMDcyY2MxOGM5MWZlMTEwZTRh
ZGVlYTgzMzI4OWMyODNiYjZkZGUuLmQ3YzFhYjI2ZGMxZGUyMzIzN2RiNDNlOThjMTIzNTQzZDAx
OTY2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzbwogICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW4pCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihkYXRhKTsKKyAgICAg
ICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAog
ICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGQzMzdjNTAz
NmRhYzBmNjc1YTFjOTIzZDhkZTY0M2ZmMTM1MzNjYjguLjhkMWFhMWJiMTkxODVkNGY3OWJiNmZh
ZDRlOWU3NDE4MjNkNmYwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKaW5kZXggOGY3NjBkNjJmN2RiMDA3ZTVjNGFiZWQzOGFhMDhjYmVmZTAxNjUxMy4uYjJl
OTE3NWE3MGU2NDA3NTE4NjZjNGY0YWRlZWI5MWI3MjM1ZTdiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cApAQCAtODgsNyArODgsNyBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYQogCiAgICAgYXV0byBp
dGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgd3JpdGVEYXRhKSB7CiAgICAgICAgIGZvciAoYXV0byBp
dCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKTsgaXQgIT0gc2NyaXB0LmJ1ZmZlcigpLT5lbmQo
KTsgKytpdCkKLSAgICAgICAgICAgIHdyaXRlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpdC0+c2VnbWVudC0+ZGF0YSgpKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAg
ICAgICAgICB3cml0ZURhdGEoaXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUo
KSk7CiAgICAgfTsKIAogICAgIGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmcoc2NyaXB0LmJ1ZmZl
cigpLT5zaXplKCkpKSB7CkBAIC05OCw3ICs5OCw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0
b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGl0ZXJhdGVPdmVy
QnVmZmVyQW5kV3JpdGVEYXRhKFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0pOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDc3MDRmZTgxMzUwNjE2NTA5
YTI4MTcxMzIyZDllYWVhMzBlNzVmNzMuLmVjZjBhNDliMzAxZGNmOTE4M2MxZWFmOTg1MDA2MDA5
MGE0NDBmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAxNiw3
ICsxMDE2LDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVEZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlm
IChtX2Vycm9yKQogICAgICAgICByZXR1cm47CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobGVuID09IC0xKQotICAgICAgICBsZW4gPSBzdHJs
ZW4oZGF0YSk7CisgICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSk7CiAKICAgICBpZiAodXNlRGVjb2RlcikKICAgICAgICAgbV9yZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAppbmRleCBjMTg1N2M5MDUxNWY2YmU3NzcwYmMwNGM5NTY0MzQyMzZh
Yjc0NGE4Li42M2Q1YjI0MDI4ZWRkN2MyOWVlNzViNjQwNzhhZjk2M2I0MmIzODE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDU3ZWU1ZGVk
MjRiZGEyNzVlNTg2YmRmNjEzMmE1MjQ1NWFiYWNjOTYuLmRmOGFiZTQyNmUwNjcxNzFhZmZmOTBl
MDMzMzg1MDU5ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3BlY2lmeSBh
biBlbmNvZGluZyBoZXJlLiBOZWl0aGVyIEdlY2tvIG5vciBXaW5JRSByZXNwZWN0cwogICAgICAg
ICAvLyB0aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMuCi0gICAgICAg
IHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxs
cHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0aW9u
cyk7CisgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5k
YXRhQXNDaGFyUHRyKCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0
IGNoYXIqKXVyaSwgMCwgb3B0aW9ucyk7CiAKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9y
RnVuYygwLCAwKTsKICAgICAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAppbmRleCAxZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5NzhmLi5hNTRk
YzI4OTk4MjA4ODM2NmFlNzdjMDZiNDFlNTQ1YjljYjBlNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0z
NTksOSArMzU5LDggQEAgc3RhdGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciopCiBjbGFzcyBP
ZmZzZXRCdWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IE9mZnNldEJ1ZmZlcihWZWN0b3I8Y2hhcj4gYnVmZmVyKQorICAgIE9mZnNldEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KQotICAgICAgICAsIG1fY3VycmVudE9mZnNldCgwKQogICAgIHsKICAgICB9CiAKQEAgLTM3Nyw4
ICszNzYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxjaGFyPiBt
X2J1ZmZlcjsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRPZmZzZXQ7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fYnVmZmVyOworICAgIHVuc2lnbmVkIG1fY3VycmVudE9mZnNldCB7IDAgfTsKIH07CiAK
IHN0YXRpYyBib29sIGV4dGVybmFsRW50aXR5TWltZVR5cGVBbGxvd2VkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGQzZTYxNjFiZDJiZGNmOGVhZjMw
MTA3YzUzNmJlZDRiMjdlMDljMDguLjIwODczNzM5ZTA1MzRkZGE2YTQ4MjIyNDE0YWFjNzE2NDY0
MDhkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNU
b0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludDY0X3QgbGVuZ3RoKQordm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50NjRfdCBsZW5ndGgp
CiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBkYXRhLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXggNTI5YjY3ZDE3NzgwOTM0ZTgzNTljMDAw
YTQxMzZhZTk5MDUwMjY0Yy4uOWI0MDcwMWNmNTMyOTg5NWU0MWI4NDM0ZjAxNWY2OTlkNDBkMzkw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwog
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90
LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludDY0X3Qp
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBpbnQ2NF90KTsKICAgICB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCmluZGV4IGZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBj
ZDQzMzQxNWU5MTUxMTQ0MDAuLjEzZjE3NGU0OTMxMDAxZmViYWVjYTZhY2MxZGVkOTFkMWUzMThj
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbgogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFkeSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIHJl
c291cmNlLT5kYXRhUmVjZWl2ZWQoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCAzN2IyNTRiOTBlMDQx
ZTdlMDIzMjY2NTNkMDljZjAyY2FhYWQ0ZGU5Li4xYzA4NmNhMGQwNmU4OTEyNDQxNjIyNjEwZTA3
ZGU5MjhlODI5YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTcwLDcgKzU3
MCw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0
aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5y
ZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KICAgICB9LCBbJl0oY29u
c3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBib2R5ID0g
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZl
ci0+c2l6ZSgpIH07CisgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwCmluZGV4IGZmYTkxMDRjZDVjZDYxYWYxNmQ0Y2MwODIyYTA3ZDczMmIyMGYw
MTYuLjhhNTlhMzU2NmQ0NmVlMzMyNWU1NzFhOGFlN2RkOTcwOWM0MTRhMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7CiAgICAgaWYgKG1fYnVmZmVy
KQotICAgICAgICBib2R5ID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1
ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgICAgICBib2R5ID0geyBtX2J1
ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CiAKICAgICByZXR1cm4geyBtX2tleSwg
bV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5u
ZWxDdXJsLmNwcAppbmRleCAzYmYxNjYzNTE0OGI0ZmM0MTA0ZGU3ZTEwYTVmMzZhOTMwNTBkNWEx
Li5mYTc2YWM3NjJlYWRhYTA3YjE0Mzc1OGE1NTJjYWIwYmNiYTM0OTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsQ3VybC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBJT0NoYW5uZWw6Ondy
aXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSYgcXVldWUsIEZ1
bmN0aW8KIHsKICAgICBxdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlRGVz
Y3JpcHRvciwgb2Zmc2V0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsK
LSAgICAgICAgaW50IGVyciA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZURlc2NyaXB0
b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXpl
KCkpOworICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlRGVz
Y3JpcHRvciwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZXJyID0gZXJyIDwg
MCA/IGVyciA6IDA7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycik7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuaAppbmRleCA3NjFjMDVjZjZkNmU2OTJmMjcxNmZhYzZjMzRjZGM5MzYxZThjNThj
Li44MGJhYzRiMjg5YzBiNTc0MTEzMTg0NWE1ZDMwNmU2YWY4ZjgyZmVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmgKQEAgLTE5NCw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKICAgICBDU3RyaW5nIG1fc25pZmZlZENvbnRlbnRUeXBlOwotICAgIFZlY3Rvcjxj
aGFyPiBtX3JlYWRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVhZEJ1ZmZlcjsKICAg
ICB1aW50NjRfdCBtX2JvZHlEYXRhVG90YWxCeXRlc1NlbnQgeyAwIH07CiAgICAgR1JlZlB0cjxH
RmlsZT4gbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZTsKICAgICBHUmVmUHRyPEdGaWxlPiBtX2Rv
d25sb2FkSW50ZXJtZWRpYXRlRmlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggODM0NmUzOWU4N2E0ZDA1ODI1M2ZlY2VhNjcxYzEz
MmU0NzY5ZTFiOS4uZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlZ21lbnQuc2Vn
bWVudC0+ZGF0YSgpKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCksIDEpOworICAgICAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCksIDEpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNv
cHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IGMzZjE4M2IyZGI1
YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcuLjdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2
M2E2ZTNkZjE4MzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA0YjIw
Yzg1YWM1MzYyMzY0MDNhODNlYTk3M2NkY2NkMTBmZGY3MmY2Li5jYmQwNGQ5OWI3YzI3MTY3MWM4
NzUyYjE4YTkyZTQyMTU4NTZjOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIHZv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFN0CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1J
RCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSk7CisgICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTUwNyw3ICs1MDcsNyBA
QCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJgogICAgIGlmIChtX3BsdWdpbkNhbmNlbGVkTWFudWFs
U3RyZWFtTG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Np
b25TdGF0ZS5oCmluZGV4IGRhODIwNDY0ZjkzYzYwNGNlODY5NzliNjVkNmFlNjc2ZjFmYzAwYjIu
LmJmZjFkMTdmYTZhNzNkOWU5ZGMwODBlYzk1MTlhNmQzY2NjMDQ4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBIVFRQQm9keSB7CiAg
ICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkRhdGE7CiAKICAgICAgICAgLy8gRGF0YS4KLSAgICAg
ICAgVmVjdG9yPGNoYXI+IGRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogCiAg
ICAgICAgIC8vIEZpbGUuCiAgICAgICAgIFN0cmluZyBmaWxlUGF0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGYwYzhlZWY1M2QzNTk3
ZTBlYThhMTFkYjEwMWVhOTQ2MDE0MTllMTcuLjA4Nzg4YzgyZjJhMzY2NmJkMTU1ZGZjM2U0NTZi
MGJiZTUxMDJlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1
ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAv
LyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1l
bW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqYnVmZmVyKQotICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50
LnNlZ21lbnQtPmRhdGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKKyAgICAgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVs
ZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtMzA2MSw3ICszMDYxLDcgQEAgc3RhdGljIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29u
c3QgU2NyaXAKICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9Owog
CiAgICAgYXV0byYgc2VnbWVudCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKS0+c2VnbWVudDsK
LSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0
PGNoYXIqPihzZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVt
b3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8dWludDhfdCo+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21l
bnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYg
KCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
IHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggZmZlZTA2MTE0NjBiYzFlZGJhZGFhZGE3OWQ4ZGVm
ODZkZjI5OTQ3Zi4uNWExODBiZWVkMTJmNWNkY2RmYmFlNjcwMmU2OTNiOWVhNmUwYTg0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIK
IH0KIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGZ1bmN0
aW9uKQogewotICAgIGZ1bmN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIGZ1bmN0aW9uKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC01NzQsNyArNTc0LDcgQEAg
dm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGkKICAgICBpZiAoZmlsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICAgICByZXR1cm47CiAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEg
aW52YWxpZEhlYWRlciA9IHswLCAwLCAwLCAwLCAwLCAwfTsKLSAgICBhdXRvIGJ5dGVzV3JpdHRl
biA9IHdyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZpbnZh
bGlkSGVhZGVyKSwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKKyAgICBhdXRvIGJ5dGVzV3JpdHRl
biA9IHdyaXRlVG9GaWxlKGZpbGUsICZpbnZhbGlkSGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRl
cikpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6
ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICBjbG9zZUZpbGUoZmlsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYw
ZWM4YzgzOGE4NzA4MTcwZTFmMmM2OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJj
OWUyOGI3Nzk4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21w
bGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlm
IChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYg
KG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50
OFB0cigpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29t
cGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAg
ICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAK
aW5kZXggZjJlZGM1Y2Y4N2JlYWVjZWI4NWZlYjZjM2UzYzljZTUxODI1YWM2OS4uNzA4YmIyOWY4
ZjczZDZlZDdmY2Y2NzM5MGM1ODJjMWZlYmFkNTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6
ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRh
dGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRh
UmVjZWl2ZWQobV9pZCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIElQ
Qzo6RGF0YVJlZmVyZW5jZShkYXRhLCBsZW5ndGgpKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlUHJveHkuaAppbmRleCA0ZDZhNWFmYzNlNTk1ZTVjZmVhMzcwYjIxZjdl
ZThhMTM3NDFlM2U0Li40N2VhODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
JikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsK
ICAgICB2b2lkIGRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2ln
bmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50
KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA2OTQ4OTZjOTk3YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhLi40ODRjMGJl
ZDM2YjJmZWNhMWZlODBlYjZkZjJjMzBkMDMwZWQyMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTgs
NyArMTk4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAg
ICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
bV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5k
YXRhQXNVSW50OFB0cigpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNl
aXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAot
ICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZDBj
Yjc5ZTVkMWU2NWY4ZTFiZDE5OWM1NDNkZWQwOTE4ZTg0ZjUxYS4uNzg0MWE4ZjNiNjk2YWNkNWQx
YTkyNDBkN2QxYjUxM2ViOWFjNjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgTmV0
d29ya1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1l
bnQmIGRvY3VtZW50LCBXZWJTb2MKICAgICByZXR1cm4geyBkb2N1bWVudCwgWyZjaGFubmVsXShh
dXRvJiB1dGY4U3RyaW5nKSB7CiAgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3Ry
aW5nLmxlbmd0aCgpKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKLSAgICB9LCBbJmNoYW5uZWxd
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGNoYW5uZWwu
bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0
YSwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5l
dHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxl
bmd0aCk7CisgICAgfSwgWyZjaGFubmVsXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgYnl0
ZUxlbmd0aCkgeworICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEpLCBieXRlTGVuZ3RoKTsKKyAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6
TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0
YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0
aW9uQ29kZSBleGNlcHRpb25Db2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRpY19jYXN0
PGludD4oZXhjZXB0aW9uQ29kZSk7CiAgICAgICAgIGNoYW5uZWwuZmFpbChtYWtlU3RyaW5nKCJG
YWlsZWQgdG8gbG9hZCBCbG9iOiBleGNlcHRpb24gY29kZSA9ICIsIGNvZGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKaW5kZXggNDk5ZGExOGQxNzRmZTc4
OTI4Yjg3M2NhNzJjYjdlZTFhZTBhNWQ5Zi4uN2ViMTA3ODc3ZTJiMmEwYTg5OTQzNjc0MjI0ZmQx
YjI4MDA0Y2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5j
cHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6
c2VuZERhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdQogewogICAgIGlm
IChhdXRvKiBzb3VyY2UgPSBzb3VyY2VGcm9tSWRlbnRpZmllcihzb3VyY2VJZGVudGlmaWVyKSkg
ewogICAgICAgICBpZiAoaXNSYXcpCi0gICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwor
ICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzb3VyY2UtPnNlbmRTdHJpbmdEYXRhKENTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOwogICAgIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlcjo6Y2hhbmdlUmVhZHlTdGF0ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aQog
CiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBib29sIGlzUmF3LCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IGJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIFN0cmluZyB0ZXh0
OwogICAgIGlmIChpc1JhdykKICAgICAgICAgYnVmZmVyID0gZGF0YS52ZWN0b3IoKTsKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURh
dGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyCiAKICAgICBwb3N0VGFza1RvSGFu
ZGxlcihoYW5kbGVySWRlbnRpZmllciwgW2lzUmF3LCB0ZXh0ID0gV1RGTW92ZSh0ZXh0KS5pc29s
YXRlZENvcHkoKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXShhdXRvJiBoYW5kbGVyKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGlzUmF3KQotICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZl
UmF3RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBoYW5k
bGVyLmRpZFJlY2VpdmVTdHJpbmdEYXRhKFdURk1vdmUodGV4dCkpOwogICAgIH0pOwpAQCAtMjMw
LDkgKzIzMCw5IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3Vy
Y2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShXCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURh
dGEgeyBpZGVudGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpIH0g
fSwgMCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3Vy
Y2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2Vp
dmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSksIHNpemUgIH0gfSwgMCk7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQ
cm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBkYXRhLCBzaXplICB9IH0sIDApOwogfQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkRGV0ZWN0RXJyb3IoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyLmgKaW5kZXggNmQxMmI3YzM1ZjAwNGE0N2M1NTRmZGIxNWVlMjM5ZGU2
MmIzNTBjZS4uZjhjMDVlNTM3NDE3ZDc5NGQ1YTYxNWU3ODhlMWU2YWVkYTBhNzM2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaApAQCAtODgsNyArODgsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBjaGFy
Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllcikgZmluYWw7CiAgICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBzaXplX3QpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggMDA2Nzg5OTA5MzJjNDM4MmJiNjFm
ZjAwNDk4NGM0YjM5OTBmYjRlNy4uM2RjOTI4ZGM1N2E5N2QwMmM5Mjg0NTMzMTFjZjMxY2JmMmI4
NWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtMjE5LDcgKzIx
OSw3IEBAIHN0YXRpYyBOUEVycm9yIHBhcnNlUG9zdEJ1ZmZlcihib29sIGlzRmlsZSwgY29uc3Qg
Y2hhciAqYnVmZmVyLCB1aW50MzJfdCBsZW5ndGgsCiAgICAgICAgIGlmICghZmlsZUNvbnRlbnRz
KQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCi0gICAgICAgIHBv
c3RCdWZmZXIgPSBmaWxlQ29udGVudHMtPmRhdGEoKTsKKyAgICAgICAgcG9zdEJ1ZmZlciA9IGZp
bGVDb250ZW50cy0+ZGF0YUFzQ2hhclB0cigpOwogICAgICAgICBwb3N0QnVmZmVyU2l6ZSA9IGZp
bGVDb250ZW50cy0+c2l6ZSgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgTlBBUEkgc3BlYyBz
dGF0ZXMgdGhhdCB0aGUgZmlsZSBzaG91bGQgYmUgZGVsZXRlZCBoZXJlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCmluZGV4IDYxN2Q3ZDc2YzBhOGE1ZWI5ZGJhNTdhOGE4MDZiYzYwODYyNmY0NWMu
LjA5MGQ1YTQwY2ViZDc4YzFlZDcyYmFiYTdiZjZlMDcyMzNiMjVlNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcAog
ICAgICAgICBwbHVnaW5TdHJlYW0tPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3Ry
ZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnN0
cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRl
cywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIApAQCAtOTAx
LDcgKzkwMSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50CiAgICAgbV9tYW51YWxTdHJlYW0t
PmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZp
ZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAg
ICBBU1NFUlQobV9zaG91bGRVc2VNYW51YWxMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5k
ZXggMjQ3NDkxNDZkOTBmNDU1ZjY5ZjU0MzU5NjRlMGIzYmNhMzFkY2NmMi4uYTU4MmI2NjUyZmE1
MDFkNmU3N2RjMjQyOTA2YjQxZGVhMmIwNWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0x
OTUsMTIgKzE5NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExv
YWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFp
bCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRl
OwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJp
ZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMmE2MDFj
YzA4YjQwZTc1ZjlhZTE4YTYyNWE4MmMyNjFmZmQ3YzI3ZS4uZGJmYjhiNmI4MTFiMzY0NzRhNWRl
NmJiNmE3ZjM4YzViMDI1MjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNw
cApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3QgcwogICAgIHN0YXJ0KHJl
c3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVU
eXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICAvLyBEZWxpdmVyaW5nIHRoZSBkYXRhIGNvdWxkIGNhdXNlIHRoZSBwbHVnLWluIHN0
cmVhbSB0byBnbyBhd2F5IHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQgaGVyZS4KICAgICBS
ZWY8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHByb3RlY3QoKnRoaXMpOwpAQCAtMTE3LDcgKzExNyw3
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0
IFN0cmluZyYgcmVzdWx0KQogICAgIGlmICghc3RhcnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1
bHRDU3RyaW5nLmxlbmd0aCgpLCAwLCAidGV4dC9wbGFpbiIsICIiKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZGVsaXZlckRhdGEocmVzdWx0Q1N0cmluZy5kYXRhKCksIHJlc3VsdENTdHJpbmcu
bGVuZ3RoKCkpOworICAgIGRlbGl2ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHJlc3VsdENTdHJpbmcuZGF0YSgpKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAg
c3RvcChOUFJFU19ET05FKTsKIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OnN0YXJ0KGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxTdHJpbmcsIHVpbnQz
Ml90IHN0cmVhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJl
YW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9QbHVnaW4oKQogICAgIH0K
IH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YVRvRmlsZShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBp
ZiAobV9maWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUg
JiYgbV9maWxlUGF0aC5pc051bGwoKSkgewogICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3Jhcnkg
ZmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDEwYzdmMmQ5ZTg3NDYz
YWNiZTc4Zjg3ZDQzZTUyMWYwODk5MjNhYmUuLjliMDcwOTk4ODQ3MjA0MzFhM2IxM2U0MDFlZTQ4
ODgzOGJhNjI5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3Bv
bnNlU3RhdHVzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBoZWFkZXJzKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKICAg
ICB2b2lkIGRpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpOwogCkBAIC03Myw5ICs3Myw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIG5vdGlmeUFuZERlc3Ryb3lTdHJl
YW0oTlBSZWFzb24pOwogCi0gICAgdm9pZCBkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCk7CiAgICAgdm9pZCBkZWxpdmVyRGF0YVRvUGx1Z2luKCk7Ci0gICAgdm9pZCBk
ZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9p
ZCBkZWxpdmVyRGF0YVRvRmlsZShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAK
ICAgICBSZWY8TmV0c2NhcGVQbHVnaW4+IG1fcGx1Z2luOwogICAgIHVpbnQ2NF90IG1fc3RyZWFt
SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKaW5kZXggNmNkYmVkY2QwODU3MmUwYjY1OTk4NTQzZmRmNDJmMjU4NDAyMjA1YS4uYTY1MzFi
NjRiOTc3MzA2ZDBmZmQ4MmFjYzgyZjI4YjA5Y2ZlMDIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTc2LDExICsxNzYsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbVdpbGxT
ZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQogICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHN0
cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQg
c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFs
OwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2Fu
Y2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpIGZpbmFsOwpAQCAtMzY2LDcgKzM2Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFs
OworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGMwMmY4
NDBjNDA3NDgwMWJkODc0ZjZjZjgzMmU5N2I4ODQxZjVjNDkuLjE1MTNlMDRlZjRlODU2ZmE4NzJj
NTUyOGE3Y2JiZDA3MTFmN2QyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBQREZQ
bHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJl
YW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQ
REZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKIHsK
ICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMTY2LDcgKzExNjYs
NyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgY291bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQp
OwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRG
YWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKQpAQCAtMTY4NCwxNCArMTY4NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAg
ICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1E
aWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVF9V
TlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAg
IGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFi
bGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnl0ZXMpLCBsZW5ndGgpOworICAgIENGRGF0YUFwcGVu
ZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxlbmd0aCk7CiAgICAgbV9zdHJlYW1lZEJ5dGVz
ICs9IGxlbmd0aDsKIH0KIApAQCAtMTcyOSw3ICsxNzI5LDcgQEAgdm9pZCBQREZQbHVnaW46OmVu
c3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICBDRkRh
dGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRhcmdldExlbmd0aCAtIGN1cnJlbnRMZW5n
dGgpOwogfQogCi12b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
aWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZSgwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4
IGQzYzdhYzcwNTExZmM3MmM4NzA4NGI4YTM3NGY5ZDZjNzI2ODU5YjAuLjEzNTVjZmY0ZWI3N2Y2
ZjcxN2RiOTIwZTIxNDA1OGZjMTZiMmZlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0
aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKIAogICAg
IC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcu
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFt
SUQpID0gMDsKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRo
YXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQg
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVn
LWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lk
IG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggYmZmODA0YjM4ODVhYTU4
YmE0NmMxZjIzODcwYTYwOWUzMzkzOWFjZi4uOWNlZDdkYTA3NTAyZjYyYmFjNmFmNjc5ZTE2MTBk
NGU2NTllMDdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcApAQCAtMzMwLDkgKzMzMCw5IEBAIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25z
CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25z
ZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwg
aGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCi12b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2
b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFt
RGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyksIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQp
OworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFS
ZWZlcmVuY2UoYnl0ZXMsIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCiB2b2lk
IFBsdWdpblByb3h5OjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpA
QCAtMzUwLDkgKzM1MCw5IEBAIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfCiAgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJl
YW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5J
bnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblByb3h5Ojpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1
Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgp
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZXMsIGxlbmd0aCkpLCBtX3BsdWdpbkluc3Rh
bmNlSUQpOwogfQogCiB2b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRGaW5pc2hMb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CmluZGV4IDAwOGMyMDIxNmRlNWI3YTE5N2YxZjI0MjRhMTJlNTYxMmM2ZmRlNDAuLjNmMWIzOWVh
YjdkYWUwODE2OGRkM2E3MzhmZWQyYjBkYzA3MTQ0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcsMTEgKzg3LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJl
cXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVk
KSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGI2NGFjYWJk
Zjc1M2FhODllN2I3MGU0ZDU2ZTU1ZDc3MGVkMzIwMjEuLjNhMDk2ODNlZWM3YWEyMWU2MWRlYTEw
Yzg4MjljMzA3Njg0MDdhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBO
ZXRzY2FwZVBsdWdpblN0cmVhbUxvYWRlckNsaWVudAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIApAQCAtMjM5LDcgKzIzOSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSCiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1M
ZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCBy
ZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpTdHJl
YW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkKIHsKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNl
aXZlRGF0YShtX3N0cmVhbUlELCBieXRlcywgbGVuZ3RoKTsKIH0KQEAgLTQwNyw3ICs0MDcsNyBA
QCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRl
TVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5h
bWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
Ly8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6
ZS4KICAgICBpZiAoIW1fcGx1Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IDgyOGQzMGEwNmU5ZDhmZGQ3OGI1OThkZjkwYTY2MzkzMWRh
MGU4ZDMuLjRhMWY1YWM1N2E5ZDc3NTRlNjQwNzhmN2RhNDJiNTc2YTMzNDM5ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX3BsdWdpbiB8fCBtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lk
IG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmlu
aXNoTG9hZGluZygpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZhaWwoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
CmluZGV4IDg1NDFkZjNjYjIyMzljYWQ4YWM3ZDU2ZjNlNDYyZDBkNWE3MWVjYjUuLjBlMzQ2MzFh
ZDZmYzI0OTFiM2RiMjc2YjNmMTRmZDA2MWNlZTk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwCkBAIC0xMzAsMTIgKzEzMCwxMiBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9y
bURhdGE+JgogICAgIH0pOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmso
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNp
emUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXpl
IH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9h
ZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggOWRhYWJlMTRh
MzRiM2MwOWYyN2RjOGRmNTQzMDRlZTc1MzE2OTVlMS4uYmU0M2MwZmRkYjVlMTYyNzFhZWE4ZTVj
YzIwMmRjN2UxMWEyNjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApA
QCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhbnVwKCk7CiAgICAgCi0g
ICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90KTsKICAgICB2b2lkIGRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7CiAKICAgICBzdHJ1Y3QgQmxv
YkxvYWRlciBmaW5hbCA6IFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50IHsKQEAgLTY3LDcgKzY3
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRh
LCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRh
LCBzaXplKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpIGZpbmFsIHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAgICB2
b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggODMzYzgyYzU0ZDM3
YWUwMTVhMTgxYTdiOTMyNGY3MDUzMDdjNjhmNC4uYzhmMjQ4YTY0NzY1NzZhMjkyYzc1ZDVmYWE2
OGY1YWM2M2E0NzVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBzdGF0aWMgSFRUUEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYg
Zm9ybURhdGEpCiAgICAgICAgIEhUVFBCb2R5OjpFbGVtZW50IGVsZW1lbnQ7CiAKICAgICAgICAg
c3dpdGNoT24oZm9ybURhdGFFbGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBieXRlcykgewogICAgICAgICAgICAgICAgIGVsZW1lbnQudHlwZSA9IEhUVFBCb2R5OjpF
bGVtZW50OjpUeXBlOjpEYXRhOwogICAgICAgICAgICAgICAgIGVsZW1lbnQuZGF0YSA9IGJ5dGVz
OwogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxl
RGF0YSYgZmlsZURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDVl
ZDIzMWM4NTVjMDU5ZWRhZjczNDgxZDUwYjkzMThlNGVlNjIxMDIuLjVkYTJiYjlmNGEyZDdkNDIz
YmVlODU0NDcxZmU4NTNkM2U0YTI2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVw
bGFjZU11bHRpcGFydENvbnRlbnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0
ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYg
KCFtX3BsdWdpblZpZXcpCiAgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgp
OwpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYWluUmVz
b3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogMCksIG1haW5SZXNvdXJjZURh
dGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0
YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxv
YWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5Mzg2ZWZhNTlhNTU1
NTY1ZTFhNDY0YmJkNzgyYjc1NGNlZDgxOTQzLi5hYTNhODYwMTc1NzI2NTQxMzg1MmE0YjllODk1
NjRiYjRkMWEzZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAg
ICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFy
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIAogICAgIHZvaWQgdXBk
YXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCAwMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiLi4yYWMyNWRj
ZDM5ZTQ4MGRmOTM2YzZhZWI3OWVjMjBhZmVjMmQ0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
CiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
Ly8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KLSAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJpZGVC
dWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZv
ck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIp
KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1
ZmZlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCA0N2UzY2E5NmU5M2M1MTQxODQyYTcz
M2JhZDEyNjRjYmYxNTI0OTIxLi5kZGMwNzFiM2EyNmFmODI4ZWM3YzQ2M2Q1MWM3MTM4MGU1N2U5
MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVUYXNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFdlYlVS
TFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEoc2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEpCiAgICAgfQogCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5
dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERh
dGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5n
VGFzaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBj
NTM2MjVhMTg4MzhmZDBkMjczZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4xNTIwMGVjZDkxOTI2OGMz
NDA3ZDkxOWMwNjY3MThjOTMyNDYxNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTdHJlYW1X
aXRoUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogCiAgICAgLy8gRklYTUU6IENh
biB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1
N2FhNGE4MmQ2YTY3MTgxNWU0M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4wODYxNWU0OWY1MTMwM2E0
ZjU5Y2FkMDUzOWNmZmU3ZDlhMDViMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbS5tbQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbTo6c3RhcnRTdHJlYW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBsb25nIGxvbmcgZXhwZWMK
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KFtoZWFkZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBsZW5ndGhdKTsKIH0KICAg
ICAgICAgICAgICAgICAgICAgIAotdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06
OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgX1dLUEhTdHJlYW1EaWRSZWNl
aXZlRGF0YShtX2luc3RhbmNlLT5ob3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+cGx1Z2luSUQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fc3RyZWFtSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdF9jYXN0PGNoYXIqPihieXRlcyksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihi
eXRlcykpLCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciop
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNzU0MjY5Mzgx
MmU3OGI3Zjg5YThlMzQ0MDM3MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNlZjhjMDZhY2M5ODhhYTI0
YWI4ODI3YTM5OGY1YmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpldmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltKU0RhdGEgbGVuZ3RoXQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25z
ZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsK
KyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0t
PmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDc2MTE3MWNlYTdjYTVmYTY3MjhjOWRjMDBkMmViN2IyZDE4
Zjc3ODAuLjY0YzI3N2I1ZjQzZDE1MWJkYTQxNWJlYzliNTlkNWYzY2NmYzA4NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTUxOSw3ICs1MTksNyBAQCAt
ICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0Rh
dGEgKilkYXRhCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoSG9zdGVkTmV0c2NhcGVQ
bHVnaW5TdHJlYW0qIG1hbnVhbFN0cmVhbSA9IF9wcm94eS0+bWFudWFsU3RyZWFtKCkpCi0gICAg
ICAgIG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBtYW51YWxTdHJlYW0t
PmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilw
bHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5o
CmluZGV4IDJiYzk3OGQzNDAzZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMuLjE5MzkwYjVj
MDJhNzVmNzlmOTY2ZjgxYTQxYTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveVN0cmVhbVdpdGhFcnJvcihO
U0Vycm9yICopOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggZjg4OTBkMDUxNmIyMTJhY2ZlNzY5
NjY0MjVkZTU0NDEwNGM5YTY5NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMyNjkxNTgxNGU1NjYyMGM5
NTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciopCiAgICAgZGVzdHJveVN0cmVhbVdpdGhSZWFzb24oTlBSRVNfRE9ORSk7CiB9CiAK
LXZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8g
ZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQq
KWJ5dGVzIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
aW5kZXggMzNiYTU3YzE1NWYxOGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5NWU5Yy4uYThhMmVlODE3
MWEyZGI4ZDgyYzhiYjA1YTk5ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEw
NTEsNyArMTA1MSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyBy
ZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICB9CiAKICAgICBpZiAoX21hbnVhbFN0cmVh
bS0+cGx1Z2luKCkpCi0gICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7Cisg
ICAgICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClw
bHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKill
cnJvcgpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVn
aW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICAKICAgICAgICAgc3RyZWFtLT5zdGFy
dFN0cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlk
UmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwg
W0pTRGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0p
OwogICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYmQ1MjIzYTBjZTE1MGNmMzVhMjhiNzU1MDQ4MDA0YzFm
Y2I1NGFhNi4uMTUyZmRhMWY2ZWQ1N2UyOTlhZGUzNGQwN2VlOGRiYjRlMmMxZWVhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAg
IHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4
X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2MzQyMjAwNWZlZjRmYjA5Y2Y2N2NhMjNkZjEw
MmNhNzRjNWZmOTVhLi44ZTFiMjQ3ZmY3YTIxZWU3ZGIzODFjNjQwZTEwNjVhYjhjYWFkMjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogI2VuZGlm
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBh
dXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6
KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBbZGF0YVNv
dXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDQxMzliYjVhOTE2ODNlNjVhY2Mw
ODI1M2JlY2IzZmRkMGFiYzYzZDkuLmZkMzEwMDM1MDFmZmNjM2MwMWE5MmY5NTdiYzM0Y2QyZGJh
MWY4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtOTgyLDcgKzk4Miw3IEBAIC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAg
ICBhdXRvKiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAg
ZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRl
UmVuZGVyZXJzKTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPmNvbW1pdERhdGEoKGNvbnN0IGNoYXIgKilbZGF0YSBieXRlc10sIFtkYXRhIGxl
bmd0aF0pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3Ro
XSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1YjFiZmIy
ZDM0MTc0YzY4YTJiNDBiZDRjN2QxYWRiOGQzMjlkNWY5Li40ZDA0MGY1NjQ2ZWI4MjQxYTkyYmM3
YzJkYzc4ZjZkZmQ5NmRhZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02
NDEsNyArNjQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOGFhN2FhMzFmZTgyNWVjNzk1Y2YxYjNlM2Zi
M2U1M2JmZTZiODc5Zi4uNmRhYzBiMDUyMTgzOTE2NjIwODk2NDFmNjVhZTk0MmMyOWI4OTZkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjYThkMzhk
NTM1MzM4NDc0MDk3YmI0OTA2MDQ1M2U2NTI5YzkzYTkuLjkyYjdiZDRiMDIyOWM0ZTQzZjUxNDUz
MGQ0YjI1NWQ4MGM1MWU2NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBv
ZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGlu
c3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxz
byBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50
OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlw
ZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQnVmZmVyKToKKwogMjAyMS0wNi0wNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgYXR0
cmlidXRlZEJ1bmRsZUlkZW5kaWZpZXIgYSBwcm9wZXJ0eSBmb3IgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBpbnN0ZWFkIG9mIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4
IGJlYzdkMTE5ZWE4MTliMDE5OWE4NzNmMDIwNzY2ZDQxOTIwMWFjMmEuLmVhNzMyYThlMGUwYzI2
YzlkOTBhMTIzNTk0MGFjZGU1N2UyMTYzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewotICAg
IFZlY3RvcjxjaGFyPiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVj
dG9yMSgweDQwMDAsICdiJyk7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjIoMHg0MDAwLCAnYycp
OworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cjIoMHg0MDAwLCAnYycpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25l
LT5zaXplKCkpOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCBjaGFyKiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQorc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBjaGFyKiBleHBlY3RlZCkKIHsKICAgICAvLyBleHBlY3RlZCBpcyBudWxsIHRlcm1p
bmF0ZWQsIGJ1ZmZlciBpcyBub3QuCiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihleHBlY3Rl
ZCk7CkBAIC0xNzEsOSArMTcxLDkgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgY2hh
ciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHAKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3RvcjxjaGFyPiBzMSA9
IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMiA9IHsnZScsICdmJywg
J2cnLCAnaCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OworICAgIFZlY3Rv
cjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OworICAgIFZlY3Rvcjx1aW50OF90
PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CkBA
IC0yMDAsNyArMjAwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewotICAgIGF1dG8gbWFrZUJ1
ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPGNoYXI+PiYmIGNvbnRlbnRzKSB7CisgICAgYXV0byBt
YWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKICAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBmb3Ig
KGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoY29udGVudCkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBpc0VxdWFsVG8pCiAgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJ319KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQo
KSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPGNoYXI+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7CisgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdj
JywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVD
VF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319
KS5nZXQoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlz
RXF1YWxUbykKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewotICAg
IFZlY3RvcjxjaGFyPiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OworICAgIFZlY3Rvcjx1aW50OF90
PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CiAgICAgU3RyaW5n
IHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
</data>
<flag name="commit-queue"
          id="452117"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430614</attachid>
            <date>2021-06-04 14:43:16 -0700</date>
            <delta_ts>2021-06-04 14:50:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604144315.patch</filename>
            <type>text/plain</type>
            <size>258453</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDBkYWM3ZmYw
M2NjODQ2ZDE4OTZhMDg4ZjYyNjMwMjg2MTZiZGZhNjkuLmI2ZTY4ZjNjNzI5ZmI0MWM5MjlhNmQx
NzhkYTYwMzk5ZmRjOTFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lk
IEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQo
bV9yZXF1ZXN0SW5GbGlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IDBmMmYw
NDE1NDMxMzIzNTIyM2NkZmZiN2M1YzRjMzY5NGM0ZTkwMzQuLmUxMGQ4ZDkxNmZiMGYyNWZiZWEz
ZjdhYzJhZjU1ZjU3MGIyMGRjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IGVlNGYzNjFkZDA4M2RlNzNjOWM0ZGU4ODE0
MTI0MGFmMTVmYjI5MDMuLjNiOTYwMjEwOTU5NjMyNWEwZDQ3NDMyZTQ2NmY0NWY4MmQxNjEwZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgaW50IEZpbGVIYW5kbGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7
CiAgICAgaWYgKCFvcGVuKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmls
ZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBGaWxlSGFuZGxlOjpwcmludGYoY29u
c3QgY2hhciogZm9ybWF0LCAuLi4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oCmluZGV4IDU4Y2YxNDA0OGQzNTUzMDIwNzdmMWM0ZWQ1MTQ5MjVh
NWM3ZDkxNGMuLjNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IDgyNTg2NTNmMjU1MTgyZjc0ZWNmZDRkODdhYWU5OWFhMTY2M2QxMTEuLjAwNDBh
OGE2MTE4N2ZiMGU0OWU4NmYzMzcwYmI4ZjgyMzc3NWFmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKTsKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIHNpemUpOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQpAQCAtNTIsNyArNTIsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJiBk
YXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CkBAIC04MSwxNSArODEsOSBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3RvcjxjaGFyPiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KLS8vIEZJWE1FOiBNb3Zl
IHRoZSB3aG9sZSBjbGFzcyBmcm9tIFZlY3RvcjxjaGFyPiB0byBWZWN0b3I8dWludDhfdD4gYW5k
IG1ha2UgdGhpcyBlZmZpY2llbnQsIHJlcGxhY2luZyB0aGUgVmVjdG9yPGNoYXI+IHZlcnNpb24g
YWJvdmUuCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
IHsgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSB9KTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdApAQCAtMTAyLDcgKzk2LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb21iaW5lZERhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBj
b21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NpemUpOwogICAgIGZvciAoY29u
c3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCiAgICAgICAgIGNvbWJpbmVkRGF0YS5hcHBl
bmQoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKQEAg
LTExMyw3ICsxMDcsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50
KCkgY29uc3QKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLWNvbnN0
IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIyLDExICsxMTYsNiBAQCBjb25zdCBjaGFyKiBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmRhdGEoKTsKIH0KIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhQXNVSW50OFB0
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSk7Ci19Ci0KIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29t
ZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0
aW9uIDwgbV9zaXplKTsKQEAgLTE1MCw3ICsxMzksNyBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0
b0hleFN0cmluZygpIGNvbnN0CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKCkpLCBzaXplb2YoY2hhcikpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwg
MSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJl
cXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwog
ICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVt
Y3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBz
ZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAg
ICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9z
aXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7
CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApA
QCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5k
KHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1f
c2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYm
IGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBh
dXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBAIC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwK
KyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRh
dGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFS
ZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENG
RGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0s
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+
JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnX2J5dGVzX2dl
dF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyAgICAgICAgW10oY29uc3QgR1JlZlB0
cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLT5kYXRh
KCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBk
YXRhKSB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3Qg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFy
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQog
ICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAg
c2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9z
ZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hh
ciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQt
PmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIobGVuZ3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAz
KTsKIAogICAgIC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNo
YXIqIHAgPSBidWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihidWZmZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJh
Y3RlcnM4KCk7CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZl
ci5zaHJpbmsocCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2Uz
MmZiLi41Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDog
cHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxl
RGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpA
QCAtOTksOCArOTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFs
bCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5
IGFyZSBub3QgYWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdp
bigpIGFuZCBlbmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRl
cyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9z
c2libGUuCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGFBc1VJbnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBl
bmQoVmVjdG9yPGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAg
ICAgdm9pZCBjbGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8g
VG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50
LgogICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERh
dGFTZWdtZW50PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKQEAgLTE1MCw3ICsx
NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYg
ZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
ICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtMTY3
LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCisgICAgICAgIFZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjA0LDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmKTsKQEAgLTIzNSw3ICsyMzUsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAjaWYgVVNFKEZPVU5E
QVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcAppbmRleCBhMjAzZmVlNjE0MjUxM2NjMjJlNmY4OWRjNGM4MjRmYTA3MDJlMDlkLi41
ZTQ0NjZjZDNmMTcxODhhMjdjMGNkZTFlYThhODAxYjAyYTI0N2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC00Miwy
NCArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9i
dWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9zZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5n
dGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUo
ZmFsc2UpCiAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgLCBtX3NlcGFyYXRvcklu
ZGV4KDApCiB7CiB9CiAKIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAg
IDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9z
ZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4
KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCi0gICAgLCBtX3NlcGFyYXRvcklu
ZGV4KDApCiB7CiAgICAgc2V0U2VwYXJhdG9yKHNlcGFyYXRvcik7CiB9CkBAIC03NSw3ICs2Myw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnNldFNlcGFyYXRvcihjb25zdCBjaGFy
KiBzZXBhcmF0b3IpCiAgICAgbV9zZXBhcmF0b3IuYXBwZW5kKHNlcGFyYXRvciwgc3RybGVuKHNl
cGFyYXRvcikpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmso
VmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQorYm9vbCBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXRvcikKIHsKICAgICBpZiAobV9yZWFjaGVkRW5kT2ZGaWxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC04Myw3ICs3MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0
CiAgICAgY2h1bmsuY2xlYXIoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB3aGlsZSAo
bV9zZWdtZW50SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgIGNoYXIgY3Vy
cmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKKyAgICAgICAgICAg
IGF1dG8gY3VycmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKICAg
ICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyICE9IG1fc2VwYXJhdG9yW21fc2VwYXJhdG9y
SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fc2Vw
YXJhdG9ySW5kZXggPD0gbV9zZXBhcmF0b3Iuc2l6ZSgpKTsKQEAgLTExMiw3ICsxMDAsNyBAQCBi
b29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVu
aywgYm9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewog
ICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICht
X3NlcGFyYXRvckluZGV4ID4gMCkKLSAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBh
cmF0b3IuZGF0YSgpLCBtX3NlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICBjaHVuay5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgp
KSwgbV9zZXBhcmF0b3JJbmRleCk7CiAgICAgICAgICAgICByZXR1cm4gIWNodW5rLmlzRW1wdHko
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMiwxNCArMTEwLDE0IEBAIGJvb2wgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1
ZGVTZXBhcmF0CiAKIFN0cmluZyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rQXNV
VEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAg
ICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAo
IW5leHRDaHVuayhkYXRhLCBpbmNsdWRlU2VwYXJhdG9yKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgcmV0dXJuIGRhdGEuc2l6ZSgpID8gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFjayhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIDogZW1wdHlTdHJpbmcoKTsKIH0K
IAotc2l6ZV90IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpwZWVrKFZlY3RvcjxjaGFyPiYgZGF0
YSwgc2l6ZV90IHJlcXVlc3RlZFNpemUpCitzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OnBlZWsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIHsKICAg
ICBkYXRhLmNsZWFyKCk7CiAgICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gbV9zZWdtZW50TGVuZ3Ro
IC0gbV9zZWdtZW50SW5kZXgpIHsKQEAgLTE0MSw3ICsxMjksNyBAQCBzaXplX3QgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSkKICAgICBkYXRhLmFwcGVuZChtX3NlZ21lbnQgKyBtX3NlZ21lbnRJbmRleCwgcmVhZEJ5
dGVzQ291bnQpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclBvc2l0aW9uID0gbV9idWZmZXJQb3NpdGlv
biArIG1fc2VnbWVudExlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBzZWdtZW50ID0gMDsKKyAgICBj
b25zdCB1aW50OF90KiBzZWdtZW50ID0gbnVsbHB0cjsKIAogICAgIC8vIExldCdzIHByZXRlbmQg
YWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBz
aG91bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMg
b2YgdGhlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDc1NmVlZTI0NmIwZTJjYWUyMGM3ZWU3Nzc5ZTY1
YzBmOGQ3MzQ2M2MuLmM5ZjViMDZmYjQ2NTZkYzJlYWNkNDA0NDFmZjM0MWUyNWZkNGM3ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aApAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25z
dCBjaGFyKik7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVm
ZmVyIHdhcyByZWFjaGVkLgotICAgIGJvb2wgbmV4dENodW5rKFZlY3RvcjxjaGFyPiYgZGF0YSwg
Ym9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOworICAgIGJvb2wgbmV4dENodW5rKFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOwogCiAgICAg
Ly8gUmV0dXJucyBhIG51bGwgc3RyaW5nIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGhhcyBi
ZWVuIHJlYWNoZWQuCiAgICAgU3RyaW5nIG5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFG
YWxsYmFjayhib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFkcyBz
aXplIGJ5dGVzIGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBidWZmZXIsIHdpdGhvdXQg
Y2hhbmdpbmcgdGhlIGJ1ZmZlciBwb3NpdGlvbi4KICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYnl0ZXMgcmVhZC4gVGhhdCBudW1iZXIgbWlnaHQgYmUgbGVzcyB0aGFuIHRoZSBzcGVjaWZp
ZWQgc2l6ZSBpZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgc2l6ZV90
IHBlZWsoVmVjdG9yPGNoYXI+Jiwgc2l6ZV90KTsKKyAgICBzaXplX3QgcGVlayhWZWN0b3I8dWlu
dDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7
Ci0gICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgY2hhciogbV9zZWdtZW50
OwotICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGg7Ci0gICAgc2l6ZV90IG1fc2VnbWVudEluZGV4
OworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworICAgIGNvbnN0IHVpbnQ4X3Qq
IG1fc2VnbWVudCB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9zZWdtZW50TGVuZ3RoIHsgMCB9
OworICAgIHNpemVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBib29sIG1fcmVhY2hlZEVu
ZE9mRmlsZTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3I7Ci0gICAgc2l6ZV90IG1fc2Vw
YXJhdG9ySW5kZXg7CisgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKKyAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleCB7IDAgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5oCmluZGV4IDBiZjBjNGFmYjAxYjVhMWI5OWVhN2M5ZjY2YTMxYzA2MmNlM2FhYTIu
LjA3OTdkZmJlOGQwMThiZTYzNjE3NDRjNThmODkyZGQ1NmVkNjg5YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7
CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDM4NzE3MzhlNWQ1YzA1
M2NiZGIyZDRiYjliNzMwMzgyZmJjYWM0MmUuLjQyOTBkYjEyOGQwMDBhNDBlZWY3MGZkMjk0MWQ2
MzQ0OTA0NmRlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNDUsNyArMTQ1
LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQog
Ci12b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjph
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY29waWVkRGF0YSB7IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoodm9pZCopZGF0YSBs
ZW5ndGg6bGVuZ3RoXSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA1NmE3ODhj
ZDc1MDQ4ZWZkZWNhZWU2NmVjZmFmMGY5NjUwZGM3ODZiLi4wNjhjZGNiMzgzZjQyMzY1YWMzMjY0
ZTIyOWE2ZDYzYmMyYjRhYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDlmOGZhNGJjZTBk
MGY4ODBiYTQzNzUxM2EzMjY2ZjU2ZjVhMDA2MS4uOWQwY2U5MGMwYjAxOTI4MDY1OGU4NzEzOGMx
YzUxZDE3NjQ2Nzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTk0LDcgKzk0
LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwog
fQogCi12b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
OjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJU
KCFbbV9yZXBsYWNlbWVudERhdGEuZ2V0KCkgbGVuZ3RoXSk7CiAgICAgbV9yZXBsYWNlbWVudERh
dGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0
NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJmMzMyMzgyMmZlOGYzNDE2MjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0
RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAg
IHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVy
biBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2Nk
Yjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgICAgICBpZiAoIWJ1
ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtMjA1LDkg
KzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1f
cHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHko
KSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7
IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVy
Lm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMt
PmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAxY2E5NzYzM2Q4NjJiOGRlODMwZmJm
ODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4ZjhiNTU1NmNjMmY2YTY3MWU1OTk2YWQx
ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTU2LDcg
KzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
aW5kZXggM2VkNGUwNWM0Mzk0ZGZmNjNhZTVmYzZiYTFlZjFhODA0MjU0M2NiNy4uYTI4ZTYxYzAy
YTcyY2E5Mzg5YTY4NjMyNWI1NDZlMzFjNGMwNDk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKaW5kZXggMWUwZDgwZGZlOTExN2JjYTlhMzk0Mjc4NTE5OGY4MzUwNmRlMzkz
Ny4uMTA3MjYyN2E5MGQyOTRmZTllZjc2OTU3NWUzZjA3ODFkZDQwZDI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAt
NjEsMTYgKzYxLDE2IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDMyKFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MzJf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDMyKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICB1aW50MzJfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25s
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCi1zdGF0aWMgYm9v
bCB3cml0ZVVJbnQxNihWZWN0b3I8Y2hhcj4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCitzdGF0
aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFs
dWUpCiB7CiAgICAgdWludDE2X3QgYmlnRW5kaWFuVmFsdWUgPSBodG9ucyh2YWx1ZSk7Ci0gICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8Y2hhcio+KCZiaWdF
bmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOworICAgIHJldHVybiB2ZWN0b3Iu
dHJ5QXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQ4X3QqPigmYmlnRW5kaWFuVmFsdWUp
LCBzaXplb2YoYmlnRW5kaWFuVmFsdWUpKTsKIH0KIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdv
ZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KQEAgLTEwMSw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fdmVjdG9yLnRyeVJlc2VydmVDYXBhY2l0
eShtX3ZlY3Rvci5zaXplKCkgKyBuKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgbV92ZWN0b3IuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbik7Cisg
ICAgICAgIG1fdmVjdG9yLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IG4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChvZmZzZXQgKyBuID4gbV92ZWN0b3Iuc2l6ZSgpKQogICAgICAg
ICAgICAgbV92ZWN0b3IuZ3JvdyhvZmZzZXQgKyBuKTsKICAgICAgICAgbV92ZWN0b3IucmVtb3Zl
KG9mZnNldCwgbik7Ci0gICAgICAgIG1fdmVjdG9yLmluc2VydChvZmZzZXQsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgbik7CisgICAgICAgIG1fdmVjdG9yLmluc2VydChvZmZzZXQs
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMTIyLDExICsxMjIsMTEgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8Y2hhcj4mIG1fdmVjdG9yOworICAgIFZlY3Rvcjx1aW50OF90PiYg
bV92ZWN0b3I7CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9B
Ukcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBjb252
ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3RvcjxjaGFyPiYgc2ZudCkKIAog
I2lmIFVTRShXT0ZGMikKICAgICBpZiAoc2lnbmF0dXJlID09IGtXb2ZmMlNpZ25hdHVyZSkgewot
ICAgICAgICBjb25zdCB1aW50OF90KiB3b2ZmRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNv
bnN0IHVpbnQ4X3QqPih3b2ZmLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIHdvZmZEYXRhID0gd29m
Zi5kYXRhKCk7CiAgICAgICAgIGNvbnN0IHNpemVfdCB3b2ZmU2l6ZSA9IHdvZmYuc2l6ZSgpOwog
ICAgICAgICBjb25zdCBzaXplX3Qgc2ZudFNpemUgPSB3b2ZmMjo6Q29tcHV0ZVdPRkYyRmluYWxT
aXplKHdvZmZEYXRhLCB3b2ZmU2l6ZSk7CiAKQEAgLTI5Miw3ICsyOTIsNyBAQCBib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAg
ICBpZiAoIWJ1ZmZlciB8fCAhaXNXT0ZGKCpidWZmZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBWZWN0b3I8Y2hhcj4gY29udmVydGVkRm9udDsKKyAgICBWZWN0b3I8dWludDhfdD4g
Y29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVy
dGVkRm9udCkpCiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDVjMGNhNGZjMjA3ZDIxMGZkMDgwNTRj
NGZmYTdlZmNhMzNhMGIxMmQuLjNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJk
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaApAQCAtMzcsNyArMzcsNyBAQCBib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKIAog
Ly8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3Vs
ZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lv
biByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0
aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRo
ZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhh
cyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2Zu
dC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29u
dmVyc2lvbiBmYWlscywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQppbmRleCAzMGNmNzllY2ZkZjI1ODJmNTQ1MmFiZjIxMjk2MTI4NTYz
M2Y3ODMwLi4yNDc3MjhlNmNiYzA3ZjI4MmZhNThmNTE3YjhhNmZlMDZlNWIwNjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBA
IC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgZmluYWw7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90Kiwg
aW50KSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE4KICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9p
ZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBjaGFyKiwgaW50KQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90
KiwgaW50KQogewogICAgIEFTU0VSVCgmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYg
KGF1dG8qIGRhdGEgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQpAQCAtMTU0LDcgKzE1NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsg
fQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVu
dC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgc2l6ZSkKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCiB7
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBlZjVlNWZiOWUxMzY0YWY2NzU3ZTUw
ZjhiOGVmMTcyYmZjMGQ2MTc5Li5hMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUw
YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLAogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsK
ICAgICAKLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBzaGFyZWRCdWZmZXItPmRhdGEoKSArIHBv
c2l0aW9uOworICAgIGF1dG8qIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRp
b247CiAgICAgc2l6ZV90IGFtb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY291bnQsIHNvdXJjZVNp
emUgLSBwb3NpdGlvbik7CiAgICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBhbW91bnQpOwogICAg
IHJldHVybiBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmluZGV4IDNmOGRlMjRlYzE0MjZiYjc3ZDc3
Yjg5N2MxMzRmZmFiOWM2NjA4ZWQuLmExZTViNzMyZmIwYmY0ZTU0MmQ0MWJhOWU4NjlkZjAxZDY1
OWUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBTdHJpbmcg
dHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVRJLCBjCiAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0gewogICAg
ICAgICBbXSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4g
c2l6ZV90IHsKICAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOwotICAgICAgICAgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZl
ciksIGNvdW50KTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSho
YW5kbGUsIGJ1ZmZlciwgY291bnQpOwogICAgICAgICB9LAogICAgICAgICBudWxscHRyCiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2Jh
NGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgy
NmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVu
ZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVk
U2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbUlubGluZSh0
ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBtZW1jcHkobG9jYXRp
b24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGFMZW5ndGgpOworICAgICAg
ICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAK
ICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtLCBidWZm
ZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5
ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgMCwg
JnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPGNoYXI+
IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSh0YWJsZVNpemUpOwog
ICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9y
IGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVy
cHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0YWJsZVNpemUpOwogICAgIGlmIChl
cnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdjNTBkYjgyODQ3ZTZmZjJkNjg1Mjhi
ZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MTcsNyArNDE3LDcg
QEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpw
dXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgbV9lb3Mg
PSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJH
U3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6
ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBzaXplID0gYnVm
ZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBt
X2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggNDQ5ODM3MzY2MWE3ZWIwOTlmYjk4NDU2ZTk0YTQx
ZDg0YWRiMWMxNi4uMTcxMzVhMTQxY2Q2ZmEyY2U2YTg3MmM3NzMxOWU0MzNiMzg3NjAyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmEKIAogdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKLSAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRf
c2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50
OF90Kj4oY2VydGlmaWNhdGUtPmRhdGFBc1VJbnQ4UHRyKCkpLAorICAgIE9wZW5DRE1FcnJvciBl
cnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lz
dGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAg
ICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAgICAgY2FsbGJhY2soIWVycm9yID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgR1NUX0RFQlVHKCJwYXJzaW5nIGJ1ZmZlciBvZiBzaXplICV6
dSIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImJ1ZmZlciIsIGJ1ZmZl
ci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVN
UCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgICAgICBT
dHJpbmdWaWV3IHBheWxvYWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZlci0+
ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nVmlldz4gdHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIjpUeXBlOiIp
LCA2KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
OjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBH
U1RfRVJST1IoIkNETSBlcnJvciIpOwotICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVz
c2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVN
UCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoYWxsZW5nZUNhbGxiYWNrIDogbV9jaGFsbGVuZ2VDYWxsYmFja3Mp
CiAgICAgICAgIGNoYWxsZW5nZUNhbGxiYWNrKCk7CiAgICAgbV9jaGFsbGVuZ2VDYWxsYmFja3Mu
Y2xlYXIoKTsKQEAgLTUwNywxMSArNTA3LDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAg
ICAgbV9pbml0RGF0YSA9IEluaXREYXRhKGluc3RhbmNlLT5rZXlTeXN0ZW0oKSwgV1RGTW92ZShp
bml0RGF0YVNoYXJlZEJ1ZmZlcikpOwogCiAgICAgR1NUX1RSQUNFKCJHb2luZyB0byByZXF1ZXN0
IGEgbmV3IHNlc3Npb24gaWQsIGluaXQgZGF0YSBzaXplICV6dSIsIG1faW5pdERhdGEucGF5bG9h
ZCgpLT5zaXplKCkpOwotICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7
CisgICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRh
KCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogCiAgICAgT3BlbkNETVNlc3Npb24q
IHNlc3Npb24gPSBudWxscHRyOwogICAgIG9wZW5jZG1fY29uc3RydWN0X3Nlc3Npb24oJmluc3Rh
bmNlLT50aHVuZGVyU3lzdGVtKCksIHRodW5kZXJMaWNlbnNlVHlwZShsaWNlbnNlVHlwZSksIGlu
aXREYXRhVHlwZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICBtX2luaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YUFzVUludDhQdHIoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwg
bnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsK
KyAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMs
ICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3Vs
ZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5p
dERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UuaGFzUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVz
c2FnZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2Ui
LCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3Bh
aXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNl
bnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtZXNzYWdl
KSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAg
ICAgICAgfQogICAgIH0pOwotICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1w
dHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2Ut
PmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkpKQorICAgIGlmICghbV9zZXNzaW9u
IHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vz
c2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkpCiAgICAgICAg
IHNlc3Npb25GYWlsdXJlKCk7CiB9CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JRAogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFz
UGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAg
ICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+
c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNz
YWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFL
ZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAg
V1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
aW5kZXggZTg5ZmI1OTk4NjIxNWI5ZDVkYWUxNzlkMmQ3NTljZWY3NDE4MTQ3Ni4uYzg2NGIyYzNh
OGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAt
ODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBi
dWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocG9zaXRpb24pIC0gYnVmZmVy
LmRhdGEoKTsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwb3NpdGlvbikgLSBidWZmZXIuZGF0YSgpOwogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9
IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCBhMDNlNzFhYjFiYzNi
MWNhNTA3Y2YzOGUyNzQxODdiZWMwYTlkMTkxLi40YjhhZTZhMGNkODU0NmRlZjY2Zjc0YjlmNjk3
NjIzYWUyNGQ0MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9USGVh
ZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQKICAgICBvdmVybGF5TGVuZ3RoID0gMDsK
IAogICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gZm9udERhdGEtPnNpemUoKTsKLSAgICBjb25zdCBj
aGFyKiBkYXRhID0gZm9udERhdGEtPmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gZm9udERhdGEt
PmRhdGEoKTsKIAogICAgIEVPVFByZWZpeCogcHJlZml4ID0gZW90SGVhZGVyLnByZWZpeCgpOwog
CkBAIC0zMzQsOCArMzM0LDggQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250
RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQKIAogICAgIC8vIElm
IHBvc3NpYmxlLCBlbnN1cmUgdGhhdCB0aGUgZmFtaWx5IG5hbWUgaXMgYSBwcmVmaXggb2YgdGhl
IGZ1bGwgbmFtZS4KICAgICBpZiAoZnVsbE5hbWVMZW5ndGggPj0gZmFtaWx5TmFtZUxlbmd0aCAm
JiBtZW1jbXAoZmFtaWx5TmFtZSwgZnVsbE5hbWUsIGZhbWlseU5hbWVMZW5ndGgpKSB7Ci0gICAg
ICAgIG92ZXJsYXlTcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmdWxsTmFtZSkg
LSBkYXRhOwotICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZmFtaWx5TmFtZSkgLSBkYXRhOworICAgICAgICBvdmVybGF5U3JjID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZnVsbE5hbWUpIC0gZGF0YTsKKyAgICAgICAgb3ZlcmxheURz
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGZhbWlseU5hbWUpIC0gZGF0YTsK
ICAgICAgICAgb3ZlcmxheUxlbmd0aCA9IGZhbWlseU5hbWVMZW5ndGg7CiAgICAgfQogICAgIGVv
dEhlYWRlci5hcHBlbmRCaWdFbmRpYW5TdHJpbmcoZnVsbE5hbWUsIGZ1bGxOYW1lTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCAwYzBjMTM3MjAzZGYzNmNmNTc1NWYxMmY0OWI5
NTYyMzYyZjI0YzUyLi43MzM2YTIzNTFjYTc4OGViNjg5YTAyZWRkZTMwNzk4MDFjYTJhZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAs
IDApOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBH
RElfRVJST1IpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGEoc2l6ZSk7CisgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwogICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcAppbmRleCA2NzVhMTcyMWQ3NTQ2NjhmMjY2MDM3NjRiOGEwMTQzY2NlMjM3ODgzLi43
YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklG
SW1hZ2VSZWFkZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJ
bWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAogYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVh
ZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewotICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIu
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQorICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVt
b3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgIT0gQVZJ
Rl9SRVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVjZWl2ZWQgPyBtX2RlY29kZXIt
PnNldEZhaWxlZCgpIDogZmFsc2U7CiAKICAgICBpZiAoYXZpZkRlY29kZXJQYXJzZShtX2F2aWZE
ZWNvZGVyLmdldCgpKSAhPSBBVklGX1JFU1VMVF9PSwpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEFW
SUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kYXRhUGFyc2Vk
KSB7Ci0gICAgICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpICE9IEFWSUZfUkVTVUxUX09LKSB7CisgICAgICAgIGlmIChhdmlmRGVjb2RlclNldElP
TWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgIT0g
QVZJRl9SRVNVTFRfT0spIHsKICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0RmFpbGVkKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAK
aW5kZXggODRmMzlkMmE2MjZhYmI0NDcxYzYwM2JmMGY2MGQ1YmY2NTQ5ODk3My4uYzcxN2M0NWQz
MDU3YzA1NTM2ZWU2MDUwZjkzOTcwNDZkMTBkZjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBJQ09JbWFnZURlY29kZXI6OkltYWdlVHlwZSBJQ09J
bWFnZURlY29kZXI6OmltYWdlVHlwZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGNvbnN0IHVp
bnQzMl90IGltYWdlT2Zmc2V0ID0gbV9kaXJFbnRyaWVzW2luZGV4XS5tX2ltYWdlT2Zmc2V0Owog
ICAgIGlmICgoaW1hZ2VPZmZzZXQgPiBtX2RhdGEtPnNpemUoKSkgfHwgKChtX2RhdGEtPnNpemUo
KSAtIGltYWdlT2Zmc2V0KSA8IDQpKQogICAgICAgICByZXR1cm4gVW5rbm93bjsKLSAgICByZXR1
cm4gc3RybmNtcCgmbV9kYXRhLT5kYXRhKClbaW1hZ2VPZmZzZXRdLCAiXHg4OVBORyIsIDQpID8g
Qk1QIDogUE5HOworICAgIHJldHVybiBtZW1jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0
XSwgIlx4ODlQTkciLCA0KSA/IEJNUCA6IFBORzsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCA5YTQ3MGViYWExMWExMjg4NWI2MDNlNTNmZThhODRmMTNjNzYzOWRlLi5j
MTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBi
eXRlc1RvVXNlID0gZGF0YS5zaXplKCkgLSBieXRlc1RvU2tpcDsKICAgICAgICAgbV9yZWFkT2Zm
c2V0ICs9IGJ5dGVzVG9Vc2U7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlclNpemUgPSBtX3JlYWRP
ZmZzZXQ7Ci0gICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1faW5mbywgcmVpbnRlcnBy
ZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpICsgYnl0ZXNU
b1NraXApKSwgYnl0ZXNUb1VzZSk7CisgICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmcsIG1f
aW5mbywgcmVpbnRlcnByZXRfY2FzdDxwbmdfYnl0ZXA+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRh
dGEuZGF0YSgpICsgYnl0ZXNUb1NraXApKSwgYnl0ZXNUb1VzZSk7CiAgICAgICAgIC8vIFdlIGV4
cGxpY2l0bHkgc3BlY2lmeSB0aGUgc3VwZXJjbGFzcyBlbmNvZGVkRGF0YVN0YXR1cygpIGJlY2F1
c2Ugd2UKICAgICAgICAgLy8gbWVyZWx5IHdhbnQgdG8gY2hlY2sgaWYgd2UndmUgbWFuYWdlZCB0
byBzZXQgdGhlIHNpemUsIG5vdAogICAgICAgICAvLyAocmVjdXJzaXZlbHkpIHRyaWdnZXIgYWRk
aXRpb25hbCBkZWNvZGluZyBpZiB3ZSBoYXZlbid0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggYmEzNTVmMGNlZmFiNTdkMjM3ODFlMWJiNmVmMTczNzE1YjFhMzk4NS4uMDJm
MWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVy
OjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8v
IFdoZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERhdGEo
KSBmcm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhlIFdl
YlBEZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSwg
c28gd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7Ci0gICAgV2ViUERhdGEgaW5wdXRE
YXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWREYXRhLT5k
YXRhKCkpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKKyAgICBXZWJQRGF0YSBpbnB1dERhdGEg
PSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAg
V2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0g
V2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKICAgICBpZiAoIWRl
bXV4ZXIpIHsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OnBhcnNl
SGVhZGVyKCkKICAgICBpZiAobV9kYXRhLT5zaXplKCkgPCB3ZWJwSGVhZGVyU2l6ZSkKICAgICAg
ICAgcmV0dXJuOyAvLyBBd2FpdCBWUDhYIGhlYWRlciBzbyBXZWJQRGVtdXhQYXJ0aWFsIHN1Y2Nl
ZWRzLgogCi0gICAgV2ViUERhdGEgaW5wdXREYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpIH07CisgICAgV2ViUERh
dGEgaW5wdXREYXRhID0geyBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkgfTsKICAgICBX
ZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBX
ZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwogICAgIGlmICghZGVt
dXhlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA2MDM3NWRlNWJjZGNiNDc2YWUwZWY0
MTc1Y2U3MWIxZTFkNjE1NWZmLi4wNTQ0MjhkNTBkYzYxYWFhZDUxODg3OWQyMmNiYzJmOTc3OTE1
MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNsb3NlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaAppbmRl
eCA5ZjZkZDgwZjI1YTFlMDY3NTVkYTFhYzk4N2VhZTg4OWRmOWYyNzQyLi5kZDA1ZWYwZmJkM2U3
MzA5NzQzNTA1YWNjYzAxMDE0ZWY0ZDljNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpID0gMDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCmluZGV4IDQxMjQ3ZjY4NGY3
NjA5MGE2ZDJiZTI1MGE1NTg4NjRjY2YwNDIxNTcuLmM5YzkzYmE2MDExOGY5MTlkMTE2MDI5MzJk
YWU4M2Q3OTk0NjdmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNl
Q29ubmVjdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgUlRDRGF0YUNo
YW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBj
aGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcihSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoUlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyLCBzaXplX3QpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAppbmRl
eCBkMDMwMDUzNmVkOTMwZmJmOWMyMDJiYjk3MjYxMGQ0YzVmODlhOGM0Li45M2JkOTYyZDRkZWFk
NDAzOWU1ZDAxNTQ3YjU1ODIwOGQ5ZWVlYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKQEAgLTU0
LDcgKzU0LDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kU3RyaW5nRGF0
YShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlUmF3RGF0YShkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgK
aW5kZXggNGE1MTA5MmJjNDFmMmNmOWY3ZjNkMDRmMjc3YTc1YzI5NGUxY2FhNS4uZTA3MGJkYjEz
ZTg3MjU4N2M1M2UwNGY0OTYxN2ZlZDU1OWEwYTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgZmluYWw7CiAK
ICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBmaW5hbDsKLSAgICBib29s
IHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIGJvb2wgc2VuZFJh
d0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZp
bmFsOwogCiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxw
dHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCmluZGV4IGQyZWViZGVkOTVkZTc1Y2MwOTQ1OWUzYjFiMDYxOTZkYjZlNjEz
ZmIuLjMyZGQ4YzA4ZTIxOTA2ZjRhMmQ4ZjJhOGMzMGM3ZWE1YWE5NTI2NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApA
QCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyBib29sIHdyaXRlRmlsZVBhdGhzT3JEYXRhQnVmZmVy
c1RvRmlsZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVGhyCiAgICAgZm9yIChhdXRv
JiBwYXJ0IDogZmlsZVBhdGhzT3JEYXRhQnVmZmVycykgewogICAgICAgICBpZiAocGFydC5zZWNv
bmQuZGF0YSgpKSB7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gcGFydC5zZWNvbmQuZGF0YSgp
LT5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFydC5zZWNvbmQuZGF0YSgpLT5kYXRhKCkp
LCBsZW5ndGgpICE9IGxlbmd0aCkgeworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsIHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpLCBsZW5ndGgpICE9IGxlbmd0
aCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHdyaXRpbmcgYSBCbG9iIHRv
IHRlbXBvcmFyeSBmaWxlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCBiNzdmOTAwNzgxOWZmZWMyOTViNjA1Mjk0OGFlOTk0ZGFlMjQ2MWRmLi4zZTc0YTZhMDRl
ZjA1YTc5ZDJjYjE0MWFhOGMzYWVkZmQyZjQzMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNzcsNyArNzcsNyBAQCBSZWY8Rm9ybURhdGE+
IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+JiB2ZWN0b3IpCiAgICAgcmV0dXJu
IGNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKIH0KIAotUmVmPEZvcm1EYXRh
PiBGb3JtRGF0YTo6Y3JlYXRlKFZlY3RvcjxjaGFyPiYmIHZlY3RvcikKK1JlZjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiB7CiAgICAgYXV0byBk
YXRhID0gY3JlYXRlKCk7CiAgICAgZGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoV1RGTW92ZSh2ZWN0
b3IpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB1bnNpZ25lZCBGb3JtRGF0YTo6aW1hZ2VPck1lZGlh
RmlsZXNDb3VudCgpIGNvbnN0CiB1aW50NjRfdCBGb3JtRGF0YUVsZW1lbnQ6Omxlbmd0aEluQnl0
ZXMoY29uc3QgRnVuY3Rpb248dWludDY0X3QoY29uc3QgVVJMJik+JiBibG9iU2l6ZSkgY29uc3QK
IHsKICAgICByZXR1cm4gc3dpdGNoT24oZGF0YSwKLSAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjxj
aGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgW10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMp
IHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZXMuc2l6ZSgp
KTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
JiBmaWxlRGF0YSkgewogICAgICAgICAgICAgaWYgKGZpbGVEYXRhLmZpbGVMZW5ndGggIT0gQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB1aW50NjRfdCBGb3Jt
RGF0YUVsZW1lbnQ6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogRm9ybURhdGFFbGVtZW50IEZvcm1E
YXRhRWxlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3dpdGNoT24o
ZGF0YSwKLSAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAg
W10gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHJldHVybiBG
b3JtRGF0YUVsZW1lbnQoVmVjdG9yIHsgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkgfSk7CiAg
ICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmls
ZURhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoZmlsZURhdGEuaXNv
bGF0ZWRDb3B5KCkpOwpAQCAtMTc4LDEyICsxNzgsMTIgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2xlbmd0aEluQnl0
ZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtX2VsZW1lbnRzLmlzRW1wdHkoKSkgewotICAg
ICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihtX2VsZW1l
bnRzLmxhc3QoKS5kYXRhKSkgewotICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgICAgICBpZiAoYXV0byogdmVj
dG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PihtX2VsZW1lbnRzLmxhc3QoKS5kYXRh
KSkgeworICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
LSAgICBtX2VsZW1lbnRzLmFwcGVuZChWZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgc2l6ZSB9KTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChWZWN0b3IgeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSk7CiB9CiAKIHZvaWQgRm9ybURh
dGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKQEAgLTI4NCwxMiArMjg0LDEy
IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZE5vbk11bHRpUGFydEtleVZhbHVlUGFpckl0ZW1zKGNv
bnN0IERPTUZvcm1EYXRhJiBmb3JtRGF0YSwKICAgICBhcHBlbmREYXRhKGVuY29kZWREYXRhLmRh
dGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKIH0KIAotVmVjdG9yPGNoYXI+IEZvcm1EYXRhOjpm
bGF0dGVuKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGb3JtRGF0YTo6ZmxhdHRlbigpIGNvbnN0
CiB7CiAgICAgLy8gQ29uY2F0ZW5hdGUgYWxsIHRoZSBieXRlIGFycmF5cywgYnV0IG9taXQgYW55
IGZpbGVzLgotICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4oZWxlbWVudC5kYXRhKSkKKyAg
ICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHZlY3Rvci0+ZGF0YSgpLCB2ZWN0
b3ItPnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiBkYXRhOwpAQCAtMjk4LDcgKzI5OCw3IEBA
IFZlY3RvcjxjaGFyPiBGb3JtRGF0YTo6ZmxhdHRlbigpIGNvbnN0CiBTdHJpbmcgRm9ybURhdGE6
OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiB7CiAgICAgYXV0byBieXRlcyA9IGZsYXR0ZW4oKTsK
LSAgICByZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gTGF0aW4x
RW5jb2RpbmcoKS5kZWNvZGUoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogfQogCiBzdGF0
aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5
LCBGb3JtRGF0YSYgZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMzQ3LDcgKzM0Nyw3IEBA
IFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0
cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsCiAKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2Vs
ZW1lbnRzKSB7CiAgICAgICAgIHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICAgICAgWyZdIChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFw
cGVuZERhdGEoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZd
IChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKICAg
ICAgICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGZpbGVEYXRhLmZpbGVu
YW1lLCBmaWxlRGF0YS5maWxlU3RhcnQsIGZpbGVEYXRhLmZpbGVMZW5ndGgsIGZpbGVEYXRhLmV4
cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHVpbnQ2NF90
IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
cm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVj
dG9yPGNoYXI+PihlbGVtZW50LmRhdGEpKQorICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDhm
MjIxMDJmYmMzYWYyYTBhMDdhOGNhNWMyOTExZTEwNWJiZGM2NGQuLjViZmY2NWE2MzZjMzE3NTUy
OWUyNGRjMTM2NTEwOGNmMmI2YWY3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmgKQEAgLTM4LDEyICszOCwxMiBAQCBjbGFzcyBUZXh0RW5jb2Rpbmc7CiBz
dHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRhOwogICAg
IHN0cnVjdCBFbmNvZGVkQmxvYkRhdGE7Ci0gICAgdXNpbmcgRGF0YSA9IFZhcmlhbnQ8VmVjdG9y
PGNoYXI+LCBFbmNvZGVkRmlsZURhdGEsIEVuY29kZWRCbG9iRGF0YT47CisgICAgdXNpbmcgRGF0
YSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBFbmNvZGVkRmlsZURhdGEsIEVuY29kZWRCbG9i
RGF0YT47CiAKICAgICBGb3JtRGF0YUVsZW1lbnQoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQg
Rm9ybURhdGFFbGVtZW50KERhdGEmJiBkYXRhKQogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRh
KSkgeyB9Ci0gICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFyPiYmIGFycmF5
KQorICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8dWludDhfdD4mJiBhcnJheSkK
ICAgICAgICAgOiBkYXRhKFdURk1vdmUoYXJyYXkpKSB7IH0KICAgICBGb3JtRGF0YUVsZW1lbnQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0X3QgZmlsZUxl
bmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZSkKICAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxlRGF0YSB7IGZpbGVuYW1lLCBmaWxlU3RhcnQs
IGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfSkgeyB9CkBAIC0xOTMs
NyArMTkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9ybURh
dGE+IGNyZWF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNy
ZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwotICAgIHN0YXRpYyBSZWY8Rm9ybURh
dGE+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJik7CisgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShj
b25zdCBET01Gb3JtRGF0YSYsIEVuY29kaW5nVHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRGaWxl
UmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
bGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPGNoYXI+IGZsYXR0ZW4oKSBjb25zdDsgLy8g
b21pdHMgZmlsZXMKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZmxhdHRlbigp
IGNvbnN0OyAvLyBvbWl0cyBmaWxlcwogICAgIFN0cmluZyBmbGF0dGVuVG9TdHJpbmcoKSBjb25z
dDsgLy8gb21pdHMgZmlsZXMKIAogICAgIC8vIFJlc29sdmUgYWxsIGJsb2IgcmVmZXJlbmNlcyBz
byB3ZSBvbmx5IGhhdmUgZmlsZSBhbmQgZGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBmYmEwMjMzYmVm
YTJjZDRjMTYxNGY3MDU2YjRiMDc1Mzc5MzFlY2VmLi5iNjMzN2Q1NmNlOGNkOWJlZmY5ZGZiZTEx
MzY2MmJjNzc1NmI2NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVz
VG9CZVNlbnQqLykgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3Ro
Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3Vy
Y2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDQ2MDMxNTk0ZDNhZDU1ZTYyNzQ3MDliZTg2YzUyNWUyOWVjMmVjZjcuLjRjMDQyMTBjNWE1MTNh
YzNmNTQ3MTQ2ZDlmODVjODJiZDg4MTM3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCkBAIC03
MSw5ICs3MSw5IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBtX2RhdGEuYXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworICAgIG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDg4MTAzOGM4N2QxYmM5ZjQx
NmJhMTE2MzVlM2I0MTQ1YzhkODgwYTkuLjY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJhMWY1NGYwOWQw
YjY3ZThhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
c3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
aW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5j
b2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcAppbmRleCBhNmYyYjczYzE3ZGZjZjg2Mjg0YzhjNWRlNTYyMDZhOWE1MDg3NGNkLi5m
NmIyYTE4NTc5MmI5OGUyNDhkMTVmMDc2MDhkNmRiY2M4NzBlZjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7CiAgICAg
VmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gcmVtYWluaW5nRWxlbWVudHM7IC8vIGluIHJldmVyc2Ug
b3JkZXIKICAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBjdXJyZW50U3RyZWFtOwogICAg
IGxvbmcgbG9uZyBjdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggeyBCbG9iRGF0YUl0ZW06OnRvRW5k
T2ZGaWxlIH07Ci0gICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9jPiBjdXJyZW50
RGF0YTsKKyAgICBNYWxsb2NQdHI8dWludDhfdCwgV1RGOjpWZWN0b3JNYWxsb2M+IGN1cnJlbnRE
YXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFtIHsgbnVsbHB0ciB9OwogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGggeyAwIH07CiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCB7IDAgfTsKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHN0YXRpYyBib29sIGFk
dmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgRm9ybURhdGFF
bGVtZW50JiBuZXh0SW5wdXQgPSBmb3JtLT5yZW1haW5pbmdFbGVtZW50cy5sYXN0KCk7CiAKICAg
ICBib29sIHN1Y2Nlc3MgPSBzd2l0Y2hPbihuZXh0SW5wdXQuZGF0YSwKLSAgICAgICAgW2Zvcm1d
IChWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgIFtmb3JtXSAoVmVjdG9yPHVpbnQ4X3Q+
JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBieXRlcy5zaXplKCk7Ci0gICAg
ICAgICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+IGRhdGEgPSBieXRlcy5y
ZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRD
RihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGRhdGEuZ2V0KCkpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAg
ICAgICAgICBNYWxsb2NQdHI8dWludDhfdCwgV1RGOjpWZWN0b3JNYWxsb2M+IGRhdGEgPSBieXRl
cy5yZWxlYXNlQnVmZmVyKCk7CisgICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRv
cHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwgZGF0YS5nZXQoKSwgc2l6
ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBX
VEZNb3ZlKGRhdGEpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sIFtmb3Jt
XSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBA
IC0zOTUsOCArMzk1LDggQEAgdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVm
IHJlcXVlc3QsIEZvcm1EYXRhKiBmb3JtRGF0YSkKICAgICAvLyBIYW5kbGUgdGhlIGNvbW1vbiBz
cGVjaWFsIGNhc2Ugb2Ygb25lIHBpZWNlIG9mIGZvcm0gZGF0YSwgd2l0aCBubyBmaWxlcy4KICAg
ICBhdXRvJiBlbGVtZW50cyA9IGZvcm1EYXRhLT5lbGVtZW50cygpOwogICAgIGlmIChlbGVtZW50
cy5zaXplKCkgPT0gMSAmJiAhZm9ybURhdGEtPmFsd2F5c1N0cmVhbSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KGVsZW1lbnRzWzBdLmRh
dGEpKSB7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odmVjdG9yLT5kYXRhKCkpLCB2ZWN0
b3ItPnNpemUoKSkpOworICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVj
dG9yPHVpbnQ4X3Q+PihlbGVtZW50c1swXS5kYXRhKSkgeworICAgICAgICAgICAgYXV0byBkYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgdmVjdG9yLT5kYXRhKCksIHZlY3Rvci0+
c2l6ZSgpKSk7CiAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHkocmVx
dWVzdCwgZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCA0MjE5YmI1M2MyMDU2OTc1M2IwYjE5MmMzYjkz
ZjFkNWFmN2RlZTU2Li45YmU1ODY4MmNhYzMzYmJhYWE5ZTE4NmQyYTM0YzQ2NDBiNDE1YzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yMzYsNyArMjM2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBm
aW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKaW5kZXggOWQwMDU1ODFhZGVjMGNjNGM2NThkOGNlZTc0ZmFiNWQwYTcyZDZiNi4u
MDU3NmVkODgxMjQxMDgyMjQ0NzZjYjZiYjc1NThmOTVjOWM3ODVlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdl
YkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJs
ZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5z
aWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxv
bmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5
Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3Bv
bnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOihjb25zdCBjaGFyKilkYXRhIGxlbmd0aDooaW50KWxlbmd0aDsKKy0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCB1aW50OF90KilkYXRhIGxlbmd0aDooaW50KWxl
bmd0aDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGRj
YWFiNzA1MWNkYzIyYzk5MTlhMzU5Y2ZmYWU2ODFmN2MxY2EzNGYuLmE2ZjcxYWY0MjBkZjhkYmQz
Y2QyZTM0ZmMwMjc4ZDQ2MGFkOGIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTU3
MCw3ICs1NzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
Zykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhf
dCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CkBAIC02MTQsNyArNjE0LDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAg
ICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpy
ZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9j
ayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtODczLDcgKzg3Myw3IEBAIC0gKEJPT0wpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZToo
Y29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCBjaGFyKilk
YXRhIGxlbmd0aDooaW50KWxlbmd0aAorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IHVpbnQ4X3QqKWRhdGEgbGVuZ3Ro
OihpbnQpbGVuZ3RoCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8
IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhIGxlbmd0aDpsZW5ndGhd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IGU1NjRhMGNlNjY2
MTRhNDlhMTAzMTM2ODg1MWM0ZGE4ODIzNTJhNjEuLmEzMDljMjU4Y2Q5ZjExMmQzYmJjZTZjYWE3
MTQ4MTgzNmExZmIwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApA
QCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxE
aWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNl
bGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5h
Z2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRS
ZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
YnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCAwNWQxNzcxNzc1MWUwMGE1MmE2YTA1ZWIwMDZmN2I0
YzE3ZjFkNGJiLi5lYmNkYjJlMGRkOWI0MjgwZjI1MTU3M2RiYTZiNWJkMDZkZmZkNWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRlY29kZShjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3IpIGNv
bnN0OwogICAgIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpIGNvbnN0
OworICAgIFN0cmluZyBkZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBsZW5ndGgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZShT
dHJpbmdWaWV3LCBVbmVuY29kYWJsZUhhbmRsaW5nLCBORkNOb3JtYWxpemUgPSBORkNOb3JtYWxp
emU6OlllcykgY29uc3Q7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmco
U3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGVuY29kZShzdHJpbmcsIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcywgTkZDTm9ybWFsaXplOjpObyk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cAppbmRleCA2MjkxYjY0MjQ2NGYyNzViNDUzYmNjOWU0MGUxYzlmYzUwOTlhOTYwLi44OWNmNmEw
YmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigp
OwogCiAgICAgaWYgKGJ5dGVzVG9SZWFkICE9IElOVkFMSURfRklMRV9TSVpFIHx8IGxhc3RFcnJv
ciA9PSBOT19FUlJPUikgewotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFk
KTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAg
IERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZl
ci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBi
eXRlc1JlYWQpCiAgICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwCmluZGV4IDFmMzNhM2I2MTNjYjAzZWI1ODNlODU5NGJhYTAyOTI0MGJmOGFiYWEuLjhl
YTQ0ZGNmMjU2YWIwMDQzMTI5MGNiNGU2NTUxYjgzNjMyYzU5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgIFNWR1RvT1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250RWxlbWVudCYpOwog
ICAgIGJvb2wgY29udmVydFNWR1RvT1RGRm9udCgpOwogCi0gICAgVmVjdG9yPGNoYXI+IHJlbGVh
c2VSZXN1bHQoKQorICAgIFZlY3Rvcjx1aW50OF90PiByZWxlYXNlUmVzdWx0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcmVzdWx0KTsKICAgICB9CkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8R2x5cGhEYXRhPiBtX2dseXBoczsKICAgICBIYXNoTWFw
PFN0cmluZywgR2x5cGg+IG1fZ2x5cGhOYW1lVG9JbmRleE1hcDsgLy8gU1ZHIDEuMTogIkl0IGlz
IHJlY29tbWVuZGVkIHRoYXQgZ2x5cGggbmFtZXMgYmUgdW5pcXVlIHdpdGhpbiBhIGZvbnQuIgog
ICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8R2x5cGgsIDE+PiBtX2NvZGVwb2ludHNUb0luZGlj
ZXNNYXA7Ci0gICAgVmVjdG9yPGNoYXI+IG1fcmVzdWx0OworICAgIFZlY3Rvcjx1aW50OF90PiBt
X3Jlc3VsdDsKICAgICBWZWN0b3I8Y2hhciwgMTc+IG1fZW1wdHlHbHlwaENoYXJTdHJpbmc7CiAg
ICAgRmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAgICAgY29uc3QgU1ZHRm9udEVsZW1lbnQmIG1f
Zm9udEVsZW1lbnQ7CkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBib29sIFNWR1RvT1RGRm9udENvbnZl
cnRlcjo6Y29udmVydFNWR1RvT1RGRm9udCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8VmVjdG9yPGNoYXI+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRF
bGVtZW50JiBlbGVtZW50KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRT
VkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgU1ZHVG9P
VEZGb250Q29udmVydGVyIGNvbnZlcnRlcihlbGVtZW50KTsKICAgICBpZiAoY29udmVydGVyLmVy
cm9yKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAppbmRl
eCA4NzUxOTEzNGI3MjY4NjNkMDljZDEzY2MyODdhYmMzODU1MmE0YTYyLi44OGQ3MjcyNjgxODY2
NzhiNmZlNmY4ZTZiYjJiYzQwMGMxYzdkMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmgKQEAgLTMxLDYgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTVkdGb250RWxlbWVudDsKIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+
IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRFbGVt
ZW50Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDAwOTRmNDdkNDY0MDFkNTlhY2I4NWY3NjU0M2RhNjJkNzM4
YzBmZTYuLmVjYjZiYWUxNjg5NTYxNjdmNjFmYWYzZGNhMjkzNjQ2Y2RjYWQ0ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIEVu
Y29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9j
dW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCiAg
ICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5zZXRNSU1FVHlw
ZSgiaW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50Ci0g
ICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRh
dGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUoKSk7CisgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YUFzQ2hhclB0cigpLCBk
YXRhKCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAKaW5kZXggMmM5M2NlYzI0ODM0NzBkOTAzNTRlMjRmNGJiMjg2MmI0
NzIwNTY0My4uZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZiNTliZWJhNThhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTEwMCw3ICsx
MDAsNyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6
OkFmdGVyUmVzcG9uc2UpOwogfQogCi12b2lkIE1vY2tDb250ZW50RmlsdGVyOjphZGREYXRhKGNv
bnN0IGNoYXIqLCBpbnQpCit2b2lkIE1vY2tDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVp
bnQ4X3QqLCBpbnQpCiB7CiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6
QWZ0ZXJBZGREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuaAppbmRleCA4NTQ1ZjE5OWE2NGQyNmRhMmM1NGEwNTM3ZGEwNzU5MTI1OGQ1MjVlLi40MTFh
MzAwOTQ3YjUzOWUyNmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggYTFmOTQ3
ZWI4NzEyMWQ5Y2MwMDdkNzIzN2IwY2Q3ZTEyODI0MGMyNi4uZmFiYmQwM2ViMGFkYzEyMDRlMTA0
MWExMDhlMDViNzZlNDU0NTUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VSZXNwCiAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiB9CiAKLXZvaWQgV29y
a2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKK3ZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9lcnJvck9j
Y3VycmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiZjk0ZmQ0OGNhYjE0YmQ1MzQ4OTIxN2YyMDRiZjIz
YTg2MDRjNWU4Li4xNWM0NTEzODAwNTA0YWIwM2Q0OTE3OWJiNTRlODIwMGUyZDQ5OThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCmluZGV4IGZiMDcyY2MxOGM5MWZlMTEwZTRhZGVlYTgzMzI4OWMyODNiYjZk
ZGUuLmQ3YzFhYjI2ZGMxZGUyMzIzN2RiNDNlOThjMTIzNTQzZDAxOTY2NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTE5Nyw3ICsxOTcs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzbwogICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit2b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw3ICsy
MTMsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChsZW4gPT0g
LTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihkYXRhKTsKKyAgICAgICAgbGVuID0gc3RybGVuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAogICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGQzMzdjNTAzNmRhYzBmNjc1YTFjOTIzZDhk
ZTY0M2ZmMTM1MzNjYjguLjhkMWFhMWJiMTkxODVkNGY3OWJiNmZhZDRlOWU3NDE4MjNkNmYwNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzcs
NyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggOGY3NjBk
NjJmN2RiMDA3ZTVjNGFiZWQzOGFhMDhjYmVmZTAxNjUxMy4uYjJlOTE3NWE3MGU2NDA3NTE4NjZj
NGY0YWRlZWI5MWI3MjM1ZTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtODgsNyArODgsNyBA
QCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYQogCiAgICAgYXV0byBpdGVyYXRlT3ZlckJ1ZmZlckFu
ZFdyaXRlRGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYgd3JpdGVEYXRhKSB7CiAgICAgICAgIGZvciAoYXV0byBpdCA9IHNjcmlwdC5idWZmZXIo
KS0+YmVnaW4oKTsgaXQgIT0gc2NyaXB0LmJ1ZmZlcigpLT5lbmQoKTsgKytpdCkKLSAgICAgICAg
ICAgIHdyaXRlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpdC0+c2VnbWVu
dC0+ZGF0YSgpKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgICAgICB3cml0ZURhdGEo
aXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CiAgICAgfTsKIAogICAg
IGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmcoc2NyaXB0LmJ1ZmZlcigpLT5zaXplKCkpKSB7CkBA
IC05OCw3ICs5OCw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhCiAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRh
KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKSwgc2l6ZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5k
bGUsIGRhdGEsIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwog
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCmluZGV4IDc3MDRmZTgxMzUwNjE2NTA5YTI4MTcxMzIyZDllYWVhMzBl
NzVmNzMuLmVjZjBhNDliMzAxZGNmOTE4M2MxZWFmOTg1MDA2MDA5MGE0NDBmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmPFRl
eHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QK
ICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVU
Ri04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobGVuID09IC0xKQotICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisgICAgICAg
IGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAg
ICBpZiAodXNlRGVjb2RlcikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApp
bmRleCBjMTg1N2M5MDUxNWY2YmU3NzcwYmMwNGM5NTY0MzQyMzZhYjc0NGE4Li42M2Q1YjI0MDI4
ZWRkN2MyOWVlNzViNjQwNzhhZjk2M2I0MmIzODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDU3ZWU1ZGVkMjRiZGEyNzVlNTg2YmRmNjEz
MmE1MjQ1NWFiYWNjOTYuLmRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTM1
LDcgKzEzNSw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFy
KiB1cmksCiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3BlY2lmeSBhbiBlbmNvZGluZyBoZXJlLiBO
ZWl0aGVyIEdlY2tvIG5vciBXaW5JRSByZXNwZWN0cwogICAgICAgICAvLyB0aGUgZW5jb2Rpbmcg
c3BlY2lmaWVkIGluIHRoZSBIVFRQIGhlYWRlcnMuCi0gICAgICAgIHhtbERvY1B0ciBkb2MgPSB4
bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyLCBkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0aW9ucyk7CisgICAgICAgIHhtbERv
Y1B0ciBkb2MgPSB4bWxSZWFkTWVtb3J5KGRhdGEgPyBkYXRhLT5kYXRhQXNDaGFyUHRyKCkgOiBu
dWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgKGNvbnN0IGNoYXIqKXVyaSwgMCwgb3B0
aW9ucyk7CiAKICAgICAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYygwLCAwKTsKICAgICAg
ICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYygwLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAxZDhkYWRi
ZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5NzhmLi5hNTRkYzI4OTk4MjA4ODM2NmFlNzdj
MDZiNDFlNTQ1YjljYjBlNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNTksOSArMzU5LDggQEAgc3Rh
dGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciopCiBjbGFzcyBPZmZzZXRCdWZmZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE9mZnNldEJ1ZmZlcihWZWN0
b3I8Y2hhcj4gYnVmZmVyKQorICAgIE9mZnNldEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBidWZm
ZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQotICAgICAgICAsIG1fY3Vy
cmVudE9mZnNldCgwKQogICAgIHsKICAgICB9CiAKQEAgLTM3Nyw4ICszNzYsOCBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKLSAgICB1bnNp
Z25lZCBtX2N1cnJlbnRPZmZzZXQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOworICAg
IHVuc2lnbmVkIG1fY3VycmVudE9mZnNldCB7IDAgfTsKIH07CiAKIHN0YXRpYyBib29sIGV4dGVy
bmFsRW50aXR5TWltZVR5cGVBbGxvd2VkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCmluZGV4IGQzZTYxNjFiZDJiZGNmOGVhZjMwMTA3YzUzNmJlZDRiMjdlMDlj
MDguLjIwODczNzM5ZTA1MzRkZGE2YTQ4MjIyNDE0YWFjNzE2NDY0MDhkNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9j
bGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRh
dGEsIGludDY0X3QgbGVuZ3RoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50NjRfdCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fY2xp
ZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBsZW5ndGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmgKaW5kZXggNTI5YjY3ZDE3NzgwOTM0ZTgzNTljMDAwYTQxMzZhZTk5MDUwMjY0Yy4u
OWI0MDcwMWNmNTMyOTg5NWU0MWI4NDM0ZjAxNWY2OTlkNDBkMzkwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludDY0X3QpOworICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKGNvbnN0IHVpbnQ4X3QqLCBpbnQ2NF90KTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2Fk
RmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5p
c2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuY3BwCmluZGV4IGZlYzY1Y2Y2MmI2Njc0YjgzMDBjNTBjZDQzMzQxNWU5MTUxMTQ0MDAu
LjEzZjE3NGU0OTMxMDAxZmViYWVjYTZhY2MxZGVkOTFkMWUzMThjYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyOjpkYXRhUmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbgog
ICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFkeSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIHJlc291cmNlLT5kYXRhUmVjZWl2
ZWQoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCAzN2IyNTRiOTBlMDQxZTdlMDIzMjY2NTNkMDljZjAy
Y2FhYWQ0ZGU5Li4xYzA4NmNhMGQwNmU4OTEyNDQxNjIyNjEwZTA3ZGU5MjhlODI5YjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTcwLDcgKzU3MCw3IEBAIFN0b3JhZ2U6OlJl
Y29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1h
dGlvbiwgY29uc3QKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNv
bnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KICAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBib2R5ID0geyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpIH07CisgICAg
ICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4
IGZmYTkxMDRjZDVjZDYxYWYxNmQ0Y2MwODIyYTA3ZDczMmIyMGYwMTYuLjhhNTlhMzU2NmQ0NmVl
MzMyNWU1NzFhOGFlN2RkOTcwOWM0MTRhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDIsNyAr
MTAyLDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBj
b25zdAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKICAgICBEYXRhIGJvZHk7CiAgICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0g
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9i
dWZmZXItPnNpemUoKSB9OworICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRl
ciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcAppbmRleCAz
YmYxNjYzNTE0OGI0ZmM0MTA0ZGU3ZTEwYTVmMzZhOTMwNTBkNWExLi5mYTc2YWM3NjJlYWRhYTA3
YjE0Mzc1OGE1NTJjYWIwYmNiYTM0OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5j
cHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQs
IGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSYgcXVldWUsIEZ1bmN0aW8KIHsKICAgICBxdWV1
ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvZmZzZXQs
IGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsK
ICAgICAgICAgRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlRGVzY3JpcHRvciwgb2Zmc2V0LCBG
aWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKLSAgICAgICAgaW50IGVyciA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZURlc2NyaXB0b3IsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgICAgICBpbnQg
ZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlRGVzY3JpcHRvciwgZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZXJyID0gZXJyIDwgMCA/IGVyciA6IDA7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAppbmRleCA3
NjFjMDVjZjZkNmU2OTJmMjcxNmZhYzZjMzRjZGM5MzYxZThjNThjLi44MGJhYzRiMjg5YzBiNTc0
MTEzMTg0NWE1ZDMwNmU2YWY4ZjgyZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTE5NCw3ICsxOTQs
NyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1
ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBDU3Ry
aW5nIG1fc25pZmZlZENvbnRlbnRUeXBlOwotICAgIFZlY3RvcjxjaGFyPiBtX3JlYWRCdWZmZXI7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVhZEJ1ZmZlcjsKICAgICB1aW50NjRfdCBtX2JvZHlE
YXRhVG90YWxCeXRlc1NlbnQgeyAwIH07CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9kb3dubG9hZERl
c3RpbmF0aW9uRmlsZTsKICAgICBHUmVmUHRyPEdGaWxlPiBtX2Rvd25sb2FkSW50ZXJtZWRpYXRl
RmlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKaW5kZXggODM0NmUzOWU4N2E0ZDA1ODI1M2ZlY2VhNjcxYzEzMmU0NzY5ZTFiOS4uZGY4ZWUz
MGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBp
ZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQg
OiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpKSwgc2Vn
bWVudC5zZWdtZW50LT5zaXplKCksIDEpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCks
IDEpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IGMzZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAy
MGVhMDFhZDIxYTcuLjdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCi0gICAg
Y29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRh
dGEoKSA6IG51bGxwdHI7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlz
RW1wdHkoKSA6IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA0YjIwYzg1YWM1MzYyMzY0MDNhODNl
YTk3M2NkY2NkMTBmZGY3MmY2Li5jYmQwNGQ5OWI3YzI3MTY3MWM4NzUyYjE4YTkyZTQyMTU4NTZj
OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFN0CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAg
IG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4t
PnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJgogICAgIGlmIChtX3BsdWdpbkNhbmNlbGVkTWFudWFsU3RyZWFtTG9hZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwor
ICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFt
RGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNz
aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IGRh
ODIwNDY0ZjkzYzYwNGNlODY5NzliNjVkNmFlNjc2ZjFmYzAwYjIuLmJmZjFkMTdmYTZhNzNkOWU5
ZGMwODBlYzk1MTlhNmQzY2NjMDQ4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5o
CkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBIVFRQQm9keSB7CiAgICAgICAgIFR5cGUgdHlwZSA9
IFR5cGU6OkRhdGE7CiAKICAgICAgICAgLy8gRGF0YS4KLSAgICAgICAgVmVjdG9yPGNoYXI+IGRh
dGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogCiAgICAgICAgIC8vIEZpbGUuCiAg
ICAgICAgIFN0cmluZyBmaWxlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGYwYzhlZWY1M2QzNTk3ZTBlYThhMTFkYjEwMWVhOTQ2
MDE0MTllMTcuLjA4Nzg4YzgyZjJhMzY2NmJkMTU1ZGZjM2U0NTZiMGJiZTUxMDJlNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQ0
LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAvLyBvdmVyIHRoZSBJUEMuIENv
bm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJ
UEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiAqYnVmZmVyKQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSks
IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6
ZSgpLCAxKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGF1
dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIp
OwpAQCAtMzA2MSw3ICszMDYxLDcgQEAgc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXAKICAgICAgICAg
cmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCiAgICAgYXV0byYgc2VnbWVu
dCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKS0+c2VnbWVudDsKLSAgICBhdXRvIHNoYXJlZE1l
bW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0PGNoYXIqPihzZWdtZW50LT5k
YXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0
X2Nhc3Q8dWludDhfdCo+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHsgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKaW5kZXggZmZlZTA2MTE0NjBiYzFlZGJhZGFhZGE3OWQ4ZGVmODZkZjI5OTQ3Zi4uNWExODBi
ZWVkMTJmNWNkY2RmYmFlNjcwMmU2OTNiOWVhNmUwYTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIH0KIHRlbXBsYXRlPD4gdm9p
ZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rp
b248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGZ1bmN0aW9uKQogewotICAgIGZ1bmN0
aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpOworICAgIGZ1bmN0aW9uKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBDb250ZW50UnVsZUxp
c3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGkKICAgICBpZiAoZmlsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAg
ICByZXR1cm47CiAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEgaW52YWxpZEhlYWRlciA9IHsw
LCAwLCAwLCAwLCAwLCAwfTsKLSAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IHdyaXRlVG9GaWxlKGZp
bGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZpbnZhbGlkSGVhZGVyKSwgc2l6ZW9m
KGludmFsaWRIZWFkZXIpKTsKKyAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IHdyaXRlVG9GaWxlKGZp
bGUsICZpbnZhbGlkSGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIEFTU0VSVF9V
TlVTRUQoYnl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9mKGludmFsaWRIZWFkZXIp
KTsKICAgICBjbG9zZUZpbGUoZmlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGU3MzU3ZDExMjUwZDYwZWM4YzgzOGE4NzA4MTcwZTFm
MmM2OGY1ZGQuLjFlMTQ5Y2YyMzcwYTcxMTUxNjk5NTRhNjViOWJjOWUyOGI3Nzk4NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMjEsNyAr
MjIxLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAg
ICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKaW5kZXggZjJlZGM1Y2Y4N2Jl
YWVjZWI4NWZlYjZjM2UzYzljZTUxODI1YWM2OS4uNzA4YmIyOWY4ZjczZDZlZDdmY2Y2NzM5MGM1
ODJjMWZlYmFkNTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApAQCAtNzEsOSAr
NzEsOSBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgSVBD
OjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBs
ZW5ndGgpKSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIElQQzo6RGF0YVJlZmVyZW5jZShk
YXRhLCBsZW5ndGgpKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojph
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJv
eHkuaAppbmRleCA0ZDZhNWFmYzNlNTk1ZTVjZmVhMzcwYjIxZjdlZThhMTM3NDFlM2U0Li40N2Vh
ODY2NzFiMTNkMTM5NWMzZGFkOWJkYTc5YWJmNjE2Y2JhMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRhdGFTZW50
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2OTQ4OTZjOTk3
YTQ5NDBkYmFiMmRhNzY1NzgyMGEyNzhhZjFkYzZhLi40ODRjMGJlZDM2YjJmZWNhMWZlODBlYjZk
ZjJjMzBkMDMwZWQyMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhQXNVSW50OFB0cigpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERh
dGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNyw3
ICsyMDcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAg
IG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZDBjYjc5ZTVkMWU2NWY4ZTFiZDE5
OWM1NDNkZWQwOTE4ZTg0ZjUxYS4uNzg0MWE4ZjNiNjk2YWNkNWQxYTkyNDBkN2QxYjUxM2ViOWFj
NjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgTmV0d29ya1NlbmRRdWV1ZSBXZWJT
b2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJT
b2MKICAgICByZXR1cm4geyBkb2N1bWVudCwgWyZjaGFubmVsXShhdXRvJiB1dGY4U3RyaW5nKSB7
CiAgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6
Ok9wQ29kZVRleHQsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAg
ICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6
OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1
dGY4U3RyaW5nLmxlbmd0aCgpKTsKLSAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVs
OjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CisgICAgfSwgWyZj
aGFubmVsXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgeworICAgICAg
ICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVC
aW5hcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBieXRlTGVuZ3RoKTsK
KyAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5u
ZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0s
IGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0aW9uQ29kZSBleGNlcHRpb25D
b2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRpY19jYXN0PGludD4oZXhjZXB0aW9uQ29k
ZSk7CiAgICAgICAgIGNoYW5uZWwuZmFpbChtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCBCbG9i
OiBleGNlcHRpb24gY29kZSA9ICIsIGNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5jcHAKaW5kZXggNDk5ZGExOGQxNzRmZTc4OTI4Yjg3M2NhNzJjYjdlZTFh
ZTBhNWQ5Zi4uN2ViMTA3ODc3ZTJiMmEwYTg5OTQzNjc0MjI0ZmQxYjI4MDA0Y2E0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKQEAgLTEyMSw3ICsxMjEs
NyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6c2VuZERhdGEoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdQogewogICAgIGlmIChhdXRvKiBzb3VyY2UgPSBz
b3VyY2VGcm9tSWRlbnRpZmllcihzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoaXNS
YXcpCi0gICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgICAgICAgICAgc291cmNl
LT5zZW5kUmF3RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzb3VyY2UtPnNlbmRTdHJpbmdEYXRhKENTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkpOwogICAgIH0KQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6Y2hhbmdlUmVh
ZHlTdGF0ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aQogCiB2b2lkIFJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBib29sIGlzUmF3LCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCiB7Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGJ1ZmZlcjsKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIFN0cmluZyB0ZXh0OwogICAgIGlmIChpc1JhdykK
ICAgICAgICAgYnVmZmVyID0gZGF0YS52ZWN0b3IoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyCiAKICAgICBwb3N0VGFza1RvSGFuZGxlcihoYW5kbGVySWRlbnRp
ZmllciwgW2lzUmF3LCB0ZXh0ID0gV1RGTW92ZSh0ZXh0KS5pc29sYXRlZENvcHkoKSwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpXShhdXRvJiBoYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KGlzUmF3KQotICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
ICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVTdHJp
bmdEYXRhKFdURk1vdmUodGV4dCkpOwogICAgIH0pOwpAQCAtMjMwLDkgKzIzMCw5IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlU3RyaW5nRGF0YShXCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCBm
YWxzZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7CiB9CiAKLXZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmll
ciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oZGF0YSksIHNpemUgIH0gfSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEg
eyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBzaXplICB9IH0s
IDApOwogfQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNl
Q29ubmVjdGlvbjo6ZGlkRGV0ZWN0RXJyb3IoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgK
aW5kZXggNmQxMmI3YzM1ZjAwNGE0N2M1NTRmZGIxNWVlMjM5ZGU2MmIzNTBjZS4uZjhjMDVlNTM3
NDE3ZDc5NGQ1YTYxNWU3ODhlMWU2YWVkYTBhNzM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXIuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IHZvaWQgZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVTdHJpbmdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsK
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcikgZmluYWw7CiAg
ICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyLCBzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKaW5kZXggMDA2Nzg5OTA5MzJjNDM4MmJiNjFmZjAwNDk4NGM0YjM5OTBmYjRl
Ny4uM2RjOTI4ZGM1N2E5N2QwMmM5Mjg0NTMzMTFjZjMxY2JmMmI4NWMzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBOUEVy
cm9yIHBhcnNlUG9zdEJ1ZmZlcihib29sIGlzRmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLCB1aW50
MzJfdCBsZW5ndGgsCiAgICAgICAgIGlmICghZmlsZUNvbnRlbnRzKQogICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCi0gICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29u
dGVudHMtPmRhdGEoKTsKKyAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+ZGF0YUFz
Q2hhclB0cigpOwogICAgICAgICBwb3N0QnVmZmVyU2l6ZSA9IGZpbGVDb250ZW50cy0+c2l6ZSgp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgTlBBUEkgc3BlYyBzdGF0ZXMgdGhhdCB0aGUgZmls
ZSBzaG91bGQgYmUgZGVsZXRlZCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDYx
N2Q3ZDc2YzBhOGE1ZWI5ZGJhNTdhOGE4MDZiYzYwODYyNmY0NWMuLjA5MGQ1YTQwY2ViZDc4YzFl
ZDcyYmFiYTdiZjZlMDcyMzNiMjVlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTg2
Niw3ICs4NjYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcAogICAgICAgICBwbHVnaW5TdHJl
YW0tPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9k
aWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsK
ICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIApAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50CiAgICAgbV9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwg
aGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdp
bjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICBBU1NFUlQobV9zaG91bGRV
c2VNYW51YWxMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggMjQ3NDkxNDZkOTBmNDU1
ZjY5ZjU0MzU5NjRlMGIzYmNhMzFkY2NmMi4uYTU4MmI2NjUyZmE1MDFkNmU3N2RjMjQyOTA2YjQx
ZGVhMmIwNWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNw
b25zZVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3Ry
ZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1J
RCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRl
OwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMmE2MDFjYzA4YjQwZTc1ZjlhZTE4YTYy
NWE4MmMyNjFmZmQ3YzI3ZS4uZGJmYjhiNmI4MTFiMzY0NzRhNWRlNmJiNmE3ZjM4YzViMDI1MjA2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3QgcwogICAgIHN0YXJ0KHJlc3BvbnNlVVJMLnN0cmluZygp
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0K
IAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICAvLyBEZWxpdmVy
aW5nIHRoZSBkYXRhIGNvdWxkIGNhdXNlIHRoZSBwbHVnLWluIHN0cmVhbSB0byBnbyBhd2F5IHNv
IHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQgaGVyZS4KICAgICBSZWY8TmV0c2NhcGVQbHVnaW5T
dHJlYW0+IHByb3RlY3QoKnRoaXMpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFN0cmluZyYgcmVzdWx0KQog
ICAgIGlmICghc3RhcnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgp
LCAwLCAidGV4dC9wbGFpbiIsICIiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGVsaXZlckRh
dGEocmVzdWx0Q1N0cmluZy5kYXRhKCksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOworICAgIGRl
bGl2ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VsdENTdHJpbmcu
ZGF0YSgpKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAgc3RvcChOUFJFU19ET05FKTsK
IH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0YXJ0
KGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxTdHJpbmcsIHVpbnQzMl90IHN0cmVhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGVsaXZlckRhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNT
RVJUKG1faXNTdGFydGVkKTsKIApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9QbHVnaW4oKQogICAgIH0KIH0KIAotdm9pZCBOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAobV9maWxlSGFuZGxlID09
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051
bGwoKSkgewogICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDEwYzdmMmQ5ZTg3NDYzYWNiZTc4Zjg3ZDQzZTUyMWYw
ODk5MjNhYmUuLjliMDcwOTk4ODQ3MjA0MzFhM2IxM2U0MDFlZTQ4ODgzOGJhNjI5ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwm
IHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoYm9v
bCB3YXNDYW5jZWxsZWQpOwogCkBAIC03Myw5ICs3Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWwoKTsKICAgICB2b2lkIG5vdGlmeUFuZERlc3Ryb3lTdHJlYW0oTlBSZWFzb24pOwogCi0g
ICAgdm9pZCBkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAg
dm9pZCBkZWxpdmVyRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAg
dm9pZCBkZWxpdmVyRGF0YVRvUGx1Z2luKCk7Ci0gICAgdm9pZCBkZWxpdmVyRGF0YVRvRmlsZShj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkZWxpdmVyRGF0YVRvRmls
ZShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAKICAgICBSZWY8TmV0c2NhcGVQ
bHVnaW4+IG1fcGx1Z2luOwogICAgIHVpbnQ2NF90IG1fc3RyZWFtSUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNmNkYmVkY2Qw
ODU3MmUwYjY1OTk4NTQzZmRmNDJmMjU4NDAyMjA1YS4uYTY1MzFiNjRiOTc3MzA2ZDBmZmQ4MmFj
YzgyZjI4YjA5Y2ZlMDIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTc2LDExICsxNzYsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJM
LCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRp
bmcodWludDY0X3Qgc3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50
NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAg
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAg
ICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAt
MzY2LDcgKzM2Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBm
aW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGMwMmY4NDBjNDA3NDgwMWJkODc0ZjZj
ZjgzMmU5N2I4ODQxZjVjNDkuLjE1MTNlMDRlZjRlODU2ZmE4NzJjNTUyOGE3Y2JiZDA3MTFmN2Qy
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0
cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3QKICAg
ICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKIHsKICAgICBpZiAoIW1fcGRmUGx1
Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMTY2LDcgKzExNjYsNyBAQCB2b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVx
dWVzdC0+YWRkRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgY291
bnQpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQpOwogfQogCiB2b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTY4NCwxNCAr
MTY4NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlw
dCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0
cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAg
ICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAg
Q0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4oYnl0ZXMpLCBsZW5ndGgpOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQo
KSwgYnl0ZXMsIGxlbmd0aCk7CiAgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKIH0KIApA
QCAtMTcyOSw3ICsxNzI5LDcgQEAgdm9pZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5n
dGgodWludDY0X3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aCht
X2RhdGEuZ2V0KCksIHRhcmdldExlbmd0aCAtIGN1cnJlbnRMZW5ndGgpOwogfQogCi12b2lkIFBE
RlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAg
ICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGQzYzdhYzcwNTExZmM3MmM4
NzA4NGI4YTM3NGY5ZDZjNzI2ODU5YjAuLjEzNTVjZmY0ZWI3N2Y2ZjcxN2RiOTIwZTIxNDA1OGZj
MTZiMmZlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBA
IC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCBy
ZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVn
LWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpID0gMDsKQEAgLTE4Nyw3
ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJl
YW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0g
aGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZp
bmlzaExvYWRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggYmZmODA0YjM4ODVhYTU4YmE0NmMxZjIzODcwYTYwOWUz
MzkzOWFjZi4uOWNlZDdkYTA3NTAyZjYyYmFjNmFmNjc5ZTE2MTBkNGU2NTllMDdmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAt
MzMwLDkgKzMzMCw5IEBAIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zCiAgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwgc3Ry
ZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1Z2lu
SW5zdGFuY2VJRCk7CiB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi12b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblByb3h5Ojpz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3Ry
ZWFtSUQsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihieXRlcyksIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0
cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZXMsIGxl
bmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCiB2b2lkIFBsdWdpblByb3h5OjpzdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtMzUwLDkgKzM1MCw5IEBA
IHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAot
dm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5
OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5j
ZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1
Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFS
ZWZlcmVuY2UoYnl0ZXMsIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCiB2b2lk
IFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDAwOGMyMDIxNmRl
NWI3YTE5N2YxZjI0MjRhMTJlNTYxMmM2ZmRlNDAuLjNmMWIzOWVhYjdkYWUwODE2OGRkM2E3Mzhm
ZWQyYjBkYzA3MTQ0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaApAQCAtODcsMTEgKzg3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
dmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3Vs
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50
IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJM
LCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRl
OworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNo
TG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGI2NGFjYWJkZjc1M2FhODllN2I3MGU0ZDU2
ZTU1ZDc3MGVkMzIwMjEuLjNhMDk2ODNlZWM3YWEyMWU2MWRlYTEwYzg4MjljMzA3Njg0MDdhOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBOZXRzY2FwZVBsdWdpblN0cmVh
bUxvYWRlckNsaWVudAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hh
ciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqKSBvdmVycmlkZTsKIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBSCiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmll
ZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRG
aWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRh
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpCit2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAg
ICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlE
LCBieXRlcywgbGVuZ3RoKTsKIH0KQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIFBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1l
VHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gY2Fu
IGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1fcGx1
Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmlu
ZGV4IDgyOGQzMGEwNmU5ZDhmZGQ3OGI1OThkZjkwYTY2MzkzMWRhMGU4ZDMuLjRhMWY1YWM1N2E5
ZDc3NTRlNjQwNzhmN2RhNDJiNTc2YTMzNDM5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBtX3Bs
dWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQg
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsK
KyAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOwogICAg
IHZvaWQgbWFudWFsTG9hZERpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDg1NDFkZjNjYjIy
MzljYWQ4YWM3ZDU2ZjNlNDYyZDBkNWE3MWVjYjUuLjBlMzQ2MzFhZDZmYzI0OTFiM2RiMjc2YjNm
MTRmZDA2MWNlZTk2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JgogICAgIH0pOwog
fQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggOWRhYWJlMTRhMzRiM2MwOWYyN2RjOGRmNTQz
MDRlZTc1MzE2OTVlMS4uYmU0M2MwZmRkYjVlMTYyNzFhZWE4ZTVjYzIwMmRjN2UxMWEyNjljNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTksNyArNTksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjbGVhbnVwKCk7CiAgICAgCi0gICAgdm9pZCBkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCbG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICB2b2lkIGRp
ZEZpbmlzaEJsb2JMb2FkaW5nKCk7CiAKICAgICBzdHJ1Y3QgQmxvYkxvYWRlciBmaW5hbCA6IFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50IHsKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgfQotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSBm
aW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQorICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBm
aW5hbCB7IGNsaWVudC0+ZGlkUmVjZWl2ZUJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQogICAgICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFs
IHsgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsgfQogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBm
aW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggODMzYzgyYzU0ZDM3YWUwMTVhMTgxYTdiOTMyNGY3
MDUzMDdjNjhmNC4uYzhmMjQ4YTY0NzY1NzZhMjkyYzc1ZDVmYWE2OGY1YWM2M2E0NzVjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgSFRUUEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEpCiAgICAgICAg
IEhUVFBCb2R5OjpFbGVtZW50IGVsZW1lbnQ7CiAKICAgICAgICAgc3dpdGNoT24oZm9ybURhdGFF
bGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMp
IHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAg
ICAgICAgICAgICAgIGVsZW1lbnQudHlwZSA9IEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpEYXRh
OwogICAgICAgICAgICAgICAgIGVsZW1lbnQuZGF0YSA9IGJ5dGVzOwogICAgICAgICAgICAgfSwg
WyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDVlZDIzMWM4NTVjMDU5ZWRhZjcz
NDgxZDUwYjkzMThlNGVlNjIxMDIuLjVkYTJiYjlmNGEyZDdkNDIzYmVlODU0NDcxZmU4NTNkM2U0
YTI2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE0NCw3ICsxMTQ0
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQoKQogICAgIHdlYlBhZ2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1fZnJhbWUpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX3BsdWdpblZpZXcpCiAg
ICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwpAQCAtMTE4MSw3ICsxMTgx
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYWluUmVzb3VyY2VEYXRhID8gbWFpblJl
c291cmNlRGF0YS0+ZGF0YSgpIDogMCksIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxs
cHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5Mzg2ZWZhNTlhNTU1NTY1ZTFhNDY0YmJkNzgyYjc1
NGNlZDgxOTQzLi5hYTNhODYwMTc1NzI2NTQxMzg1MmE0YjllODk1NjRiYjRkMWEzZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAg
ICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopIGZpbmFsOwogICAgIAogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAwMjhlOGM2ZTNl
ODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiLi4yYWMyNWRjZDM5ZTQ4MGRmOTM2YzZhZWI3
OWVjMjBhZmVjMmQ0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhl
IG92ZXJyaWRlcy4KLSAgICBWZWN0b3I8Y2hhcj4gb3ZlcnJpZGVCdWZmZXI7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
OjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9h
cmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQogICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFz
a1Byb3h5LmNwcAppbmRleCA0N2UzY2E5NmU5M2M1MTQxODQyYTczM2JhZDEyNjRjYmYxNTI0OTIx
Li5kZGMwNzFiM2EyNmFmODI4ZWM3YzQ2M2Q1MWM3MTM4MGU1N2U5MDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQ
cm94eS5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6
ZGlkUmVjZWl2ZURhdGEoc2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpCiAgICAgfQog
CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgbV9jb3JlTG9h
ZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwg
c2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVM
b2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0
YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCBjNTM2MjVhMTg4MzhmZDBkMjcz
ZjZiNDY0ZTk2YzAzYWFjYzAwYzA5Li4xNTIwMGVjZDkxOTI2OGMzNDA3ZDkxOWMwNjY3MThjOTMy
NDYxNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UoTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UpOwogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHBy
aXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA1N2FhNGE4MmQ2YTY3MTgxNWU0
M2JhODA1OTQ4NmI3NTY1ZTUwZTY5Li4wODYxNWU0OWY1MTMwM2E0ZjU5Y2FkMDUzOWNmZmU3ZDlh
MDViMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTE1
LDEyICsxMTUsMTIgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnRTdHJl
YW0oTlNVUkwgKnJlc3BvbnNlVVJMLCBsb25nIGxvbmcgZXhwZWMKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KFtoZWFk
ZXJzIGJ5dGVzXSkpLCBbaGVhZGVycyBsZW5ndGhdKTsKIH0KICAgICAgICAgICAgICAgICAgICAg
IAotdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpCiB7CiAgICAgX1dLUEhTdHJlYW1EaWRSZWNlaXZlRGF0YShtX2luc3RhbmNl
LT5ob3N0UHJveHkoKS0+cG9ydCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bnN0YW5jZS0+cGx1Z2luSUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3Ry
ZWFtSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihi
eXRlcyksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0
PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcykpLCBsZW5ndGgpOwog
fQogICAgIAogdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkRmluaXNoTG9hZGlu
ZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNzU0MjY5MzgxMmU3OGI3Zjg5YThlMzQ0MDM3
MzMwMDhhZmMzZjI5NS4uZWQwZTMxNDNlZjhjMDZhY2M5ODhhYTI0YWI4ODI3YTM5OGY1YmEzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNzI1LDcgKzcy
NSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZUphdmFTY3Jp
cHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOltKU0RhdGEgbGVuZ3RoXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsK
ICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7
Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKKyAgICAgICAgc3RyZWFtLT5k
aWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW0pTRGF0YSBieXRl
c10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0tPmRpZEZpbmlzaExvYWRpbmco
MCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmlu
ZGV4IDc2MTE3MWNlYTdjYTVmYTY3MjhjOWRjMDBkMmViN2IyZDE4Zjc3ODAuLjY0YzI3N2I1ZjQz
ZDE1MWJkYTQxNWJlYzliNTlkNWYzY2NmYzA4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0KQEAgLTUxOSw3ICs1MTksNyBAQCAtICh2b2lkKXBsdWdpblZpZXc6
KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBpZiAoSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0qIG1hbnVh
bFN0cmVhbSA9IF9wcm94eS0+bWFudWFsU3RyZWFtKCkpCi0gICAgICAgIG1hbnVhbFN0cmVhbS0+
ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pOworICAgICAgICBtYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAs
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhd
KTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVk
RXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDJiYzk3OGQzNDAz
ZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMuLjE5MzkwYjVjMDJhNzVmNzlmOTY2ZjgxYTQx
YTJkNzA1NjU3OGYwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVzdHJveVN0cmVhbVdpdGhFcnJvcihOU0Vycm9yICopOwogCiAgICAg
Ly8gRklYTUU6IENhbiB0aGVzZSBiZSBtYWRlIHByaXZhdGU/Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0KaW5kZXggZjg4OTBkMDUxNmIyMTJhY2ZlNzY5NjY0MjVkZTU0NDEwNGM5YTY5
NC4uNGI0ZGRjMDA0YTI2YTNlYTY0OWMyNjkxNTgxNGU1NjYyMGM5NTUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopCiAgICAgZGVz
dHJveVN0cmVhbVdpdGhSZWFzb24oTlBSRVNfRE9ORSk7CiB9CiAKLXZvaWQgV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWJ5dGVzIGxlbmd0aDpsZW5n
dGggZnJlZVdoZW5Eb25lOk5PXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMzNiYTU3YzE1NWYx
OGE3MjBjZmM3OWQ0NmFmMzU1ZDc4ZTA5NWU5Yy4uYThhMmVlODE3MWEyZGI4ZDgyYzhiYjA1YTk5
ZGQwMDQxNjllYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEwNTEsNyArMTA1MSw3IEBAIC0g
KHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZERhdGE6KE5TRGF0
YSAqKWRhdGEKICAgICB9CiAKICAgICBpZiAoX21hbnVhbFN0cmVhbS0+cGx1Z2luKCkpCi0gICAg
ICAgIF9tYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgICAgIF9tYW51YWxTdHJl
YW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcg
KilwbHVnaW5WaWV3IHJlY2VpdmVkRXJyb3I6KE5TRXJyb3IgKillcnJvcgpAQCAtMTEyNyw3ICsx
MTI3LDcgQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVn
aW5SZXF1ZXN0ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0pOwogICAgICAgICAKICAgICAgICAgc3RyZWFtLT5zdGFydFN0cmVhbVdpdGhSZXNwb25z
ZShyZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsK
KyAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwogICAgICAgICBzdHJlYW0t
PmRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggYmQ1MjIzYTBjZTE1MGNmMzVhMjhiNzU1MDQ4MDA0YzFmY2I1NGFhNi4uMTUyZmRhMWY2
ZWQ1N2UyOTlhZGUzNGQwN2VlOGRiYjRlMmMxZWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwog
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQppbmRleCA2MzQyMjAwNWZlZjRmYjA5Y2Y2N2NhMjNkZjEwMmNhNzRjNWZmOTVhLi44ZTFi
MjQ3ZmY3YTIxZWU3ZGIzODFjNjQwZTEwNjVhYjhjYWFkMjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3Ro
Omxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNl
aXZlZERhdGE6bnNEYXRhLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IDQxMzliYjVhOTE2ODNlNjVhY2MwODI1M2JlY2IzZmRkMGFiYzYz
ZDkuLmZkMzEwMDM1MDFmZmNjM2MwMWE5MmY5NTdiYzM0Y2QyZGJhMWY4MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTgyLDcgKzk4Miw3IEBA
IC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBhdXRvKiBkb2N1bWVudCA9
IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnNldFNob3Vs
ZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKIAotICAg
IF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERh
dGEoKGNvbnN0IGNoYXIgKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoKGNv
bnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1YjFiZmIyZDM0MTc0YzY4YTJiNDBiZDRj
N2QxYWRiOGQzMjlkNWY5Li40ZDA0MGY1NjQ2ZWI4MjQxYTkyYmM3YzJkYzc4ZjZkZmQ5NmRhZDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEsNyArNjQxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAg
ICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggOGFhN2FhMzFmZTgyNWVjNzk1Y2YxYjNlM2ZiM2U1M2JmZTZiODc5Zi4uNmRh
YzBiMDUyMTgzOTE2NjIwODk2NDFmNjVhZTk0MmMyOWI4OTZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERv
d25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjYThkMzhkNTM1MzM4NDc0MDk3YmI0OTA2
MDQ1M2U2NTI5YzkzYTkuLjkyYjdiZDRiMDIyOWM0ZTQzZjUxNDUzMGQ0YjI1NWQ4MGM1MWU2NTYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8g
c3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNo
YXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZl
cjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBg
Y29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrQnVmZmVyKToKKwogMjAyMS0wNi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgYXR0cmlidXRlZEJ1bmRsZUlkZW5k
aWZpZXIgYSBwcm9wZXJ0eSBmb3IgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbnN0ZWFkIG9mIF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGJlYzdkMTE5ZWE4MTliMDE5
OWE4NzNmMDIwNzY2ZDQxOTIwMWFjMmEuLmVhNzMyYThlMGUwYzI2YzlkOTBhMTIzNTk0MGFjZGU1
N2UyMTYzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewotICAgIFZlY3RvcjxjaGFyPiB2ZWN0
b3IwKDB4NDAwMCwgJ2EnKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMSgweDQwMDAsICdiJyk7
Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjIoMHg0MDAwLCAnYycpOworICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgw
eDQwMDAsICdiJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IxKSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQogCi1z
dGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJM
ZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQorc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBl
Y3RlZCkKIHsKICAgICAvLyBleHBlY3RlZCBpcyBudWxsIHRlcm1pbmF0ZWQsIGJ1ZmZlciBpcyBu
b3QuCiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihleHBlY3RlZCk7CkBAIC0xNzEsOSArMTcx
LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHAKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGdldFNvbWVEYXRhKQogewotICAgIFZlY3RvcjxjaGFyPiBzMSA9IHsnYScsICdiJywgJ2MnLCAn
ZCd9OwotICAgIFZlY3RvcjxjaGFyPiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZl
Y3RvcjxjaGFyPiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OworICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsn
ZScsICdmJywgJ2cnLCAnaCd9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywg
J2snLCAnbCd9OwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CkBAIC0yMDAsNyArMjAwLDcgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgaXNFcXVhbFRvKQogewotICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8
VmVjdG9yPGNoYXI+PiYmIGNvbnRlbnRzKSB7CisgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZl
Y3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBj
b250ZW50cykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwpA
QCAtMjA5LDcgKzIwOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAg
ICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKICAg
ICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIx
LT5hcHBlbmQoVmVjdG9yPGNoYXI+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CisgICAgYnVmZmVy
MS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwg
eydjJywgJ2QnfX0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2In
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7CkBAIC0yMTks
NyArMjE5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewotICAgIFZlY3RvcjxjaGFyPiB0MSA9
IHsweDExLCAweDUsIDB4MTJ9OworICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUs
IDB4MTJ9OwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+
dG9IZXhTdHJpbmcoKTsK
</data>
<flag name="commit-queue"
          id="452119"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430615</attachid>
            <date>2021-06-04 14:50:23 -0700</date>
            <delta_ts>2021-06-04 15:02:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604145022.patch</filename>
            <type>text/plain</type>
            <size>259952</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDBkYWM3ZmYw
M2NjODQ2ZDE4OTZhMDg4ZjYyNjMwMjg2MTZiZGZhNjkuLmI2ZTY4ZjNjNzI5ZmI0MWM5MjlhNmQx
NzhkYTYwMzk5ZmRjOTFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lk
IEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQo
bV9yZXF1ZXN0SW5GbGlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IDBmMmYw
NDE1NDMxMzIzNTIyM2NkZmZiN2M1YzRjMzY5NGM0ZTkwMzQuLmUxMGQ4ZDkxNmZiMGYyNWZiZWEz
ZjdhYzJhZjU1ZjU3MGIyMGRjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IGVlNGYzNjFkZDA4M2RlNzNjOWM0ZGU4ODE0
MTI0MGFmMTVmYjI5MDMuLjNiOTYwMjEwOTU5NjMyNWEwZDQ3NDMyZTQ2NmY0NWY4MmQxNjEwZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgaW50IEZpbGVIYW5kbGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7
CiAgICAgaWYgKCFvcGVuKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmls
ZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBGaWxlSGFuZGxlOjpwcmludGYoY29u
c3QgY2hhciogZm9ybWF0LCAuLi4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oCmluZGV4IDU4Y2YxNDA0OGQzNTUzMDIwNzdmMWM0ZWQ1MTQ5MjVh
NWM3ZDkxNGMuLjNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IDgyNTg2NTNmMjU1MTgyZjc0ZWNmZDRkODdhYWU5OWFhMTY2M2QxMTEuLjAwNDBh
OGE2MTE4N2ZiMGU0OWU4NmYzMzcwYmI4ZjgyMzc3NWFmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKTsKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIHNpemUpOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQpAQCAtNTIsNyArNTIsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJiBk
YXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CkBAIC04MSwxNSArODEsOSBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3RvcjxjaGFyPiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KLS8vIEZJWE1FOiBNb3Zl
IHRoZSB3aG9sZSBjbGFzcyBmcm9tIFZlY3RvcjxjaGFyPiB0byBWZWN0b3I8dWludDhfdD4gYW5k
IG1ha2UgdGhpcyBlZmZpY2llbnQsIHJlcGxhY2luZyB0aGUgVmVjdG9yPGNoYXI+IHZlcnNpb24g
YWJvdmUuCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
IHsgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSB9KTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdApAQCAtMTAyLDcgKzk2LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb21iaW5lZERhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBj
b21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NpemUpOwogICAgIGZvciAoY29u
c3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCiAgICAgICAgIGNvbWJpbmVkRGF0YS5hcHBl
bmQoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKQEAg
LTExMyw3ICsxMDcsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50
KCkgY29uc3QKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLWNvbnN0
IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIyLDExICsxMTYsNiBAQCBjb25zdCBjaGFyKiBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmRhdGEoKTsKIH0KIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhQXNVSW50OFB0
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSk7Ci19Ci0KIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29t
ZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0
aW9uIDwgbV9zaXplKTsKQEAgLTE1MCw3ICsxMzksNyBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0
b0hleFN0cmluZygpIGNvbnN0CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKCkpLCBzaXplb2YoY2hhcikpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwg
MSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJl
cXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwog
ICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVt
Y3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBz
ZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAg
ICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9z
aXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7
CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApA
QCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5k
KHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1f
c2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYm
IGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBh
dXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBAIC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwK
KyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRh
dGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFS
ZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENG
RGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0s
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+
JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnX2J5dGVzX2dl
dF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyAgICAgICAgW10oY29uc3QgR1JlZlB0
cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLT5kYXRh
KCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBk
YXRhKSB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3Qg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFy
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQog
ICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAg
c2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9z
ZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hh
ciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQt
PmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIobGVuZ3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAz
KTsKIAogICAgIC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNo
YXIqIHAgPSBidWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihidWZmZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJh
Y3RlcnM4KCk7CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZl
ci5zaHJpbmsocCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2Uz
MmZiLi41Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDog
cHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxl
RGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpA
QCAtOTksOCArOTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFs
bCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5
IGFyZSBub3QgYWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdp
bigpIGFuZCBlbmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRl
cyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9z
c2libGUuCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGFBc1VJbnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBl
bmQoVmVjdG9yPGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAg
ICAgdm9pZCBjbGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8g
VG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50
LgogICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERh
dGFTZWdtZW50PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKQEAgLTE1MCw3ICsx
NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYg
ZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
ICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtMTY3
LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCisgICAgICAgIFZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjA0LDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmKTsKQEAgLTIzNSw3ICsyMzUsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAjaWYgVVNFKEZPVU5E
QVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcAppbmRleCBhMjAzZmVlNjE0MjUxM2NjMjJlNmY4OWRjNGM4MjRmYTA3MDJlMDlkLi41
ZTQ0NjZjZDNmMTcxODhhMjdjMGNkZTFlYThhODAxYjAyYTI0N2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC00Miwy
NCArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9i
dWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9zZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5n
dGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUo
ZmFsc2UpCiAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgLCBtX3NlcGFyYXRvcklu
ZGV4KDApCiB7CiB9CiAKIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAg
IDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9z
ZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4
KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCi0gICAgLCBtX3NlcGFyYXRvcklu
ZGV4KDApCiB7CiAgICAgc2V0U2VwYXJhdG9yKHNlcGFyYXRvcik7CiB9CkBAIC03NSw3ICs2Myw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnNldFNlcGFyYXRvcihjb25zdCBjaGFy
KiBzZXBhcmF0b3IpCiAgICAgbV9zZXBhcmF0b3IuYXBwZW5kKHNlcGFyYXRvciwgc3RybGVuKHNl
cGFyYXRvcikpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmso
VmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQorYm9vbCBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXRvcikKIHsKICAgICBpZiAobV9yZWFjaGVkRW5kT2ZGaWxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC04Myw3ICs3MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0
CiAgICAgY2h1bmsuY2xlYXIoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB3aGlsZSAo
bV9zZWdtZW50SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgIGNoYXIgY3Vy
cmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKKyAgICAgICAgICAg
IGF1dG8gY3VycmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKICAg
ICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyICE9IG1fc2VwYXJhdG9yW21fc2VwYXJhdG9y
SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fc2Vw
YXJhdG9ySW5kZXggPD0gbV9zZXBhcmF0b3Iuc2l6ZSgpKTsKQEAgLTExMiw3ICsxMDAsNyBAQCBi
b29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVu
aywgYm9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewog
ICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICht
X3NlcGFyYXRvckluZGV4ID4gMCkKLSAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBh
cmF0b3IuZGF0YSgpLCBtX3NlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICBjaHVuay5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgp
KSwgbV9zZXBhcmF0b3JJbmRleCk7CiAgICAgICAgICAgICByZXR1cm4gIWNodW5rLmlzRW1wdHko
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMiwxNCArMTEwLDE0IEBAIGJvb2wgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1
ZGVTZXBhcmF0CiAKIFN0cmluZyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rQXNV
VEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAg
ICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAo
IW5leHRDaHVuayhkYXRhLCBpbmNsdWRlU2VwYXJhdG9yKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgcmV0dXJuIGRhdGEuc2l6ZSgpID8gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFjayhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIDogZW1wdHlTdHJpbmcoKTsKIH0K
IAotc2l6ZV90IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpwZWVrKFZlY3RvcjxjaGFyPiYgZGF0
YSwgc2l6ZV90IHJlcXVlc3RlZFNpemUpCitzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OnBlZWsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIHsKICAg
ICBkYXRhLmNsZWFyKCk7CiAgICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gbV9zZWdtZW50TGVuZ3Ro
IC0gbV9zZWdtZW50SW5kZXgpIHsKQEAgLTE0MSw3ICsxMjksNyBAQCBzaXplX3QgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSkKICAgICBkYXRhLmFwcGVuZChtX3NlZ21lbnQgKyBtX3NlZ21lbnRJbmRleCwgcmVhZEJ5
dGVzQ291bnQpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclBvc2l0aW9uID0gbV9idWZmZXJQb3NpdGlv
biArIG1fc2VnbWVudExlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBzZWdtZW50ID0gMDsKKyAgICBj
b25zdCB1aW50OF90KiBzZWdtZW50ID0gbnVsbHB0cjsKIAogICAgIC8vIExldCdzIHByZXRlbmQg
YWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBz
aG91bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMg
b2YgdGhlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDc1NmVlZTI0NmIwZTJjYWUyMGM3ZWU3Nzc5ZTY1
YzBmOGQ3MzQ2M2MuLmM5ZjViMDZmYjQ2NTZkYzJlYWNkNDA0NDFmZjM0MWUyNWZkNGM3ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aApAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25z
dCBjaGFyKik7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVm
ZmVyIHdhcyByZWFjaGVkLgotICAgIGJvb2wgbmV4dENodW5rKFZlY3RvcjxjaGFyPiYgZGF0YSwg
Ym9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOworICAgIGJvb2wgbmV4dENodW5rKFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOwogCiAgICAg
Ly8gUmV0dXJucyBhIG51bGwgc3RyaW5nIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGhhcyBi
ZWVuIHJlYWNoZWQuCiAgICAgU3RyaW5nIG5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFG
YWxsYmFjayhib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFkcyBz
aXplIGJ5dGVzIGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBidWZmZXIsIHdpdGhvdXQg
Y2hhbmdpbmcgdGhlIGJ1ZmZlciBwb3NpdGlvbi4KICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYnl0ZXMgcmVhZC4gVGhhdCBudW1iZXIgbWlnaHQgYmUgbGVzcyB0aGFuIHRoZSBzcGVjaWZp
ZWQgc2l6ZSBpZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgc2l6ZV90
IHBlZWsoVmVjdG9yPGNoYXI+Jiwgc2l6ZV90KTsKKyAgICBzaXplX3QgcGVlayhWZWN0b3I8dWlu
dDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7
Ci0gICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgY2hhciogbV9zZWdtZW50
OwotICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGg7Ci0gICAgc2l6ZV90IG1fc2VnbWVudEluZGV4
OworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworICAgIGNvbnN0IHVpbnQ4X3Qq
IG1fc2VnbWVudCB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9zZWdtZW50TGVuZ3RoIHsgMCB9
OworICAgIHNpemVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBib29sIG1fcmVhY2hlZEVu
ZE9mRmlsZTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3I7Ci0gICAgc2l6ZV90IG1fc2Vw
YXJhdG9ySW5kZXg7CisgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKKyAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleCB7IDAgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5oCmluZGV4IDBiZjBjNGFmYjAxYjVhMWI5OWVhN2M5ZjY2YTMxYzA2MmNlM2FhYTIu
LjA3OTdkZmJlOGQwMThiZTYzNjE3NDRjNThmODkyZGQ1NmVkNjg5YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7
CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDM4NzE3MzhlNWQ1YzA1
M2NiZGIyZDRiYjliNzMwMzgyZmJjYWM0MmUuLjQyOTBkYjEyOGQwMDBhNDBlZWY3MGZkMjk0MWQ2
MzQ0OTA0NmRlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNDUsNyArMTQ1
LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQog
Ci12b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjph
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY29waWVkRGF0YSB7IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoodm9pZCopZGF0YSBs
ZW5ndGg6bGVuZ3RoXSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA1NmE3ODhj
ZDc1MDQ4ZWZkZWNhZWU2NmVjZmFmMGY5NjUwZGM3ODZiLi4wNjhjZGNiMzgzZjQyMzY1YWMzMjY0
ZTIyOWE2ZDYzYmMyYjRhYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDlmOGZhNGJjZTBk
MGY4ODBiYTQzNzUxM2EzMjY2ZjU2ZjVhMDA2MS4uOWQwY2U5MGMwYjAxOTI4MDY1OGU4NzEzOGMx
YzUxZDE3NjQ2Nzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTk0LDcgKzk0
LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwog
fQogCi12b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
OjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJU
KCFbbV9yZXBsYWNlbWVudERhdGEuZ2V0KCkgbGVuZ3RoXSk7CiAgICAgbV9yZXBsYWNlbWVudERh
dGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0
NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJmMzMyMzgyMmZlOGYzNDE2MjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0
RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAg
IHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVy
biBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2Nk
Yjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgICAgICBpZiAoIWJ1
ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtMjA1LDkg
KzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1f
cHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHko
KSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7
IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVy
Lm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMt
PmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAxY2E5NzYzM2Q4NjJiOGRlODMwZmJm
ODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4ZjhiNTU1NmNjMmY2YTY3MWU1OTk2YWQx
ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTU2LDcg
KzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
aW5kZXggM2VkNGUwNWM0Mzk0ZGZmNjNhZTVmYzZiYTFlZjFhODA0MjU0M2NiNy4uYTI4ZTYxYzAy
YTcyY2E5Mzg5YTY4NjMyNWI1NDZlMzFjNGMwNDk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKaW5kZXggMWUwZDgwZGZlOTExN2JjYTlhMzk0Mjc4NTE5OGY4MzUwNmRlMzkz
Ny4uMTA3MjYyN2E5MGQyOTRmZTllZjc2OTU3NWUzZjA3ODFkZDQwZDI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAt
NjEsMTYgKzYxLDE2IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDMyKFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MzJf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDMyKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICB1aW50MzJfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25s
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCi1zdGF0aWMgYm9v
bCB3cml0ZVVJbnQxNihWZWN0b3I8Y2hhcj4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCitzdGF0
aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFs
dWUpCiB7CiAgICAgdWludDE2X3QgYmlnRW5kaWFuVmFsdWUgPSBodG9ucyh2YWx1ZSk7Ci0gICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8Y2hhcio+KCZiaWdF
bmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOworICAgIHJldHVybiB2ZWN0b3Iu
dHJ5QXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQ4X3QqPigmYmlnRW5kaWFuVmFsdWUp
LCBzaXplb2YoYmlnRW5kaWFuVmFsdWUpKTsKIH0KIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdv
ZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KQEAgLTEwMSw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fdmVjdG9yLnRyeVJlc2VydmVDYXBhY2l0
eShtX3ZlY3Rvci5zaXplKCkgKyBuKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgbV92ZWN0b3IuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbik7Cisg
ICAgICAgIG1fdmVjdG9yLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IG4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTExMiw3ICsxMTIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChvZmZzZXQgKyBuID4gbV92ZWN0b3Iuc2l6ZSgpKQogICAgICAg
ICAgICAgbV92ZWN0b3IuZ3JvdyhvZmZzZXQgKyBuKTsKICAgICAgICAgbV92ZWN0b3IucmVtb3Zl
KG9mZnNldCwgbik7Ci0gICAgICAgIG1fdmVjdG9yLmluc2VydChvZmZzZXQsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgbik7CisgICAgICAgIG1fdmVjdG9yLmluc2VydChvZmZzZXQs
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMTIyLDExICsxMjIsMTEgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8Y2hhcj4mIG1fdmVjdG9yOworICAgIFZlY3Rvcjx1aW50OF90PiYg
bV92ZWN0b3I7CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9B
Ukcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBjb252
ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3RvcjxjaGFyPiYgc2ZudCkKIAog
I2lmIFVTRShXT0ZGMikKICAgICBpZiAoc2lnbmF0dXJlID09IGtXb2ZmMlNpZ25hdHVyZSkgewot
ICAgICAgICBjb25zdCB1aW50OF90KiB3b2ZmRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNv
bnN0IHVpbnQ4X3QqPih3b2ZmLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIHdvZmZEYXRhID0gd29m
Zi5kYXRhKCk7CiAgICAgICAgIGNvbnN0IHNpemVfdCB3b2ZmU2l6ZSA9IHdvZmYuc2l6ZSgpOwog
ICAgICAgICBjb25zdCBzaXplX3Qgc2ZudFNpemUgPSB3b2ZmMjo6Q29tcHV0ZVdPRkYyRmluYWxT
aXplKHdvZmZEYXRhLCB3b2ZmU2l6ZSk7CiAKQEAgLTI5Miw3ICsyOTIsNyBAQCBib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAg
ICBpZiAoIWJ1ZmZlciB8fCAhaXNXT0ZGKCpidWZmZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBWZWN0b3I8Y2hhcj4gY29udmVydGVkRm9udDsKKyAgICBWZWN0b3I8dWludDhfdD4g
Y29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVy
dGVkRm9udCkpCiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDVjMGNhNGZjMjA3ZDIxMGZkMDgwNTRj
NGZmYTdlZmNhMzNhMGIxMmQuLjNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJk
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaApAQCAtMzcsNyArMzcsNyBAQCBib29sIGlzV09GRihTaGFyZWRCdWZmZXImKTsKIAog
Ly8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3Vs
ZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lv
biByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0
aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRo
ZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhh
cyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2Zu
dC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29u
dmVyc2lvbiBmYWlscywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQppbmRleCAzMGNmNzllY2ZkZjI1ODJmNTQ1MmFiZjIxMjk2MTI4NTYz
M2Y3ODMwLi4yNDc3MjhlNmNiYzA3ZjI4MmZhNThmNTE3YjhhNmZlMDZlNWIwNjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBA
IC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgZmluYWw7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90Kiwg
aW50KSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE4KICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9p
ZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBjaGFyKiwgaW50KQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90
KiwgaW50KQogewogICAgIEFTU0VSVCgmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYg
KGF1dG8qIGRhdGEgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQpAQCAtMTU0LDcgKzE1NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsg
fQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVu
dC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgc2l6ZSkKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCiB7
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBlZjVlNWZiOWUxMzY0YWY2NzU3ZTUw
ZjhiOGVmMTcyYmZjMGQ2MTc5Li5hMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUw
YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLAogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsK
ICAgICAKLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBzaGFyZWRCdWZmZXItPmRhdGEoKSArIHBv
c2l0aW9uOworICAgIGF1dG8qIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRp
b247CiAgICAgc2l6ZV90IGFtb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY291bnQsIHNvdXJjZVNp
emUgLSBwb3NpdGlvbik7CiAgICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBhbW91bnQpOwogICAg
IHJldHVybiBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmluZGV4IDNmOGRlMjRlYzE0MjZiYjc3ZDc3
Yjg5N2MxMzRmZmFiOWM2NjA4ZWQuLmExZTViNzMyZmIwYmY0ZTU0MmQ0MWJhOWU4NjlkZjAxZDY1
OWUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBTdHJpbmcg
dHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVRJLCBjCiAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0gewogICAg
ICAgICBbXSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4g
c2l6ZV90IHsKICAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOwotICAgICAgICAgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZl
ciksIGNvdW50KTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSho
YW5kbGUsIGJ1ZmZlciwgY291bnQpOwogICAgICAgICB9LAogICAgICAgICBudWxscHRyCiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2Jh
NGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcxOWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgy
NmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVu
ZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVk
U2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbUlubGluZSh0
ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBtZW1jcHkobG9jYXRp
b24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGFMZW5ndGgpOworICAgICAg
ICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAK
ICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtLCBidWZm
ZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZhODFkMjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5
ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgMCwg
JnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPGNoYXI+
IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSh0YWJsZVNpemUpOwog
ICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9y
IGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVy
cHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEoKSksICZ0YWJsZVNpemUpOwogICAgIGlmIChl
cnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGExNjFjNDdjNTBkYjgyODQ3ZTZmZjJkNjg1Mjhi
ZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MTcsNyArNDE3LDcg
QEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpw
dXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgbV9lb3Mg
PSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJH
U3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6
ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBzaXplID0gYnVm
ZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBt
X2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCAwYjg3OTZhYjdi
NDdkOWY4MTEzYmU5NGVjZGE5NjNmZTNjMDBiZjVlLi45ZDQ5YzlmMzdiZTJlNTRjZGE3NjBhNGRm
MjZhNGIzZWRlMzg3N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUGxhdGZvcm1NZWRp
YVJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNo
YXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQog
Ci12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyht
X3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCA0NDk4MzczNjYxYTdl
YjA5OWZiOTg0NTZlOTRhNDFkODRhZGIxYzE2Li4xNzEzNWExNDFjZDZmYTJjZTZhODcyYzc3MzE5
ZTQzM2IzODc2MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTI3MCw3ICsyNzAs
NyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogCiB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9w
ZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgp
LCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YUFzVUludDhQdHIoKSksCisg
ICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZp
Y2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmlj
YXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKICAgICBjYWxsYmFj
ayghZXJyb3IgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzQwLDcgKzM0MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBHU1RfREVCVUcoInBhcnNpbmcg
YnVmZmVyIG9mIHNpemUgJXp1IiwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVN
UCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhQXNVSW50OFB0cigpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogCiAgICAgICAgIFN0cmluZ1ZpZXcgcGF5bG9hZChyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmdWaWV3PiB0eXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiOlR5cGU6IiksIDYpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7Ci0gICAgR1NUX01FTURVTVAo
ImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkp
OworICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdl
LT5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgY2hhbGxlbmdlQ2FsbGJhY2sgOiBtX2No
YWxsZW5nZUNhbGxiYWNrcykKICAgICAgICAgY2hhbGxlbmdlQ2FsbGJhY2soKTsKICAgICBtX2No
YWxsZW5nZUNhbGxiYWNrcy5jbGVhcigpOwpAQCAtNTA3LDExICs1MDcsMTEgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXQKICAgICBtX2luaXREYXRhID0gSW5pdERhdGEoaW5zdGFuY2UtPmtleVN5
c3RlbSgpLCBXVEZNb3ZlKGluaXREYXRhU2hhcmVkQnVmZmVyKSk7CiAKICAgICBHU1RfVFJBQ0Uo
IkdvaW5nIHRvIHJlcXVlc3QgYSBuZXcgc2Vzc2lvbiBpZCwgaW5pdCBkYXRhIHNpemUgJXp1Iiwg
bV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgR1NUX01FTURVTVAoImluaXQgZGF0
YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNVSW50OFB0cigpLCBtX2luaXREYXRhLnBh
eWxvYWQoKS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0
YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAKICAg
ICBPcGVuQ0RNU2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgb3BlbmNkbV9jb25zdHJ1
Y3Rfc2Vzc2lvbigmaW5zdGFuY2UtPnRodW5kZXJTeXN0ZW0oKSwgdGh1bmRlckxpY2Vuc2VUeXBl
KGxpY2Vuc2VUeXBlKSwgaW5pdERhdGFUeXBlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0gICAg
ICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNVSW50OFB0cigpLCBtX2luaXREYXRhLnBh
eWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywg
dGhpcywgJnNlc3Npb24pOworICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBt
X2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lv
bkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAg
ICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwogICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwpAQCAtNTcyLDcg
KzU3Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgaWYgKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ug
b2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBHU1Rf
TUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2Fn
ZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwpAQCAtNTg2LDcg
KzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgaWYgKCFtX3Nlc3Npb24gfHwg
bV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNzaW9u
LmdldCgpLCByZXNwb25zZS0+ZGF0YUFzVUludDhQdHIoKSwgcmVzcG9uc2UtPnNpemUoKSkpCisg
ICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vz
c2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+
c2l6ZSgpKSkKICAgICAgICAgc2Vzc2lvbkZhaWx1cmUoKTsKIH0KIApAQCAtNjA3LDcgKzYwNyw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5
cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxv
YWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6
ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVN
UCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0
YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaAppbmRleCBlODlmYjU5OTg2MjE1YjlkNWRhZTE3OWQyZDc1OWNlZjc0
MTgxNDc2Li5jODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAg
IGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihw
b3NpdGlvbikgLSBidWZmZXIuZGF0YSgpOworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBvc2l0aW9uKSAtIGJ1ZmZlci5kYXRhKCk7CiAgICAgICAg
IHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBp
bmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmlu
ZGV4IGEwM2U3MWFiMWJjM2IxY2E1MDdjZjM4ZTI3NDE4N2JlYzBhOWQxOTEuLjRiOGFlNmEwY2Q4
NTQ2ZGVmNjZmNzRiOWY2OTc2MjNhZTI0ZDQwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIq
IGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5RAogICAgIG92
ZXJsYXlMZW5ndGggPSAwOwogCiAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBmb250RGF0YS0+c2l6
ZSgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOworICAgIGF1dG8q
IGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwogCiAgICAgRU9UUHJlZml4KiBwcmVmaXggPSBlb3RI
ZWFkZXIucHJlZml4KCk7CiAKQEAgLTMzNCw4ICszMzQsOCBAQCBib29sIGdldEVPVEhlYWRlcihT
aGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVy
bGF5RAogCiAgICAgLy8gSWYgcG9zc2libGUsIGVuc3VyZSB0aGF0IHRoZSBmYW1pbHkgbmFtZSBp
cyBhIHByZWZpeCBvZiB0aGUgZnVsbCBuYW1lLgogICAgIGlmIChmdWxsTmFtZUxlbmd0aCA+PSBm
YW1pbHlOYW1lTGVuZ3RoICYmIG1lbWNtcChmYW1pbHlOYW1lLCBmdWxsTmFtZSwgZmFtaWx5TmFt
ZUxlbmd0aCkpIHsKLSAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGZ1bGxOYW1lKSAtIGRhdGE7Ci0gICAgICAgIG92ZXJsYXlEc3QgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihmYW1pbHlOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJsYXlT
cmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmdWxsTmFtZSkgLSBkYXRhOwor
ICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZmFt
aWx5TmFtZSkgLSBkYXRhOwogICAgICAgICBvdmVybGF5TGVuZ3RoID0gZmFtaWx5TmFtZUxlbmd0
aDsKICAgICB9CiAgICAgZW90SGVhZGVyLmFwcGVuZEJpZ0VuZGlhblN0cmluZyhmdWxsTmFtZSwg
ZnVsbE5hbWVMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDBjMGMxMzcyMDNk
ZjM2Y2Y1NzU1ZjEyZjQ5Yjk1NjIzNjJmMjRjNTIuLjczMzZhMjM1MWNhNzg4ZWI2ODlhMDJlZGRl
MzA3OTgwMWNhMmFlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTY3LDcgKzY3LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb24KICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEo
aGRjLCB0YWJsZSwgMCwgMCwgMCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YShz
aXplKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JE
IHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwg
c2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7CiAg
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklG
SW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDY3NWExNzIxZDc1NDY2OGYyNjYwMzc2NGI4
YTAxNDNjY2UyMzc4ODMuLjdjNjAzZmQ4MzU4YzIxNGFjOTE4NGYzMTg5OTcyZmU4NDFiNjFlODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQVZJRklt
YWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCiBib29sIEFWSUZJbWFn
ZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1v
cnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spCisgICAgaWYgKGF2
aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNl
aXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKIAogICAgIGlmIChhdmlmRGVj
b2RlclBhcnNlKG1fYXZpZkRlY29kZXIuZ2V0KCkpICE9IEFWSUZfUkVTVUxUX09LCkBAIC02NCw3
ICs2NCw3IEBAIHZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJ
bmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX2RhdGFQYXJzZWQpIHsKLSAgICAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnko
bV9hdmlmRGVjb2Rlci5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spIHsKKyAgICAgICAgaWYg
KGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykgewogICAgICAgICAgICAgbV9kZWNvZGVy
LT5zZXRGYWlsZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NGYzOWQyYTYyNmFiYjQ0NzFjNjAzYmYwZjYwZDViZjY1
NDk4OTczLi5jNzE3YzQ1ZDMwNTdjMDU1MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIElDT0ltYWdlRGVjb2Rl
cjo6SW1hZ2VUeXBlIElDT0ltYWdlRGVjb2Rlcjo6aW1hZ2VUeXBlQXRJbmRleChzaXplX3QgaW5k
ZXgpCiAgICAgY29uc3QgdWludDMyX3QgaW1hZ2VPZmZzZXQgPSBtX2RpckVudHJpZXNbaW5kZXhd
Lm1faW1hZ2VPZmZzZXQ7CiAgICAgaWYgKChpbWFnZU9mZnNldCA+IG1fZGF0YS0+c2l6ZSgpKSB8
fCAoKG1fZGF0YS0+c2l6ZSgpIC0gaW1hZ2VPZmZzZXQpIDwgNCkpCiAgICAgICAgIHJldHVybiBV
bmtub3duOwotICAgIHJldHVybiBzdHJuY21wKCZtX2RhdGEtPmRhdGEoKVtpbWFnZU9mZnNldF0s
ICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CisgICAgcmV0dXJuIG1lbWNtcCgmbV9kYXRhLT5k
YXRhKClbaW1hZ2VPZmZzZXRdLCAiXHg4OVBORyIsIDQpID8gQk1QIDogUE5HOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDlhNDcwZWJhYTExYTEyODg1YjYwM2U1M2Zl
OGE4NGYxM2M3NjM5ZGUuLmMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFiZDViYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGlj
OgogICAgICAgICBhdXRvIGJ5dGVzVG9Vc2UgPSBkYXRhLnNpemUoKSAtIGJ5dGVzVG9Ta2lwOwog
ICAgICAgICBtX3JlYWRPZmZzZXQgKz0gYnl0ZXNUb1VzZTsKICAgICAgICAgbV9jdXJyZW50QnVm
ZmVyU2l6ZSA9IG1fcmVhZE9mZnNldDsKLSAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZywg
bV9pbmZvLCByZWludGVycHJldF9jYXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDxjaGFyKj4oZGF0
YS5kYXRhKCkgKyBieXRlc1RvU2tpcCkpLCBieXRlc1RvVXNlKTsKKyAgICAgICAgcG5nX3Byb2Nl
c3NfZGF0YShtX3BuZywgbV9pbmZvLCByZWludGVycHJldF9jYXN0PHBuZ19ieXRlcD4oY29uc3Rf
Y2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkgKyBieXRlc1RvU2tpcCkpLCBieXRlc1RvVXNlKTsK
ICAgICAgICAgLy8gV2UgZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzdXBlcmNsYXNzIGVuY29kZWRE
YXRhU3RhdHVzKCkgYmVjYXVzZSB3ZQogICAgICAgICAvLyBtZXJlbHkgd2FudCB0byBjaGVjayBp
ZiB3ZSd2ZSBtYW5hZ2VkIHRvIHNldCB0aGUgc2l6ZSwgbm90CiAgICAgICAgIC8vIChyZWN1cnNp
dmVseSkgdHJpZ2dlciBhZGRpdGlvbmFsIGRlY29kaW5nIGlmIHdlIGhhdmVuJ3QuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiYTM1NWYwY2VmYWI1N2QyMzc4MWUxYmI2ZWYx
NzM3MTViMWEzOTg1Li4wMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lk
IFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBh
IGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRh
dGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5j
b25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKLSAg
ICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHByb3RlY3RlZERhdGEtPmRhdGEoKSksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OworICAgIFdl
YlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRh
LT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERl
bXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3Rh
dGUpOwogICAgIGlmICghZGVtdXhlcikgewpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgV0VCUElt
YWdlRGVjb2Rlcjo6cGFyc2VIZWFkZXIoKQogICAgIGlmIChtX2RhdGEtPnNpemUoKSA8IHdlYnBI
ZWFkZXJTaXplKQogICAgICAgICByZXR1cm47IC8vIEF3YWl0IFZQOFggaGVhZGVyIHNvIFdlYlBE
ZW11eFBhcnRpYWwgc3VjY2VlZHMuCiAKLSAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5zaXpl
KCkgfTsKKyAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVt
dXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0
ZSk7CiAgICAgaWYgKCFkZW11eGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDYwMzc1
ZGU1YmNkY2I0NzZhZTBlZjQxNzVjZTcxYjFlMWQ2MTU1ZmYuLjA1NDQyOGQ1MGRjNjFhYWFkNTE4
ODc5ZDIyY2JjMmY5Nzc5MTUwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0xMDgsNyAr
MTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpID0gMDsK
IAogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudC5oCmluZGV4IDlmNmRkODBmMjVhMWUwNjc1NWRhMWFjOTg3ZWFlODg5ZGY5ZjI3
NDIuLmRkMDVlZjBmYmQzZTczMDk3NDM1MDVhY2NjMDEwMTRlZjRkOWM1MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6
ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNpemVfdCkgPSAw
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgK
aW5kZXggNDEyNDdmNjg0Zjc2MDkwYTZkMmJlMjUwYTU1ODg2NGNjZjA0MjE1Ny4uYzljOTNiYTYw
MTE4ZjkxOWQxMTYwMjkzMmRhZTgzZDc5OTQ2N2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyLCBSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTdHJpbmdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKFJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVj
cmVhc2luZyhSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIHNpemVfdCkgPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suY3BwCmluZGV4IGQwMzAwNTM2ZWQ5MzBmYmY5YzIwMmJiOTcyNjEwZDRjNWY4OWE4
YzQuLjkzYmQ5NjJkNGRlYWQ0MDM5ZTVkMDE1NDdiNTU4MjA4ZDllZWVhNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2s6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
azo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2suaAppbmRleCA0YTUxMDkyYmM0MWYyY2Y5ZjdmM2QwNGYyNzdhNzVjMjk0
ZTFjYWE1Li5lMDcwYmRiMTNlODcyNTg3YzUzZTA0ZjQ5NjE3ZmVkNTU5YTBhODliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKIAogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYp
IGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7
CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQq
IG1fY2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggZDJlZWJkZWQ5NWRlNzVjYzA5NDU5
ZTNiMWIwNjE5NmRiNmU2MTNmYi4uMzJkZDhjMDhlMjE5MDZmNGEyZDhmMmE4YzMwYzdlYTVhYTk1
MjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVGaWxl
UGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBU
aHIKICAgICBmb3IgKGF1dG8mIHBhcnQgOiBmaWxlUGF0aHNPckRhdGFCdWZmZXJzKSB7CiAgICAg
ICAgIGlmIChwYXJ0LnNlY29uZC5kYXRhKCkpIHsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBw
YXJ0LnNlY29uZC5kYXRhKCktPnNpemUoKTsKLSAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29u
ZC5kYXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAo
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcGFydC5zZWNvbmQuZGF0YSgpLT5kYXRhKCks
IGxlbmd0aCkgIT0gbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
d3JpdGluZyBhIEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUiKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmluZGV4IGI3N2Y5MDA3ODE5ZmZlYzI5NWI2MDUyOTQ4YWU5OTRkYWUy
NDYxZGYuLjNlNzRhNmEwNGVmMDVhNzlkMmNiMTQxYWE4YzNhZWRmZDJmNDMzMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHZl
Y3RvcikKICAgICByZXR1cm4gY3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwog
fQogCi1SZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoVmVjdG9yPGNoYXI+JiYgdmVjdG9y
KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3Rv
cikKIHsKICAgICBhdXRvIGRhdGEgPSBjcmVhdGUoKTsKICAgICBkYXRhLT5tX2VsZW1lbnRzLmFw
cGVuZChXVEZNb3ZlKHZlY3RvcikpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHVuc2lnbmVkIEZvcm1E
YXRhOjppbWFnZU9yTWVkaWFGaWxlc0NvdW50KCkgY29uc3QKIHVpbnQ2NF90IEZvcm1EYXRhRWxl
bWVudDo6bGVuZ3RoSW5CeXRlcyhjb25zdCBGdW5jdGlvbjx1aW50NjRfdChjb25zdCBVUkwmKT4m
IGJsb2JTaXplKSBjb25zdAogewogICAgIHJldHVybiBzd2l0Y2hPbihkYXRhLAotICAgICAgICBb
XSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICBbXSAoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihieXRlcy5zaXplKCkpOwogICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICBpZiAoZmlsZURhdGEu
ZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQpAQCAtMTY0LDcgKzE2NCw3
IEBAIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVudDo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiBGb3Jt
RGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAogewogICAg
IHJldHVybiBzd2l0Y2hPbihkYXRhLAotICAgICAgICBbXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBi
eXRlcykgeworICAgICAgICBbXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAg
ICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChWZWN0b3IgeyBieXRlcy5kYXRhKCksIGJ5
dGVzLnNpemUoKSB9KTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5j
b2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxl
bWVudChmaWxlRGF0YS5pc29sYXRlZENvcHkoKSk7CkBAIC0xNzgsMTIgKzE3OCwxMiBAQCB2b2lk
IEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewog
ICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1fZWxlbWVudHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0
b3I8Y2hhcj4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEpKSB7Ci0gICAgICAgICAgICB2ZWN0b3It
PmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7CisgICAg
ICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KG1fZWxl
bWVudHMubGFzdCgpLmRhdGEpKSB7CisgICAgICAgICAgICB2ZWN0b3ItPmFwcGVuZChzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQotICAgIG1fZWxlbWVudHMuYXBwZW5kKFZlY3RvciB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplIH0pOworICAgIG1fZWxlbWVudHMuYXBw
ZW5kKFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9KTsK
IH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQpA
QCAtMjg0LDEyICsyODQsMTIgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kTm9uTXVsdGlQYXJ0S2V5
VmFsdWVQYWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEmIGZvcm1EYXRhLAogICAgIGFwcGVuZERh
dGEoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwogfQogCi1WZWN0b3I8
Y2hhcj4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZvcm1EYXRh
OjpmbGF0dGVuKCkgY29uc3QKIHsKICAgICAvLyBDb25jYXRlbmF0ZSBhbGwgdGhlIGJ5dGUgYXJy
YXlzLCBidXQgb21pdCBhbnkgZmlsZXMuCi0gICAgVmVjdG9yPGNoYXI+IGRhdGE7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykg
ewotICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+Pihl
bGVtZW50LmRhdGEpKQorICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVj
dG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgZGF0YS5hcHBlbmQodmVj
dG9yLT5kYXRhKCksIHZlY3Rvci0+c2l6ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGRhdGE7CkBA
IC0yOTgsNyArMjk4LDcgQEAgVmVjdG9yPGNoYXI+IEZvcm1EYXRhOjpmbGF0dGVuKCkgY29uc3QK
IFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIGJ5
dGVzID0gZmxhdHRlbigpOwotICAgIHJldHVybiBMYXRpbjFFbmNvZGluZygpLmRlY29kZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcy5kYXRhKCkpLCBieXRlcy5zaXplKCkpOwor
ICAgIHJldHVybiBMYXRpbjFFbmNvZGluZygpLmRlY29kZShieXRlcy5kYXRhKCksIGJ5dGVzLnNp
emUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnlJ
bXBsKiBibG9iUmVnaXN0cnksIEZvcm1EYXRhJiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCkBA
IC0zNDcsNyArMzQ3LDcgQEAgUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwKIAogICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgc3dpdGNoT24oZWxlbWVudC5kYXRh
LAotICAgICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAg
ICAgICBbJl0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgICAg
ICBuZXdGb3JtRGF0YS0+YXBwZW5kRGF0YShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAg
ICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
JiBmaWxlRGF0YSkgewogICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFu
Z2UoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVEYXRhLmZpbGVTdGFydCwgZmlsZURhdGEuZmlsZUxl
bmd0aCwgZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CkBAIC00MTAsNyAr
NDEwLDcgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmICghV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCisgICAgICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKaW5kZXggOGYyMjEwMmZiYzNhZjJhMGEwN2E4Y2E1YzI5MTFlMTA1YmJkYzY0ZC4u
NWJmZjY1YTYzNmMzMTc1NTI5ZTI0ZGMxMzY1MTA4Y2YyYjZhZjc0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzgsMTIgKzM4LDEyIEBAIGNsYXNz
IFRleHRFbmNvZGluZzsKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHN0cnVjdCBFbmNv
ZGVkRmlsZURhdGE7CiAgICAgc3RydWN0IEVuY29kZWRCbG9iRGF0YTsKLSAgICB1c2luZyBEYXRh
ID0gVmFyaWFudDxWZWN0b3I8Y2hhcj4sIEVuY29kZWRGaWxlRGF0YSwgRW5jb2RlZEJsb2JEYXRh
PjsKKyAgICB1c2luZyBEYXRhID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEVuY29kZWRGaWxl
RGF0YSwgRW5jb2RlZEJsb2JEYXRhPjsKIAogICAgIEZvcm1EYXRhRWxlbWVudCgpID0gZGVmYXVs
dDsKICAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoRGF0YSYmIGRhdGEpCiAgICAgICAgIDog
ZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVj
dG9yPGNoYXI+JiYgYXJyYXkpCisgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3Rvcjx1
aW50OF90PiYmIGFycmF5KQogICAgICAgICA6IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQogICAg
IEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFy
dCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsgZmls
ZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZSB9KSB7IH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IHZvaWQqLCBzaXplX3QpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBDU3RyaW5nJik7Ci0gICAg
c3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKKyAgICBzdGF0aWMg
UmVmPEZvcm1EYXRhPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIHN0YXRpYyBSZWY8
Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICBzdGF0aWMgUmVmPEZv
cm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAgICAgc3RhdGljIFJlZjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IERPTUZvcm1EYXRhJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVS
TEVuY29kZWQpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNv
bnN0IFVSTCYgYmxvYlVSTCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Y2hhcj4gZmxh
dHRlbigpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1
aW50OF90PiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCiAgICAgU3RyaW5nIGZsYXR0
ZW5Ub1N0cmluZygpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcwogCiAgICAgLy8gUmVzb2x2ZSBhbGwg
YmxvYiByZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2ZSBmaWxlIGFuZCBkYXRhLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CmluZGV4IGZiYTAyMzNiZWZhMmNkNGMxNjE0ZjcwNTZiNGIwNzUzNzkzMWVjZWYuLmI2MzM3ZDU2
Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8q
ZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVk
RGF0YUxlbmd0aCovKSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5jcHAKaW5kZXggNDYwMzE1OTRkM2FkNTVlNjI3NDcwOWJlODZjNTI1ZTI5ZWMyZWNm
Ny4uNGMwNDIxMGM1YTUxM2FjM2Y1NDcxNDZkOWY4NWM4MmJkODgxMzc3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVIKICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKK3ZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQogewot
ICAgIG1fZGF0YS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIFN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKaW5kZXgg
ODgxMDM4Yzg3ZDFiYzlmNDE2YmExMTYzNWUzYjQxNDVjOGQ4ODBhOS4uNjgzOGU5ZDhjZjQzNzk2
ZDJmMzk0YmExZjU0ZjA5ZDBiNjdlOGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaApAQCAtNjYsNyAr
NjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVz
b3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9y
bURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGE2ZjJiNzNjMTdkZmNmODYyODRjOGM1ZGU1
NjIwNmE5YTUwODc0Y2QuLmY2YjJhMTg1NzkyYjk4ZTI0OGQxNWYwNzYwOGQ2ZGJjYzg3MGVmMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBGb3JtU3Ry
ZWFtRmllbGRzIHsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5pbmdFbGVtZW50
czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgogICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGN1
cnJlbnRTdHJlYW07CiAgICAgbG9uZyBsb25nIGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgfTsKLSAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0
b3JNYWxsb2M+IGN1cnJlbnREYXRhOworICAgIE1hbGxvY1B0cjx1aW50OF90LCBXVEY6OlZlY3Rv
ck1hbGxvYz4gY3VycmVudERhdGE7CiAgICAgQ0ZSZWFkU3RyZWFtUmVmIGZvcm1TdHJlYW0geyBu
dWxscHRyIH07CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0cmVhbUxlbmd0aCB7IDAgfTsKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50IHsgMCB9OwpAQCAtMTM4LDEwICsxMzgsMTAg
QEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9y
bSkKICAgICBGb3JtRGF0YUVsZW1lbnQmIG5leHRJbnB1dCA9IGZvcm0tPnJlbWFpbmluZ0VsZW1l
bnRzLmxhc3QoKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IHN3aXRjaE9uKG5leHRJbnB1dC5kYXRh
LAotICAgICAgICBbZm9ybV0gKFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgW2Zvcm1d
IChWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ5
dGVzLnNpemUoKTsKLSAgICAgICAgICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxv
Yz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsKLSAgICAgICAgICAgIGZvcm0tPmN1cnJl
bnRTdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weSgwLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YS5nZXQoKSksIHNpemUsIGtDRkFsbG9j
YXRvck51bGwpKTsKKyAgICAgICAgICAgIE1hbGxvY1B0cjx1aW50OF90LCBXVEY6OlZlY3Rvck1h
bGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsKKyAgICAgICAgICAgIGZvcm0tPmN1
cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weSgw
LCBkYXRhLmdldCgpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAgICAgICBmb3Jt
LT5jdXJyZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfSwgW2Zvcm1dIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0
YSYgZmlsZURhdGEpIHsKQEAgLTM5NSw4ICszOTUsOCBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQogICAgIC8vIEhh
bmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3
aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7
CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFt
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFy
Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih2ZWN0
b3ItPmRhdGEoKSksIHZlY3Rvci0+c2l6ZSgpKSk7CisgICAgICAgIGlmIChhdXRvKiB2ZWN0b3Ig
PSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnRzWzBdLmRhdGEpKSB7CisgICAg
ICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCB2ZWN0b3It
PmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpKTsKICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhU
VFBSZXF1ZXN0Qm9keShyZXF1ZXN0LCBkYXRhLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDQyMTliYjUzYzIw
NTY5NzUzYjBiMTkyYzNiOTNmMWQ1YWY3ZGVlNTYuLjliZTU4NjgyY2FjMzNiYmFhYTllMTg2ZDJh
MzRjNDY0MGI0MTVjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTIzNiw3
ICsyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsCiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJh
dG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA5ZDAwNTU4MWFkZWMwY2M0YzY1OGQ4Y2Vl
NzRmYWI1ZDBhNzJkNmI2Li4wNTc2ZWQ4ODEyNDEwODIyNDQ3NmNiNmJiNzU1OGY5NWM5Yzc4NWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU1LDcgKzE1NSw3IEBAIFdFQkNPUkVfRVhQ
T1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0Jl
U2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hv
dWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IGNoYXIqKWRhdGEgbGVuZ3Ro
OihpbnQpbGVuZ3RoOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IHVpbnQ4X3QqKWRh
dGEgbGVuZ3RoOihpbnQpbGVuZ3RoOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KaW5kZXggZGNhYWI3MDUxY2RjMjJjOTkxOWEzNTljZmZhZTY4MWY3YzFjYTM0Zi4u
YTZmNzFhZjQyMGRmOGRiZDNjZDJlMzRmYzAyNzhkNDYwYWQ4YjE5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQpAQCAtNTcwLDcgKzU3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywg
dW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3Ro
ICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBib29sIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9y
bU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91
bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC04NzMsNyArODczLDcg
QEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91
bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KGNvbnN0IGNoYXIqKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoCistICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWlu
dDhfdCopZGF0YSBsZW5ndGg6KGludClsZW5ndGgKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRh
dGEgbGVuZ3RoOmxlbmd0aF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggZTU2NGEwY2U2NjYxNGE0OWExMDMxMzY4ODUxYzRkYTg4MjM1MmE2MS4uYTMwOWMyNThj
ZDlmMTEyZDNiYmNlNmNhYTcxNDgxODM2YTFmYjAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVk
QnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6
OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGFBc0NoYXJQ
dHIoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZt
X2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCmluZGV4IDA1ZDE3NzE3NzUxZTAw
YTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2RiMmUwZGQ5YjQyODBmMjUxNTczZGJhNmI1
YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIHN0b3BPbkVycm9yLCBi
b29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxlSGFuZGxpbmcsIE5GQ05vcm1h
bGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsKICAgICBWZWN0b3I8dWludDhfdD4gZW5j
b2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QgZmluYWwgeyByZXR1cm4g
ZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0aWVzLCBO
RkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDYyOTFiNjQyNDY0ZjI3NWI0NTNiY2M5ZTQwZTFjOWZj
NTA5OWE5NjAuLjg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC01
MCw3ICs1MCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgRFdPUkQgbGFzdEVycm9y
ID0gR2V0TGFzdEVycm9yKCk7CiAKICAgICBpZiAoYnl0ZXNUb1JlYWQgIT0gSU5WQUxJRF9GSUxF
X1NJWkUgfHwgbGFzdEVycm9yID09IE5PX0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIoYnl0ZXNUb1JlYWQpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVz
VG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUo
ZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYm
IGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKICAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggMWYzM2EzYjYxM2NiMDNlYjU4M2U4NTk0YmFh
MDI5MjQwYmY4YWJhYS4uOGVhNDRkY2YyNTZhYjAwNDMxMjkwY2I0ZTY1NTFiODM2MzJjNTlmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgU1ZHVG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNW
R0ZvbnRFbGVtZW50Jik7CiAgICAgYm9vbCBjb252ZXJ0U1ZHVG9PVEZGb250KCk7CiAKLSAgICBW
ZWN0b3I8Y2hhcj4gcmVsZWFzZVJlc3VsdCgpCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlbGVhc2VS
ZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9yZXN1bHQpOwogICAgIH0K
QEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxHbHlwaERhdGE+IG1fZ2x5
cGhzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBHbHlwaD4gbV9nbHlwaE5hbWVUb0luZGV4TWFwOyAv
LyBTVkcgMS4xOiAiSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBnbHlwaCBuYW1lcyBiZSB1bmlxdWUg
d2l0aGluIGEgZm9udC4iCiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxHbHlwaCwgMT4+IG1f
Y29kZXBvaW50c1RvSW5kaWNlc01hcDsKLSAgICBWZWN0b3I8Y2hhcj4gbV9yZXN1bHQ7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fcmVzdWx0OwogICAgIFZlY3RvcjxjaGFyLCAxNz4gbV9lbXB0eUds
eXBoQ2hhclN0cmluZzsKICAgICBGbG9hdFJlY3QgbV9ib3VuZGluZ0JveDsKICAgICBjb25zdCBT
VkdGb250RWxlbWVudCYgbV9mb250RWxlbWVudDsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIGJvb2wg
U1ZHVG9PVEZGb250Q29udmVydGVyOjpjb252ZXJ0U1ZHVG9PVEZGb250KCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZv
bnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIgY29udmVydGVyKGVsZW1lbnQpOwogICAg
IGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUb09URkZvbnRDb252ZXJzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5oCmluZGV4IDg3NTE5MTM0YjcyNjg2M2QwOWNkMTNjYzI4N2FiYzM4NTUyYTRh
NjIuLjg4ZDcyNzI2ODE4NjY3OGI2ZmU2ZjhlNmJiMmJjNDAwYzFjN2QwOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaApAQCAtMzEsNiArMzEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0ZvbnRFbGVtZW50OwogCi1zdGQ6Om9wdGlv
bmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVu
dCYpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRTVkdUb09URkZvbnQo
Y29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDA5NGY0N2Q0NjQwMWQ1OWFj
Yjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNi4uZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZj
ZGNhZDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00
NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkg
ZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUg
ZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAg
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5k
YXRhQXNDaGFyUHRyKCksIGRhdGEoKS0+c2l6ZSgpKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCAyYzkzY2VjMjQ4MzQ3MGQ5
MDM1NGUyNGY0YmIyODYyYjQ3MjA1NjQzLi5mYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1
OWJlYmE1OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0
dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9CiAKLXZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciosIGludCkKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6
OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkKIHsKICAgICBtYXliZURldGVybWluZVN0YXR1
cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDg1NDVmMTk5YTY0ZDI2ZGEyYzU0YTA1MzdkYTA3
NTkxMjU4ZDUyNWUuLjQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAwOTMyOTJlOWZmYmU2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCBhMWY5NDdlYjg3MTIxZDljYzAwN2Q3MjM3YjBjZDdlMTI4MjQwYzI2Li5mYWJi
ZDAzZWIwYWRjMTIwNGUxMDQxYTEwOGUwNWI3NmU0NTQ1NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1
ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewog
ICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGJmOTRmZDQ4Y2FiMTRi
ZDUzNDg5MjE3ZjIwNGJmMjNhODYwNGM1ZTguLjE1YzQ1MTM4MDA1MDRhYjAzZDQ5MTc5YmI1NGU4
MjAwZTJkNDk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNXb3JrZXJG
b250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggZmIwNzJjYzE4YzkxZmUxMTBlNGFk
ZWVhODMzMjg5YzI4M2JiNmRkZS4uZDdjMWFiMjZkYzFkZTIzMjM3ZGI0M2U5OGMxMjM1NDNkMDE5
NjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlmIChtX2ZhaWxlZCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKGRhdGEpOworICAgICAg
ICBsZW4gPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpOwogCiAg
ICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZDMzN2M1MDM2
ZGFjMGY2NzVhMWM5MjNkOGRlNjQzZmYxMzUzM2NiOC4uOGQxYWExYmIxOTE4NWQ0Zjc5YmI2ZmFk
NGU5ZTc0MTgyM2Q2ZjA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcAppbmRleCA4Zjc2MGQ2MmY3ZGIwMDdlNWM0YWJlZDM4YWEwOGNiZWZlMDE2NTEzLi5iMmU5
MTc1YTcwZTY0MDc1MTg2NmM0ZjRhZGVlYjkxYjcyMzVlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhCiAKICAgICBhdXRvIGl0
ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29u
c3QgdWludDhfdCosIHNpemVfdCk+JiB3cml0ZURhdGEpIHsKICAgICAgICAgZm9yIChhdXRvIGl0
ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpOyBpdCAhPSBzY3JpcHQuYnVmZmVyKCktPmVuZCgp
OyArK2l0KQotICAgICAgICAgICAgd3JpdGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGl0LT5zZWdtZW50LT5kYXRhKCkpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIHdyaXRlRGF0YShpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgp
KTsKICAgICB9OwogCiAgICAgaWYgKCFzaG91bGRVc2VGaWxlTWFwcGluZyhzY3JpcHQuYnVmZmVy
KCktPnNpemUoKSkpIHsKQEAgLTk4LDcgKzk4LDcgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3Rv
cmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmEK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgaXRlcmF0ZU92ZXJC
dWZmZXJBbmRXcml0ZURhdGEoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7
Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNzcwNGZlODEzNTA2MTY1MDlh
MjgxNzEzMjJkOWVhZWEzMGU3NWY3My4uZWNmMGE0OWIzMDFkY2Y5MTgzYzFlYWY5ODUwMDYwMDkw
YTQ0MGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDE2LDcg
KzEwMTYsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZURlY29kZXIoKSBjb25zdAogICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
InRleHQvcGxhaW4iLCAiVVRGLTgiKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiB7CiAgICAgaWYg
KG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxl
bihkYXRhKTsKKyAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEpKTsKIAogICAgIGlmICh1c2VEZWNvZGVyKQogICAgICAgICBtX3Jlc3BvbnNlQnVp
bGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCmluZGV4IGMxODU3YzkwNTE1ZjZiZTc3NzBiYzA0Yzk1NjQzNDIzNmFi
NzQ0YTguLjYzZDViMjQwMjhlZGQ3YzI5ZWU3NWI2NDA3OGFmOTYzYjQyYjM4MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNTdlZTVkZWQy
NGJkYTI3NWU1ODZiZGY2MTMyYTUyNDU1YWJhY2M5Ni4uZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUw
MzMzODUwNTlmMzMxMDM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJG
dW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKIAogICAgICAgICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFu
IGVuY29kaW5nIGhlcmUuIE5laXRoZXIgR2Vja28gbm9yIFdpbklFIHJlc3BlY3RzCiAgICAgICAg
IC8vIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhlIEhUVFAgaGVhZGVycy4KLSAgICAgICAg
eG1sRG9jUHRyIGRvYyA9IHhtbFJlYWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxw
dHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBvcHRpb25z
KTsKKyAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbFJlYWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRh
dGFBc0NoYXJQdHIoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAoY29uc3Qg
Y2hhciopdXJpLCAwLCBvcHRpb25zKTsKIAogICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JG
dW5jKDAsIDApOwogICAgICAgICB4bWxTZXRHZW5lcmljRXJyb3JGdW5jKDAsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCmluZGV4IDFkOGRhZGJlNDY3NjE5MmY2NWFlOGUwOGM1NjgxYzZiMGNjZTk3OGYuLmE1NGRj
Mjg5OTgyMDg4MzY2YWU3N2MwNmI0MWU1NDViOWNiMGU2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM1
OSw5ICszNTksOCBAQCBzdGF0aWMgaW50IG1hdGNoRnVuYyhjb25zdCBjaGFyKikKIGNsYXNzIE9m
ZnNldEJ1ZmZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
T2Zmc2V0QnVmZmVyKFZlY3RvcjxjaGFyPiBidWZmZXIpCisgICAgT2Zmc2V0QnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
Ci0gICAgICAgICwgbV9jdXJyZW50T2Zmc2V0KDApCiAgICAgewogICAgIH0KIApAQCAtMzc3LDgg
KzM3Niw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPGNoYXI+IG1f
YnVmZmVyOwotICAgIHVuc2lnbmVkIG1fY3VycmVudE9mZnNldDsKKyAgICBWZWN0b3I8dWludDhf
dD4gbV9idWZmZXI7CisgICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0IHsgMCB9OwogfTsKIAog
c3RhdGljIGJvb2wgZXh0ZXJuYWxFbnRpdHlNaW1lVHlwZUFsbG93ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggZDNlNjE2MWJkMmJkY2Y4ZWFmMzAx
MDdjNTM2YmVkNGIyN2UwOWMwOC4uMjA4NzM3MzllMDUzNGRkYTZhNDgyMjI0MTRhYWM3MTY0NjQw
OGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1Rv
QmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxC
eXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQoY29uc3QgY2hhciogZGF0YSwgaW50NjRfdCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQ2NF90IGxlbmd0aCkK
IHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRo
aXMsIGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1MjliNjdkMTc3ODA5MzRlODM1OWMwMDBh
NDEzNmFlOTkwNTAyNjRjLi45YjQwNzAxY2Y1MzI5ODk1ZTQxYjg0MzRmMDE1ZjY5OWQ0MGQzOTBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAg
ICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3Qs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50NjRfdCk7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludDY0X3QpOwogICAgIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggZmVjNjVjZjYyYjY2NzRiODMwMGM1MGNk
NDMzNDE1ZTkxNTExNDQwMC4uMTNmMTc0ZTQ5MzEwMDFmZWJhZWNhNmFjYzFkZWQ5MWQxZTMxOGNh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllciBpZGVuCiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc291cmNlLT5kYXRhUmVjZWl2ZWQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgcmVz
b3VyY2UtPmRhdGFSZWNlaXZlZChkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDM3YjI1NGI5MGUwNDFl
N2UwMjMyNjY1M2QwOWNmMDJjYWFhZDRkZTkuLjFjMDg2Y2EwZDA2ZTg5MTI0NDE2MjI2MTBlMDdk
ZTkyOGU4MjliN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01NzAsNyArNTcw
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgogICAgIH0sIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGJvZHkgPSB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5zaXplKCkgfTsKKyAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKaW5kZXggZmZhOTEwNGNkNWNkNjFhZjE2ZDRjYzA4MjJhMDdkNzMyYjIwZjAx
Ni4uOGE1OWEzNTY2ZDQ2ZWUzMzI1ZTU3MWE4YWU3ZGQ5NzA5YzQxNGEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFz
U3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwg
ZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKICAgICBpZiAobV9idWZmZXIp
Ci0gICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVm
ZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgICAgIGJvZHkgPSB7IG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKIAogICAgIHJldHVybiB7IG1fa2V5LCBt
X3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bEN1cmwuY3BwCmluZGV4IDNiZjE2NjM1MTQ4YjRmYzQxMDRkZTdlMTBhNWYzNmE5MzA1MGQ1YTEu
LmZhNzZhYzc2MmVhZGFhMDdiMTQzNzU4YTU1MmNhYjBiY2JhMzQ5MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3Vy
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxDdXJsLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIElPQ2hhbm5lbDo6d3Jp
dGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlJiBxdWV1ZSwgRnVu
Y3RpbwogewogICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gewogICAgICAgICBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVEZXNj
cmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwot
ICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlRGVzY3JpcHRv
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSk7CisgICAgICAgIGludCBlcnIgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVEZXNj
cmlwdG9yLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBlcnIgPSBlcnIgPCAw
ID8gZXJyIDogMDsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5oCmluZGV4IDc2MWMwNWNmNmQ2ZTY5MmYyNzE2ZmFjNmMzNGNkYzkzNjFlOGM1OGMu
LjgwYmFjNGIyODljMGI1NzQxMTMxODQ1YTVkMzA2ZTZhZjhmODJmZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
aApAQCAtMTk0LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogICAgIENTdHJpbmcgbV9zbmlmZmVkQ29udGVudFR5cGU7Ci0gICAgVmVjdG9yPGNo
YXI+IG1fcmVhZEJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9yZWFkQnVmZmVyOwogICAg
IHVpbnQ2NF90IG1fYm9keURhdGFUb3RhbEJ5dGVzU2VudCB7IDAgfTsKICAgICBHUmVmUHRyPEdG
aWxlPiBtX2Rvd25sb2FkRGVzdGluYXRpb25GaWxlOwogICAgIEdSZWZQdHI8R0ZpbGU+IG1fZG93
bmxvYWRJbnRlcm1lZGlhdGVGaWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA4MzQ2ZTM5ZTg3YTRkMDU4MjUzZmVjZWE2NzFjMTMy
ZTQ3NjllMWI5Li5kZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAt
NDMsNyArNDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2VnbWVudC5zZWdt
ZW50LT5kYXRhKCkpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CisgICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50
LnNlZ21lbnQtPnNpemUoKSwgMSk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29w
eT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggYzNmMTgzYjJkYjVi
YjU5NGMzMDljZDg5YjcyMDIwZWEwMWFkMjFhNy4uN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYz
YTZlM2RmMTgzMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDRiMjBj
ODVhYzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYuLmNiZDA0ZDk5YjdjMjcxNjcxYzg3
NTJiMThhOTJlNDIxNTg1NmM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgdm9p
ZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgU3QKIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiB7Ci0gICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlE
LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KTsKKyAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtNTA3LDcgKzUwNyw3IEBA
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmCiAgICAgaWYgKG1fcGx1Z2luQ2FuY2VsZWRNYW51YWxT
dHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5OjptYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKaW5kZXggZGE4MjA0NjRmOTNjNjA0Y2U4Njk3OWI2NWQ2YWU2NzZmMWZjMDBiMi4u
YmZmMWQxN2ZhNmE3M2Q5ZTlkYzA4MGVjOTUxOWE2ZDNjY2MwNDhmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKICAg
ICAgICAgVHlwZSB0eXBlID0gVHlwZTo6RGF0YTsKIAogICAgICAgICAvLyBEYXRhLgotICAgICAg
ICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKICAg
ICAgICAgLy8gRmlsZS4KICAgICAgICAgU3RyaW5nIGZpbGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdl
MGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNy4uMDg3ODhjODJmMmEzNjY2YmQxNTVkZmMzZTQ1NmIw
YmJlNTEwMmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIC8v
IG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVt
b3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgogICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICpidWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVsZW1lbnQu
c2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEpOworICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxl
bWVudC5zZWdtZW50LT5zaXplKCksIDEpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC0zMDYxLDcgKzMwNjEsNyBAQCBzdGF0aWMgU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShjb25z
dCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CiAK
ICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpLT5zZWdtZW50Owot
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8
Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVu
dC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAo
IXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
eyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBmZmVlMDYxMTQ2MGJjMWVkYmFkYWFkYTc5ZDhkZWY4
NmRmMjk5NDdmLi41YTE4MGJlZWQxMmY1Y2RjZGZiYWU2NzAyZTY5M2I5ZWE2ZTBhODQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ygog
fQogdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgZnVuY3Rp
b24pCiB7Ci0gICAgZnVuY3Rpb24ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgZnVuY3Rpb24oZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTU3NCw3ICs1NzQsNyBAQCB2
b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lv
bihjb25zdCBXVEY6OlN0cmluZyYgaQogICAgIGlmIChmaWxlID09IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBp
bnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9OwotICAgIGF1dG8gYnl0ZXNXcml0dGVu
ID0gd3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmludmFs
aWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOworICAgIGF1dG8gYnl0ZXNXcml0dGVu
ID0gd3JpdGVUb0ZpbGUoZmlsZSwgJmludmFsaWRIZWFkZXIsIHNpemVvZihpbnZhbGlkSGVhZGVy
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXpl
b2YoaW52YWxpZEhlYWRlcikpOwogICAgIGNsb3NlRmlsZShmaWxlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZTczNTdkMTEyNTBkNjBl
YzhjODM4YTg3MDgxNzBlMWYyYzY4ZjVkZC4uMWUxNDljZjIzNzBhNzExNTE2OTk1NGE2NWI5YmM5
ZTI4Yjc3OTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYg
KGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGFBc1VJbnQ4
UHRyKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5j
RGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21w
bGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAg
ICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApp
bmRleCBmMmVkYzVjZjg3YmVhZWNlYjg1ZmViNmMzZTNjOWNlNTE4MjVhYzY5Li43MDhiYjI5Zjhm
NzNkNmVkN2ZjZjY3MzkwYzU4MmMxZmViYWQ1Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJv
eHkuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpk
YXRhU2VudChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lCiAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0
YVNlbnQobV9pZCwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpLCAwKTsKIH0KIAotdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFS
ZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgSVBD
OjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0aCkpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDRkNmE1YWZjM2U1OTVlNWNmZWEzNzBiMjFmN2Vl
OGExMzc0MWUzZTQuLjQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwog
ICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWdu
ZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQp
IGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEuLjQ4NGMwYmVk
MzZiMmZlY2ExZmU4MGViNmRmMmMzMGQwMzBlZDIxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5OCw3
ICsxOTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICht
X2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRh
dGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2Vp
dmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0g
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBkMGNi
NzllNWQxZTY1ZjhlMWJkMTk5YzU0M2RlZDA5MThlODRmNTFhLi43ODQxYThmM2I2OTZhY2Q1ZDFh
OTI0MGQ3ZDFiNTEzZWI5YWM2OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTgsOSArNTgsOSBAQCBOZXR3
b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYlNvYwogICAgIHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1
dG8mIHV0ZjhTdHJpbmcpIHsKICAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3
b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmlu
Zy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwotICAgIH0sIFsmY2hhbm5lbF0o
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5u
b3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRh
LCBieXRlTGVuZ3RoKTsKLSAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVu
Z3RoKTsKKyAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRl
TGVuZ3RoKSB7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSksIGJ5dGVMZW5ndGgpOworICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpO
ZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRh
LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CiAgICAgfSwgWyZjaGFubmVsXShFeGNlcHRp
b25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsKICAgICAgICAgYXV0byBjb2RlID0gc3RhdGljX2Nhc3Q8
aW50PihleGNlcHRpb25Db2RlKTsKICAgICAgICAgY2hhbm5lbC5mYWlsKG1ha2VTdHJpbmcoIkZh
aWxlZCB0byBsb2FkIEJsb2I6IGV4Y2VwdGlvbiBjb2RlID0gIiwgY29kZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAppbmRleCA0OTlkYTE4ZDE3NGZlNzg5
MjhiODczY2E3MmNiN2VlMWFlMGE1ZDlmLi43ZWIxMDc4NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFi
MjgwMDRjYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNw
cApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpz
ZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291CiB7CiAgICAgaWYg
KGF1dG8qIHNvdXJjZSA9IHNvdXJjZUZyb21JZGVudGlmaWVyKHNvdXJjZUlkZW50aWZpZXIpKSB7
CiAgICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7Cisg
ICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgp
KSk7CiAgICAgfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyOjpjaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpCiAK
IHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIGJvb2wgaXNSYXcsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hh
cj4gYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgU3RyaW5nIHRleHQ7
CiAgICAgaWYgKGlzUmF3KQogICAgICAgICBidWZmZXIgPSBkYXRhLnZlY3RvcigpOwpAQCAtMTUx
LDcgKzE1MSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0
YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIKIAogICAgIHBvc3RUYXNrVG9IYW5k
bGVyKGhhbmRsZXJJZGVudGlmaWVyLCBbaXNSYXcsIHRleHQgPSBXVEZNb3ZlKHRleHQpLmlzb2xh
dGVkQ29weSgpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKGF1dG8mIGhhbmRsZXIpIG11dGFi
bGUgewogICAgICAgICBpZiAoaXNSYXcpCi0gICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVS
YXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGhhbmRs
ZXIuZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV1RGTW92ZSh0ZXh0KSk7CiAgICAgfSk7CkBAIC0yMzAs
OSArMjMwLDkgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdEYXRhKFcKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0
YSB7IGlkZW50aWZpZXIsIGZhbHNlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih0ZXh0LmRhdGEoKSksIHRleHQubGVuZ3RoKCkgfSB9
LCAwKTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2
ZURhdGEgeyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhKSwgc2l6ZSAgfSB9LCAwKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7
IGRhdGEsIHNpemUgIH0gfSwgMCk7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXIuaAppbmRleCA2ZDEyYjdjMzVmMDA0YTQ3YzU1NGZkYjE1ZWUyMzlkZTYy
YjM1MGNlLi5mOGMwNWU1Mzc0MTdkNzk0ZDVhNjE1ZTc4OGUxZTZhZWRhMGE3MzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxTdGF0ZSkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIq
LCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3IoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIHNpemVfdCkgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAwMDY3ODk5MDkzMmM0MzgyYmI2MWZm
MDA0OTg0YzRiMzk5MGZiNGU3Li4zZGM5MjhkYzU3YTk3ZDAyYzkyODQ1MzMxMWNmMzFjYmYyYjg1
YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC0yMTksNyArMjE5
LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVmZmVyKGJvb2wgaXNGaWxlLCBjb25zdCBj
aGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAgICAgICAgaWYgKCFmaWxlQ29udGVudHMp
CiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKLSAgICAgICAgcG9z
dEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+ZGF0YSgpOworICAgICAgICBwb3N0QnVmZmVyID0gZmls
ZUNvbnRlbnRzLT5kYXRhQXNDaGFyUHRyKCk7CiAgICAgICAgIHBvc3RCdWZmZXJTaXplID0gZmls
ZUNvbnRlbnRzLT5zaXplKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBOUEFQSSBzcGVjIHN0
YXRlcyB0aGF0IHRoZSBmaWxlIHNob3VsZCBiZSBkZWxldGVkIGhlcmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKaW5kZXggNjE3ZDdkNzZjMGE4YTVlYjlkYmE1N2E4YTgwNmJjNjA4NjI2ZjQ1Yy4u
MDkwZDVhNDBjZWJkNzhjMWVkNzJiYWJhN2JmNmUwNzIzM2IyNWU0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwCiAg
ICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJl
YW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9p
ZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpbjo6c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCkBAIC05MDEs
NyArOTAxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQKICAgICBtX21hbnVhbFN0cmVhbS0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmll
ZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2
b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAg
IEFTU0VSVChtX3Nob3VsZFVzZU1hbnVhbExvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRl
eCAyNDc0OTE0NmQ5MGY0NTVmNjlmNTQzNTk2NGUwYjNiY2EzMWRjY2YyLi5hNTgyYjY2NTJmYTUw
MWQ2ZTc3ZGMyNDI5MDZiNDFkZWEyYjA1ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5
NSwxMiArMTk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3Qo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWls
KHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlk
ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAyYTYwMWNj
MDhiNDBlNzVmOWFlMThhNjI1YTgyYzI2MWZmZDdjMjdlLi5kYmZiOGI2YjgxMWIzNjQ3NGE1ZGU2
YmI2YTdmMzhjNWIwMjUyMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzCiAgICAgc3RhcnQocmVz
cG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5
cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQog
ewogICAgIC8vIERlbGl2ZXJpbmcgdGhlIGRhdGEgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gc3Ry
ZWFtIHRvIGdvIGF3YXkgc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdCBoZXJlLgogICAgIFJl
ZjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0xMTcsNyArMTE3LDcg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3Qg
U3RyaW5nJiByZXN1bHQpCiAgICAgaWYgKCFzdGFydChtX3JlcXVlc3RVUkxTdHJpbmcsIHJlc3Vs
dENTdHJpbmcubGVuZ3RoKCksIDAsICJ0ZXh0L3BsYWluIiwgIiIpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBkZWxpdmVyRGF0YShyZXN1bHRDU3RyaW5nLmRhdGEoKSwgcmVzdWx0Q1N0cmluZy5s
ZW5ndGgoKSk7CisgICAgZGVsaXZlckRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4ocmVzdWx0Q1N0cmluZy5kYXRhKCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICBz
dG9wKE5QUkVTX0RPTkUpOwogfQogCkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6c3RhcnQoY29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWludDMy
X3Qgc3RyZWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAg
dm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb1BsdWdpbigpCiAgICAgfQog
fQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2
ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGlm
IChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAm
JiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBm
aWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMTBjN2YyZDllODc0NjNh
Y2JlNzhmODdkNDNlNTIxZjA4OTkyM2FiZS4uOWIwNzA5OTg4NDcyMDQzMWEzYjEzZTQwMWVlNDg4
ODM4YmE2MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9u
c2VTdGF0dXMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpOwogICAg
IHZvaWQgZGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCk7CiAKQEAgLTczLDkgKzczLDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgbm90aWZ5QW5kRGVzdHJveVN0cmVh
bShOUFJlYXNvbik7CiAKLSAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKTsKICAgICB2b2lkIGRlbGl2ZXJEYXRhVG9QbHVnaW4oKTsKLSAgICB2b2lkIGRl
bGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lk
IGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKIAog
ICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4gbV9wbHVnaW47CiAgICAgdWludDY0X3QgbV9zdHJlYW1J
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAppbmRleCA2Y2RiZWRjZDA4NTcyZTBiNjU5OTg1NDNmZGY0MmYyNTg0MDIyMDVhLi5hNjUzMWI2
NGI5NzczMDZkMGZmZDgyYWNjODJmMjhiMDljZmUwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNzYsMTEgKzE3NiwxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNl
bmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVk
VGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBz
dHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7
CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIG1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5h
bDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExv
YWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5j
ZWxsZWQpIGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2
ZW50JikgZmluYWw7CkBAIC0zNjYsNyArMzY2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7
CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYzAyZjg0
MGM0MDc0ODAxYmQ4NzRmNmNmODMyZTk3Yjg4NDFmNWM0OS4uMTUxM2UwNGVmNGU4NTZmYTg3MmM1
NTI4YTdjYmJkMDcxMWY3ZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
c2NhcGVQbHVnSW5TdAogICAgIH0KIH0KIAotdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVh
bUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
IGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGNvdW50KQordm9pZCBQREZQbHVnaW46OlBE
RlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGNvdW50KQogewog
ICAgIGlmICghbV9wZGZQbHVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTExNjYsNyArMTE2Niw3
IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZXF1ZXN0LT5hZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEpLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7
CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZEZh
aWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpCkBAIC0xNjg0LDE0ICsxNjg0LDE0IEBAIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90CiAgICAg
ICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCiAgICAg
aWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRlcyksIGxlbmd0aCk7CisgICAgQ0ZEYXRhQXBwZW5k
Qnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0cmVhbWVkQnl0ZXMg
Kz0gbGVuZ3RoOwogfQogCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIFBERlBsdWdpbjo6ZW5z
dXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0
YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0
aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXgg
ZDNjN2FjNzA1MTFmYzcyYzg3MDg0YjhhMzc0ZjlkNmM3MjY4NTliMC4uMTM1NWNmZjRlYjc3ZjZm
NzE3ZGI5MjBlMjE0MDU4ZmMxNmIyZmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRo
YXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlk
UmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4K
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1J
RCkgPSAwOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhh
dCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWct
aW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQg
bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBiZmY4MDRiMzg4NWFhNThi
YTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNmLi45Y2VkN2RhMDc1MDJmNjJiYWM2YWY2NzllMTYxMGQ0
ZTY1OWUwN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCkBAIC0zMzAsOSArMzMwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnMK
ICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIHJlc3BvbnNl
VVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBo
ZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKLXZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1E
aWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7
CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIElQQzo6RGF0YVJl
ZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQg
UGx1Z2luUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBA
IC0zNTAsOSArMzUwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl8KICAgICBtX2Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpN
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVh
bUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbklu
c3RhbmNlSUQpOwogfQogCi12b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyksIGxlbmd0aCkp
LCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFu
Y2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRp
bmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
aW5kZXggMDA4YzIwMjE2ZGU1YjdhMTk3ZjFmMjQyNGExMmU1NjEyYzZmZGU0MC4uM2YxYjM5ZWFi
N2RhZTA4MTY4ZGQzYTczOGZlZDJiMGRjMDcxNDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04NywxMSArODcsMTEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVx
dWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQp
IG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjY0YWNhYmRm
NzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcwZWQzMjAyMS4uM2EwOTY4M2VlYzdhYTIxZTYxZGVhMTBj
ODgyOWMzMDc2ODQwN2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIC8vIE5l
dHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0yMzksNyArMjM5LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5z
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJl
c3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVh
bTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2Vp
dmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOwogfQpAQCAtNDA3LDcgKzQwNyw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVN
UyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICAv
LyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXpl
LgogICAgIGlmICghbV9wbHVnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKaW5kZXggODI4ZDMwYTA2ZTlkOGZkZDc4YjU5OGRmOTBhNjYzOTMxZGEw
ZThkMy4uNGExZjVhYzU3YTlkNzc1NGU2NDA3OGY3ZGE0MmI1NzZhMzM0MzlkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzUsNyArNzUs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4g
IW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQg
bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5p
c2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
aW5kZXggODU0MWRmM2NiMjIzOWNhZDhhYzdkNTZmM2U0NjJkMGQ1YTcxZWNiNS4uMGUzNDYzMWFk
NmZjMjQ5MWIzZGIyNzZiM2YxNGZkMDYxY2VlOTYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAKQEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3Jt
RGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIW1fY29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6
ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUg
fSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQog
CiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCA5ZGFhYmUxNGEz
NGIzYzA5ZjI3ZGM4ZGY1NDMwNGVlNzUzMTY5NWUxLi5iZTQzYzBmZGRiNWUxNjI3MWFlYThlNWNj
MjAyZGM3ZTExYTI2OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBA
IC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFudXAoKTsKICAgICAKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAgIHN0cnVjdCBCbG9i
TG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEs
IHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEs
IHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZv
aWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA4MzNjODJjNTRkMzdh
ZTAxNWExODFhN2I5MzI0ZjcwNTMwN2M2OGY0Li5jOGYyNDhhNjQ3NjU3NmEyOTJjNzVkNWZhYTY4
ZjVhYzYzYTQ3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC00
Myw3ICs0Myw3IEBAIHN0YXRpYyBIVFRQQm9keSB0b0hUVFBCb2R5KGNvbnN0IEZvcm1EYXRhJiBm
b3JtRGF0YSkKICAgICAgICAgSFRUUEJvZHk6OkVsZW1lbnQgZWxlbWVudDsKIAogICAgICAgICBz
d2l0Y2hPbihmb3JtRGF0YUVsZW1lbnQuZGF0YSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgVmVj
dG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC50eXBlID0gSFRUUEJvZHk6OkVs
ZW1lbnQ6OlR5cGU6OkRhdGE7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5kYXRhID0gYnl0ZXM7
CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVE
YXRhJiBmaWxlRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWVk
MjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2MjEwMi4uNWRhMmJiOWY0YTJkN2Q0MjNi
ZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC0xMTQ0LDcgKzExNDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7
CkBAIC0xMTgxLDcgKzExODEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBs
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiAwKSwgbWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9h
ZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDkzODZlZmE1OWE1NTU1
NjVlMWE0NjRiYmQ3ODJiNzU0Y2VkODE5NDMuLmFhM2E4NjAxNzU3MjY1NDEzODUyYTRiOWU4OTU2
NGJiNGQxYTNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAg
IHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRh
dGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IDAyOGU4YzZlM2U4ODY0Y2MxNjU1OTBhNDljYmFlZTdkOGJiNmE1YmIuLjJhYzI1ZGNk
MzllNDgwZGY5MzZjNmFlYjc5ZWMyMGFmZWMyZDQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIK
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAv
LyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgotICAgIFZlY3RvcjxjaGFyPiBvdmVycmlkZUJ1
ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBh
c3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9y
T3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVm
ZmVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDQ3ZTNjYTk2ZTkzYzUxNDE4NDJhNzMz
YmFkMTI2NGNiZjE1MjQ5MjEuLmRkYzA3MWIzYTI2YWY4MjhlYzdjNDYzZDUxYzcxMzgwZTU3ZTkw
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgV2ViVVJM
U2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhf
dCogZGF0YSkKICAgICB9CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEpLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0
ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0
YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdU
YXNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IGM1
MzYyNWExODgzOGZkMGQyNzNmNmI0NjRlOTZjMDNhYWNjMDBjMDkuLjE1MjAwZWNkOTE5MjY4YzM0
MDdkOTE5YzA2NjcxOGM5MzI0NjE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFN0cmVhbVdp
dGhSZXNwb25zZShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiAKICAgICAvLyBGSVhNRTogQ2Fu
IHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6
Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IDU3
YWE0YTgyZDZhNjcxODE1ZTQzYmE4MDU5NDg2Yjc1NjVlNTBlNjkuLjA4NjE1ZTQ5ZjUxMzAzYTRm
NTljYWQwNTM5Y2ZmZTdkOWEwNWIwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpzdGFydFN0cmVhbShOU1VSTCAqcmVzcG9uc2VVUkwsIGxvbmcgbG9uZyBleHBlYwog
ICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oW2hlYWRlcnMgYnl0ZXNdKSksIFtoZWFkZXJzIGxlbmd0aF0pOwogfQogICAg
ICAgICAgICAgICAgICAgICAgCi12b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBfV0tQSFN0cmVhbURpZFJlY2Vp
dmVEYXRhKG1faW5zdGFuY2UtPmhvc3RQcm94eSgpLT5wb3J0KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc3RhbmNlLT5wbHVnaW5JRCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9zdHJlYW1JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0X2Nhc3Q8Y2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5
dGVzKSksIGxlbmd0aCk7CiB9CiAgICAgCiB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA3NTQyNjkzODEy
ZTc4YjdmODlhOGUzNDQwMzczMzAwOGFmYzNmMjk1Li5lZDBlMzE0M2VmOGMwNmFjYzk4OGFhMjRh
Yjg4MjdhMzk4ZjViYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6W0pTRGF0YSBsZW5ndGhdCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pOwogICAgICAgICBzdHJlYW0tPnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNl
KHJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOwor
ICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHN0cmVhbS0+
ZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2Fw
ZVBsdWdpblZpZXcubW0KaW5kZXggNzYxMTcxY2VhN2NhNWZhNjcyOGM5ZGMwMGQyZWI3YjJkMThm
Nzc4MC4uNjRjMjc3YjVmNDNkMTUxYmRhNDE1YmVjOWI1OWQ1ZjNjY2ZjMDg1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTE5LDcgKzUxOSw3IEBAIC0g
KHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZERhdGE6KE5TRGF0
YSAqKWRhdGEKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbSogbWFudWFsU3RyZWFtID0gX3Byb3h5LT5tYW51YWxTdHJlYW0oKSkKLSAgICAg
ICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgICAgIG1hbnVhbFN0cmVhbS0+
ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVz
XSksIFtkYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBs
dWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgK
aW5kZXggMmJjOTc4ZDM0MDNmNzNmMWMwNjNkZjI1MjM0M2M1YjgzZWMxMzA2Yy4uMTkzOTBiNWMw
MmE3NWY3OWY5NjZmODFhNDFhMmQ3MDU2NTc4ZjA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95U3RyZWFtV2l0aEVycm9yKE5T
RXJyb3IgKik7CiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCBmODg5MGQwNTE2YjIxMmFjZmU3Njk2
NjQyNWRlNTQ0MTA0YzlhNjk0Li40YjRkZGMwMDRhMjZhM2VhNjQ5YzI2OTE1ODE0ZTU2NjIwYzk1
NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKikKICAgICBkZXN0cm95U3RyZWFtV2l0aFJlYXNvbihOUFJFU19ET05FKTsKIH0KIAot
dm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgYXV0byBk
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCop
Ynl0ZXMgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpp
bmRleCAzM2JhNTdjMTU1ZjE4YTcyMGNmYzc5ZDQ2YWYzNTVkNzhlMDk1ZTljLi5hOGEyZWU4MTcx
YTJkYjhkODJjOGJiMDVhOTlkZDAwNDE2OWVhZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTA1
MSw3ICsxMDUxLDcgQEAgLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJl
Y2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogICAgIH0KIAogICAgIGlmIChfbWFudWFsU3RyZWFt
LT5wbHVnaW4oKSkKLSAgICAgICAgX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAg
ICAgICAgX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKXBs
dWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVy
cm9yCkBAIC0xMTI3LDcgKzExMjcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdp
blJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAgICAgIAogICAgICAgICBzdHJlYW0tPnN0YXJ0
U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAgc3RyZWFtLT5kaWRS
ZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pTRGF0YSBieXRlc10pLCBb
SlNEYXRhIGxlbmd0aF0pOworICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7
CiAgICAgICAgIHN0cmVhbS0+ZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBiZDUyMjNhMGNlMTUwY2YzNWEyOGI3NTUwNDgwMDRjMWZj
YjU0YWE2Li4xNTJmZGExZjZlZDU3ZTI5OWFkZTM0ZDA3ZWU4ZGJiNGUyYzFlZWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2Fk
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAg
dm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhf
dCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsK
ICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDYzNDIyMDA1ZmVmNGZiMDljZjY3Y2EyM2RmMTAy
Y2E3NGM1ZmY5NWEuLjhlMWIyNDdmZjdhMjFlZTdkYjM4MWM2NDBlMTA2NWFiOGNhYWQyMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGF1
dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToo
dm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIFtkYXRhU291
cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpuc0RhdGEuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNDEzOWJiNWE5MTY4M2U2NWFjYzA4
MjUzYmVjYjNmZGQwYWJjNjNkOS4uZmQzMTAwMzUwMWZmY2MzYzAxYTkyZjk1N2JjMzRjZDJkYmEx
ZjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC05ODIsNyArOTgyLDcgQEAgLSAodm9pZClfY29tbWl0RGF0YTooTlNEYXRhICopZGF0YQogICAg
IGF1dG8qIGRvY3VtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBk
b2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKF9wcml2YXRlLT5zaG91bGRDcmVhdGVS
ZW5kZXJlcnMpOwogCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgY2hhciAqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVu
Z3RoXSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+Y29tbWl0RGF0YSgoY29uc3QgdWludDhfdCopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhd
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDViMWJmYjJk
MzQxNzRjNjhhMmI0MGJkNGM3ZDFhZGI4ZDMyOWQ1ZjkuLjRkMDQwZjU2NDZlYjgyNDFhOTJiYzdj
MmRjNzhmNmRmZDk2ZGFkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTY0
MSw3ICs2NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQogewogICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4YWE3YWEzMWZlODI1ZWM3OTVjZjFiM2UzZmIz
ZTUzYmZlNmI4NzlmLi42ZGFjMGIwNTIxODM5MTY2MjA4OTY0MWY2NWFlOTQyYzI5Yjg5NmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
d2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWNhOGQzOGQ1
MzUzMzg0NzQwOTdiYjQ5MDYwNDUzZTY1MjljOTNhOS4uOTJiN2JkNGIwMjI5YzRlNDNmNTE0NTMw
ZDRiMjU1ZDgwYzUxZTY1NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9m
IFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5z
dGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNv
IGhhdmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4
X3QqYCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBl
IHRvIHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tCdWZmZXIpOgorCiAyMDIxLTA2LTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBhdHRy
aWJ1dGVkQnVuZGxlSWRlbmRpZmllciBhIHByb3BlcnR5IGZvciBXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGluc3RlYWQgb2YgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
YmVjN2QxMTllYTgxOWIwMTk5YTg3M2YwMjA3NjZkNDE5MjAxYWMyYS4uZWE3MzJhOGUwZTBjMjZj
OWQ5MGExMjM1OTQwYWNkZTU3ZTIxNjNhNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7Ci0gICAg
VmVjdG9yPGNoYXI+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0
b3IxKDB4NDAwMCwgJ2InKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMigweDQwMDAsICdjJyk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAnYScpOworICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
MigweDQwMDAsICdjJyk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUt
PnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCitzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkKQogewogICAgIC8vIGV4cGVjdGVkIGlzIG51bGwgdGVybWlu
YXRlZCwgYnVmZmVyIGlzIG5vdC4KICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGV4cGVjdGVk
KTsKQEAgLTE3MSw5ICsxNzEsOSBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCBjaGFy
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cAogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHMxID0g
eydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPGNoYXI+IHMyID0geydlJywgJ2YnLCAn
ZycsICdoJ307Ci0gICAgVmVjdG9yPGNoYXI+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHMzID0geydpJywgJ2onLCAnaycsICdsJ307CiAgICAgCiAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKQEAg
LTIwMCw3ICsyMDAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7Ci0gICAgYXV0byBtYWtlQnVm
ZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8Y2hhcj4+JiYgY29udGVudHMpIHsKKyAgICBhdXRvIG1h
a2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewogICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAo
YXV0byYgY29udGVudCA6IGNvbnRlbnRzKQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShjb250ZW50KSk7CkBAIC0yMDksNyArMjA5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGlzRXF1YWxUbykKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgp
KTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8Y2hhcj4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKKyAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2Mn
LCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7CiAgICAgRVhQRUNU
X0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0p
LmdldCgpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNF
cXVhbFRvKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7Ci0gICAg
VmVjdG9yPGNoYXI+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKICAgICBTdHJpbmcg
cmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwo=
</data>
<flag name="commit-queue"
          id="452123"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430617</attachid>
            <date>2021-06-04 15:01:48 -0700</date>
            <delta_ts>2021-06-04 16:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604150147.patch</filename>
            <type>text/plain</type>
            <size>260204</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDBkYWM3ZmYw
M2NjODQ2ZDE4OTZhMDg4ZjYyNjMwMjg2MTZiZGZhNjkuLmI2ZTY4ZjNjNzI5ZmI0MWM5MjlhNmQx
NzhkYTYwMzk5ZmRjOTFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lk
IEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQo
bV9yZXF1ZXN0SW5GbGlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IDBmMmYw
NDE1NDMxMzIzNTIyM2NkZmZiN2M1YzRjMzY5NGM0ZTkwMzQuLmUxMGQ4ZDkxNmZiMGYyNWZiZWEz
ZjdhYzJhZjU1ZjU3MGIyMGRjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IGVlNGYzNjFkZDA4M2RlNzNjOWM0ZGU4ODE0
MTI0MGFmMTVmYjI5MDMuLjNiOTYwMjEwOTU5NjMyNWEwZDQ3NDMyZTQ2NmY0NWY4MmQxNjEwZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgaW50IEZpbGVIYW5kbGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7
CiAgICAgaWYgKCFvcGVuKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmls
ZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBGaWxlSGFuZGxlOjpwcmludGYoY29u
c3QgY2hhciogZm9ybWF0LCAuLi4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oCmluZGV4IDU4Y2YxNDA0OGQzNTUzMDIwNzdmMWM0ZWQ1MTQ5MjVh
NWM3ZDkxNGMuLjNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IDgyNTg2NTNmMjU1MTgyZjc0ZWNmZDRkODdhYWU5OWFhMTY2M2QxMTEuLjAwNDBh
OGE2MTE4N2ZiMGU0OWU4NmYzMzcwYmI4ZjgyMzc3NWFmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKTsKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIHNpemUpOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQpAQCAtNTIsNyArNTIsNyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJiBk
YXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CkBAIC04MSwxNSArODEsOSBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShmaWxlUGF0aCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFZlY3RvcjxjaGFyPiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KLS8vIEZJWE1FOiBNb3Zl
IHRoZSB3aG9sZSBjbGFzcyBmcm9tIFZlY3RvcjxjaGFyPiB0byBWZWN0b3I8dWludDhfdD4gYW5k
IG1ha2UgdGhpcyBlZmZpY2llbnQsIHJlcGxhY2luZyB0aGUgVmVjdG9yPGNoYXI+IHZlcnNpb24g
YWJvdmUuCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
IHsgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSB9KTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdApAQCAtMTAyLDcgKzk2LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb21iaW5lZERhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBj
b21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NpemUpOwogICAgIGZvciAoY29u
c3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCiAgICAgICAgIGNvbWJpbmVkRGF0YS5hcHBl
bmQoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKQEAg
LTExMyw3ICsxMDcsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50
KCkgY29uc3QKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLWNvbnN0
IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTIyLDExICsxMTYsNiBAQCBjb25zdCBjaGFyKiBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmRhdGEoKTsKIH0KIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhQXNVSW50OFB0
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSk7Ci19Ci0KIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29t
ZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0
aW9uIDwgbV9zaXplKTsKQEAgLTE1MCw3ICsxMzksNyBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0
b0hleFN0cmluZygpIGNvbnN0CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKCkpLCBzaXplb2YoY2hhcikpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwg
MSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJl
cXVlc3RlZCBzaXplIHdhcyAlenVcbiIsIHNpemUoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTU4LDcgKzE0Nyw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwog
ICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVt
Y3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBz
ZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAg
ICBtZW1jcHkoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9z
aXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7
CiAgICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KIApA
QCAtMTc4LDIyICsxNjcsMTcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
KTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5k
KHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOwogICAgIG1f
c2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCi17Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBsZW5ndGgpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3RvcjxjaGFyPiYm
IGRhdGEpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBh
dXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBAIC0yNDAsMjAgKzIyNCwyMCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwK
KyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLmRh
dGEoKTsgfSwKICNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFS
ZWY+JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEuZ2V0KCkpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENG
RGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0s
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+
JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnX2J5dGVzX2dl
dF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyAgICAgICAgW10oY29uc3QgR1JlZlB0
cjxHQnl0ZXM+JiBkYXRhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiBkYXRhKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLT5kYXRh
KCkpOyB9LAorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBk
YXRhKSB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3Qg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSgpKTsgfQogICAgICk7CiAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTMyNiw3ICszMTAsNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogc2l6
ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFy
PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCisgICAgICAgIFtdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCiAjaWYgVVNFKENGKQog
ICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpOyB9LAogI2VuZGlmCkBAIC0zNTMsNyArMzM3LDcgQEAg
c2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9z
ZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotY29uc3QgY2hh
ciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlZ21lbnQt
PmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQpAQCAtMzY3LDEwICszNTEsMTAg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIobGVuZ3RoICogMyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihsZW5ndGggKiAz
KTsKIAogICAgIC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgotICAgIGNo
YXIqIHAgPSBidWZmZXIuZGF0YSgpOworICAgIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihidWZmZXIuZGF0YSgpKTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkID0gc3RyaW5nLmNoYXJh
Y3RlcnM4KCk7CkBAIC0zODMsNyArMzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgfQogICAgIH0KIAotICAgIGJ1ZmZl
ci5zaHJpbmsocCAtIGJ1ZmZlci5kYXRhKCkpOworICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCA4YWM2OWQ1OTEwMzZmMWY2MDBmZTgzODRmNmZiMjlkOTljN2Uz
MmZiLi41Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsMTQgKzY2LDEzIEBAIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDog
cHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxl
RGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsgfQogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQpA
QCAtOTksOCArOTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFs
bCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5
IGFyZSBub3QgYWxyZWFkeS4KICAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdp
bigpIGFuZCBlbmQoKSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRl
cyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9z
c2libGUuCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGFBc1VJbnQ4UHRyKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKICAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KQEAgLTExMSw5ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHNpemVfdCk7
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBl
bmQoVmVjdG9yPGNoYXI+JiYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAg
ICAgdm9pZCBjbGVhcigpOwogCkBAIC0xMjMsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8g
VG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50
LgogICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERh
dGFTZWdtZW50PiB7CiAgICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYgZGF0YSkKKyAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKQEAgLTE1MCw3ICsx
NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYg
ZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICAg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
ICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtMTY3
LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAKLSAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCisgICAgICAgIFZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+LAogI2VuZGlmCkBAIC0yMDQsOSArMjA0LDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPGNoYXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJik7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmKTsKQEAgLTIzNSw3ICsyMzUsOCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CiAjaWYgVVNFKEZPVU5E
QVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcAppbmRleCBhMjAzZmVlNjE0MjUxM2NjMjJlNmY4OWRjNGM4MjRmYTA3MDJlMDlkLi41
ZTQ0NjZjZDNmMTcxODhhMjdjMGNkZTFlYThhODAxYjAyYTI0N2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC00Miwy
NCArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9i
dWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9zZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5n
dGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUo
ZmFsc2UpCiAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgLCBtX3NlcGFyYXRvcklu
ZGV4KDApCiB7CiB9CiAKIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAg
IDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbigwKQotICAgICwgbV9z
ZWdtZW50KDApCi0gICAgLCBtX3NlZ21lbnRMZW5ndGgoMCkKLSAgICAsIG1fc2VnbWVudEluZGV4
KDApCi0gICAgLCBtX3JlYWNoZWRFbmRPZkZpbGUoZmFsc2UpCi0gICAgLCBtX3NlcGFyYXRvcklu
ZGV4KDApCiB7CiAgICAgc2V0U2VwYXJhdG9yKHNlcGFyYXRvcik7CiB9CkBAIC03NSw3ICs2Myw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnNldFNlcGFyYXRvcihjb25zdCBjaGFy
KiBzZXBhcmF0b3IpCiAgICAgbV9zZXBhcmF0b3IuYXBwZW5kKHNlcGFyYXRvciwgc3RybGVuKHNl
cGFyYXRvcikpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmso
VmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQorYm9vbCBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXRvcikKIHsKICAgICBpZiAobV9yZWFjaGVkRW5kT2ZGaWxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC04Myw3ICs3MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0
CiAgICAgY2h1bmsuY2xlYXIoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB3aGlsZSAo
bV9zZWdtZW50SW5kZXggPCBtX3NlZ21lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgIGNoYXIgY3Vy
cmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKKyAgICAgICAgICAg
IGF1dG8gY3VycmVudENoYXJhY3RlciA9IG1fc2VnbWVudFttX3NlZ21lbnRJbmRleCsrXTsKICAg
ICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyICE9IG1fc2VwYXJhdG9yW21fc2VwYXJhdG9y
SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fc2Vw
YXJhdG9ySW5kZXggPD0gbV9zZXBhcmF0b3Iuc2l6ZSgpKTsKQEAgLTExMiw3ICsxMDAsNyBAQCBi
b29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVu
aywgYm9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewog
ICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICht
X3NlcGFyYXRvckluZGV4ID4gMCkKLSAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBh
cmF0b3IuZGF0YSgpLCBtX3NlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICBjaHVuay5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgp
KSwgbV9zZXBhcmF0b3JJbmRleCk7CiAgICAgICAgICAgICByZXR1cm4gIWNodW5rLmlzRW1wdHko
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMiwxNCArMTEwLDE0IEBAIGJvb2wgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1
ZGVTZXBhcmF0CiAKIFN0cmluZyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rQXNV
VEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAg
ICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAo
IW5leHRDaHVuayhkYXRhLCBpbmNsdWRlU2VwYXJhdG9yKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgcmV0dXJuIGRhdGEuc2l6ZSgpID8gU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFjayhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIDogZW1wdHlTdHJpbmcoKTsKIH0K
IAotc2l6ZV90IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpwZWVrKFZlY3RvcjxjaGFyPiYgZGF0
YSwgc2l6ZV90IHJlcXVlc3RlZFNpemUpCitzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OnBlZWsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIHsKICAg
ICBkYXRhLmNsZWFyKCk7CiAgICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gbV9zZWdtZW50TGVuZ3Ro
IC0gbV9zZWdtZW50SW5kZXgpIHsKQEAgLTE0MSw3ICsxMjksNyBAQCBzaXplX3QgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSkKICAgICBkYXRhLmFwcGVuZChtX3NlZ21lbnQgKyBtX3NlZ21lbnRJbmRleCwgcmVhZEJ5
dGVzQ291bnQpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclBvc2l0aW9uID0gbV9idWZmZXJQb3NpdGlv
biArIG1fc2VnbWVudExlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBzZWdtZW50ID0gMDsKKyAgICBj
b25zdCB1aW50OF90KiBzZWdtZW50ID0gbnVsbHB0cjsKIAogICAgIC8vIExldCdzIHByZXRlbmQg
YWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBz
aG91bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMg
b2YgdGhlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDc1NmVlZTI0NmIwZTJjYWUyMGM3ZWU3Nzc5ZTY1
YzBmOGQ3MzQ2M2MuLmM5ZjViMDZmYjQ2NTZkYzJlYWNkNDA0NDFmZjM0MWUyNWZkNGM3ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aApAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25z
dCBjaGFyKik7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVm
ZmVyIHdhcyByZWFjaGVkLgotICAgIGJvb2wgbmV4dENodW5rKFZlY3RvcjxjaGFyPiYgZGF0YSwg
Ym9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOworICAgIGJvb2wgbmV4dENodW5rKFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpOwogCiAgICAg
Ly8gUmV0dXJucyBhIG51bGwgc3RyaW5nIHdoZW4gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGhhcyBi
ZWVuIHJlYWNoZWQuCiAgICAgU3RyaW5nIG5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFG
YWxsYmFjayhib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFkcyBz
aXplIGJ5dGVzIGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHRoZSBidWZmZXIsIHdpdGhvdXQg
Y2hhbmdpbmcgdGhlIGJ1ZmZlciBwb3NpdGlvbi4KICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYnl0ZXMgcmVhZC4gVGhhdCBudW1iZXIgbWlnaHQgYmUgbGVzcyB0aGFuIHRoZSBzcGVjaWZp
ZWQgc2l6ZSBpZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgc2l6ZV90
IHBlZWsoVmVjdG9yPGNoYXI+Jiwgc2l6ZV90KTsKKyAgICBzaXplX3QgcGVlayhWZWN0b3I8dWlu
dDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7
Ci0gICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgY2hhciogbV9zZWdtZW50
OwotICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGg7Ci0gICAgc2l6ZV90IG1fc2VnbWVudEluZGV4
OworICAgIHNpemVfdCBtX2J1ZmZlclBvc2l0aW9uIHsgMCB9OworICAgIGNvbnN0IHVpbnQ4X3Qq
IG1fc2VnbWVudCB7IG51bGxwdHIgfTsKKyAgICBzaXplX3QgbV9zZWdtZW50TGVuZ3RoIHsgMCB9
OworICAgIHNpemVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBib29sIG1fcmVhY2hlZEVu
ZE9mRmlsZTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3I7Ci0gICAgc2l6ZV90IG1fc2Vw
YXJhdG9ySW5kZXg7CisgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKKyAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleCB7IDAgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5oCmluZGV4IDBiZjBjNGFmYjAxYjVhMWI5OWVhN2M5ZjY2YTMxYzA2MmNlM2FhYTIu
LjA3OTdkZmJlOGQwMThiZTYzNjE3NDRjNThmODkyZGQ1NmVkNjg5YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7
CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDM4NzE3MzhlNWQ1YzA1
M2NiZGIyZDRiYjliNzMwMzgyZmJjYWM0MmUuLjQyOTBkYjEyOGQwMDBhNDBlZWY3MGZkMjk0MWQ2
MzQ0OTA0NmRlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNDUsNyArMTQ1
LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQog
Ci12b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjph
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gY29waWVkRGF0YSB7IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoodm9pZCopZGF0YSBs
ZW5ndGg6bGVuZ3RoXSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA1NmE3ODhj
ZDc1MDQ4ZWZkZWNhZWU2NmVjZmFmMGY5NjUwZGM3ODZiLi4wNjhjZGNiMzgzZjQyMzY1YWMzMjY0
ZTIyOWE2ZDYzYmMyYjRhYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDlmOGZhNGJjZTBk
MGY4ODBiYTQzNzUxM2EzMjY2ZjU2ZjVhMDA2MS4uOWQwY2U5MGMwYjAxOTI4MDY1OGU4NzEzOGMx
YzUxZDE3NjQ2Nzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTk0LDcgKzk0
LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwog
fQogCi12b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
OjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJU
KCFbbV9yZXBsYWNlbWVudERhdGEuZ2V0KCkgbGVuZ3RoXSk7CiAgICAgbV9yZXBsYWNlbWVudERh
dGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAxNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0
NzJiNzk4YTZjMzVjLi40NWQxNGFkOTAwMzczYTI3YmYzYjJmMzMyMzgyMmZlOGYzNDE2MjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIGtleUlkc01hcDsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0YS5kYXRh
KCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0
RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAg
IHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVy
biBrZXlJZHM7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCmluZGV4IGUxZTVjMzA0MzU2YzBhYTlkOWMwNTQ1ZDk2YTM1YTY2M2Nk
Yjc4M2UuLjRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IHNpemUuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgICAgICBpZiAoIWJ1
ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkoYnVmZmVyU2l6ZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKICAgICAgICAgbV9waXhl
bHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwogICAgICAgICBjbGVhcigpOwpAQCAtMjA1LDkg
KzIwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1f
cHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHko
KSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7
IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVy
Lm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgbV9waXhlbHNQdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMt
PmRhdGEoKSkpOworICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBpbkJvdW5kcyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAxY2E5NzYzM2Q4NjJiOGRlODMwZmJm
ODJhZTA2YTU4YjE3NjhlNzE5Li40OGRmZGYwZWZkZmI4ZjhiNTU1NmNjMmY2YTY3MWU1OTk2YWQx
ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTU2LDcg
KzU2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5kYXRhQXNVSW50OFB0cigpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
aW5kZXggM2VkNGUwNWM0Mzk0ZGZmNjNhZTVmYzZiYTFlZjFhODA0MjU0M2NiNy4uYTI4ZTYxYzAy
YTcyY2E5Mzg5YTY4NjMyNWI1NDZlMzFjNGMwNDk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKaW5kZXggMWUwZDgwZGZlOTExN2JjYTlhMzk0Mjc4NTE5OGY4MzUwNmRlMzkz
Ny4uYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAt
NjEsMTYgKzYxLDE2IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDMyKFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MzJf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDMyKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICB1aW50MzJfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25s
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCi1zdGF0aWMgYm9v
bCB3cml0ZVVJbnQxNihWZWN0b3I8Y2hhcj4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCitzdGF0
aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFs
dWUpCiB7CiAgICAgdWludDE2X3QgYmlnRW5kaWFuVmFsdWUgPSBodG9ucyh2YWx1ZSk7Ci0gICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8Y2hhcio+KCZiaWdF
bmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOworICAgIHJldHVybiB2ZWN0b3Iu
dHJ5QXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQ4X3QqPigmYmlnRW5kaWFuVmFsdWUp
LCBzaXplb2YoYmlnRW5kaWFuVmFsdWUpKTsKIH0KIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdv
ZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KQEAgLTkzLDcgKzkzLDcgQEAg
Ym9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAjaWYgVVNFKFdPRkYyKQogY2xhc3Mg
V09GRjJWZWN0b3JPdXQgOiBwdWJsaWMgd29mZjI6OldPRkYyT3V0IHsKIHB1YmxpYzoKLSAgICBX
T0ZGMlZlY3Rvck91dChWZWN0b3I8Y2hhcj4mIHZlY3RvcikKKyAgICBXT0ZGMlZlY3Rvck91dChW
ZWN0b3I8dWludDhfdD4mIHZlY3RvcikKICAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0b3IpCiAgICAg
eyB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1f
dmVjdG9yLnRyeVJlc2VydmVDYXBhY2l0eShtX3ZlY3Rvci5zaXplKCkgKyBuKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV92ZWN0b3IuYXBwZW5kKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKSwgbik7CisgICAgICAgIG1fdmVjdG9yLmFwcGVuZChzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIG4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChvZmZzZXQgKyBuID4g
bV92ZWN0b3Iuc2l6ZSgpKQogICAgICAgICAgICAgbV92ZWN0b3IuZ3JvdyhvZmZzZXQgKyBuKTsK
ICAgICAgICAgbV92ZWN0b3IucmVtb3ZlKG9mZnNldCwgbik7Ci0gICAgICAgIG1fdmVjdG9yLmlu
c2VydChvZmZzZXQsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbik7CisgICAgICAg
IG1fdmVjdG9yLmluc2VydChvZmZzZXQsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KSwgbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTIyLDExICsxMjIsMTEg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8Y2hhcj4mIG1fdmVjdG9y
OworICAgIFZlY3Rvcjx1aW50OF90PiYgbV92ZWN0b3I7CiB9OwogI2VuZGlmCiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQpCiti
b29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0x
NDEsNyArMTQxLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3RvcjxjaGFyPiYgc2ZudCkKIAogI2lmIFVTRShXT0ZGMikKICAgICBpZiAoc2lnbmF0dXJl
ID09IGtXb2ZmMlNpZ25hdHVyZSkgewotICAgICAgICBjb25zdCB1aW50OF90KiB3b2ZmRGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQ4X3QqPih3b2ZmLmRhdGEoKSk7CisgICAg
ICAgIGF1dG8qIHdvZmZEYXRhID0gd29mZi5kYXRhKCk7CiAgICAgICAgIGNvbnN0IHNpemVfdCB3
b2ZmU2l6ZSA9IHdvZmYuc2l6ZSgpOwogICAgICAgICBjb25zdCBzaXplX3Qgc2ZudFNpemUgPSB3
b2ZmMjo6Q29tcHV0ZVdPRkYyRmluYWxTaXplKHdvZmZEYXRhLCB3b2ZmU2l6ZSk7CiAKQEAgLTI5
Miw3ICsyOTIsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlciB8fCAhaXNXT0ZGKCpidWZmZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBWZWN0b3I8Y2hhcj4gY29udmVydGVkRm9u
dDsKKyAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdP
RkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCiAgICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4
IDVjMGNhNGZjMjA3ZDIxMGZkMDgwNTRjNGZmYTdlZmNhMzNhMGIxMmQuLjNkNTcwMTA3ZjI4Zjg1
NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzcsNyArMzcsNyBAQCBib29sIGlz
V09GRihTaGFyZWRCdWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxl
IHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBl
eGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSBy
ZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wg
Y29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8Y2hhcj4mIHNmbnQp
OworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5k
IHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8g
Zm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZm
ZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCAzMGNmNzllY2Zk
ZjI1ODJmNTQ1MmFiZjIxMjk2MTI4NTYzM2Y3ODMwLi4yNDc3MjhlNmNiYzA3ZjI4MmZhNThmNTE3
YjhhNmZlMDZlNWIwNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAK
ICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE4KICAgICBtX3BhcmVudC5s
b2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiwgaW50KQordm9p
ZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQogewogICAgIEFTU0VSVCgmcmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSByZXNvdXJjZS5yZXNvdXJjZUJ1
ZmZlcigpKQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFp
bGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0K
QEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9h
ZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IHNpemUpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRl
eCBlZjVlNWZiOWUxMzY0YWY2NzU3ZTUwZjhiOGVmMTcyYmZjMGQ2MTc5Li5hMzQ0YmJlY2RhOWZm
ZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzYsNyArMjM2
LDcgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2
b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLAogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VT
aXplKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBz
aGFyZWRCdWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOworICAgIGF1dG8qIHNvdXJjZSA9IHNoYXJl
ZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247CiAgICAgc2l6ZV90IGFtb3VudCA9IHN0ZDo6bWlu
PHNpemVfdD4oY291bnQsIHNvdXJjZVNpemUgLSBwb3NpdGlvbik7CiAgICAgbWVtY3B5KGJ1ZmZl
ciwgc291cmNlLCBhbW91bnQpOwogICAgIHJldHVybiBhbW91bnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmlu
ZGV4IDNmOGRlMjRlYzE0MjZiYjc3ZDc3Yjg5N2MxMzRmZmFiOWM2NjA4ZWQuLmExZTViNzMyZmIw
YmY0ZTU0MmQ0MWJhOWU4NjlkZjAxZDY1OWUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC03OCw3
ICs3OCw3IEBAIHN0YXRpYyBTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVRJLCBjCiAgICAgQ0dEYXRhQ29uc3VtZXJDYWxs
YmFja3MgY2FsbGJhY2tzID0gewogICAgICAgICBbXSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBi
dWZmZXIsIHNpemVfdCBjb3VudCkgLT4gc2l6ZV90IHsKICAgICAgICAgICAgIGF1dG8gaGFuZGxl
ID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOwot
ICAgICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgICAgIHJldHVybiBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGJ1ZmZlciwgY291bnQpOwogICAgICAgICB9
LAogICAgICAgICBudWxscHRyCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggM2JhNGI4YzkwZWIwZjIxOTA3YTQyOGUzMzdkNDZhODcwMTcx
OWFiZi4uYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTc3NCw3ICs3NzQsNyBA
QCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFy
eUl0ZW0pCiAgICAgaWYgKHJlcXVpcmVkU2l6ZUZvckl0ZW0pCiAgICAgICAgIG1fd3JpdGluZ0Ns
aWVudC0+ZW5jb2RlSXRlbUlubGluZSh0ZW1wb3JhcnlJdGVtLCBsb2NhdGlvbik7CiAgICAgZWxz
ZQotICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0tPmRhdGFBc1VJbnQ4UHRy
KCksIGRhdGFMZW5ndGgpOworICAgICAgICBtZW1jcHkobG9jYXRpb24sIG91dE9mTGluZUl0ZW0t
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAKICAgICBkaWRBcHBlbmREYXRhKGFkZGl0aW9uYWxDYXBh
Y2l0eUZvckVuY29kZWRJdGVtLCBidWZmZXJDaGFuZ2VkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDQ1MGNkYTAzNzc3YTgyZTU0MjViOGZhODFk
Mjg3MGQ1YzNiNjBkMWEuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjYyLDcg
KzI2Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKEZUX0xvYWRfU2ZudF9UYWJsZShm
cmVlVHlwZUZhY2UsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEodGFibGVTaXplKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSh0YWJsZVNpemUpOwogICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0g
dGFibGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVU
eXBlRmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihkYXRhLmRhdGEoKSks
ICZ0YWJsZVNpemUpOwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJs
ZVNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGExNjFj
NDdjNTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJkNTEuLjBkZWE4MGUyYmNhNDc4ZWQ0YzAy
YWUxYTBiMDU2NTRiODRkMjlkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5k
YXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0
YUFzQ2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVj
b2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMs
IGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhy
ZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAppbmRleCAwYjg3OTZhYjdiNDdkOWY4MTEzYmU5NGVjZGE5NjNmZTNjMDBiZjVlLi45
ZDQ5YzlmMzdiZTJlNTRjZGE3NjBhNGRmMjZhNGIzZWRlMzg3N2UwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNjksNyArNjksNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4K
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQ
b2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3Jj
KiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcAppbmRleCA0NDk4MzczNjYxYTdlYjA5OWZiOTg0NTZlOTRhNDFkODRhZGIxYzE2Li4xNzEz
NWExNDFjZDZmYTJjZTZhODcyYzc3MzE5ZTQzM2IzODc2MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1
bmRlci5jcHAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogCiB2
b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAg
IE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNh
dGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0
ZS0+ZGF0YUFzVUludDhQdHIoKSksCisgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9z
eXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKICAgICBjYWxsYmFjayghZXJyb3IgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwog
fQpAQCAtMzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBHU1RfREVCVUcoInBhcnNpbmcgYnVmZmVyIG9mIHNpemUgJXp1IiwgYnVmZmVyLT5zaXpl
KCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiYnVmZmVyIiwgYnVmZmVyLT5kYXRhQXNVSW50OFB0
cigpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgICAgIFN0cmluZ1ZpZXcgcGF5bG9h
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmdWaWV3PiB0eXBl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiOlR5cGU6IiksIDYpOwpAQCAtNDg2LDcg
KzQ4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVD
YWxsYmFjaygpCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2so
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVy
cm9yIik7Ci0gICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhQXNVSW50
OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOworICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwg
bWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYg
Y2hhbGxlbmdlQ2FsbGJhY2sgOiBtX2NoYWxsZW5nZUNhbGxiYWNrcykKICAgICAgICAgY2hhbGxl
bmdlQ2FsbGJhY2soKTsKICAgICBtX2NoYWxsZW5nZUNhbGxiYWNrcy5jbGVhcigpOwpAQCAtNTA3
LDExICs1MDcsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICBtX2luaXREYXRhID0g
SW5pdERhdGEoaW5zdGFuY2UtPmtleVN5c3RlbSgpLCBXVEZNb3ZlKGluaXREYXRhU2hhcmVkQnVm
ZmVyKSk7CiAKICAgICBHU1RfVFJBQ0UoIkdvaW5nIHRvIHJlcXVlc3QgYSBuZXcgc2Vzc2lvbiBp
ZCwgaW5pdCBkYXRhIHNpemUgJXp1IiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0g
ICAgR1NUX01FTURVTVAoImluaXQgZGF0YSIsIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNV
SW50OFB0cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICBHU1RfTUVNRFVN
UCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CiAKICAgICBPcGVuQ0RNU2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxw
dHI7CiAgICAgb3BlbmNkbV9jb25zdHJ1Y3Rfc2Vzc2lvbigmaW5zdGFuY2UtPnRodW5kZXJTeXN0
ZW0oKSwgdGh1bmRlckxpY2Vuc2VUeXBlKGxpY2Vuc2VUeXBlKSwgaW5pdERhdGFUeXBlLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhQXNV
SW50OFB0cigpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90
aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOworICAgICAgICBtX2luaXRE
YXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxs
cHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAg
IGlmICghc2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vz
c2lvbiIpOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERh
dGEucGF5bG9hZCgpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1v
dmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwot
ICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFB
c1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9N
RU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
CiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1f
c2Vzc2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNwb25zZS0+ZGF0YUFzVUludDhQdHIo
KSwgcmVzcG9uc2UtPnNpemUoKSkpCisgICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQu
aXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgpLCByZXNw
b25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKSkKICAgICAgICAgc2Vzc2lvbkZhaWx1cmUo
KTsKIH0KIApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAg
ICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9E
RUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAg
ICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4
UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1Q
KCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtl
X3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpM
aWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2Up
KSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBlODlmYjU5OTg2
MjE1YjlkNWRhZTE3OWQyZDc1OWNlZjc0MTgxNDc2Li5jODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1
MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC04Niw3ICs4Niw3IEBAIHBy
b3RlY3RlZDoKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihwb3NpdGlvbikgLSBidWZmZXIuZGF0YSgpOworICAgICAg
ICBzaXplX3Qgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBvc2l0aW9uKSAt
IGJ1ZmZlci5kYXRhKCk7CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsg
Ly8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IGEwM2U3MWFiMWJjM2IxY2E1MDdjZjM4ZTI3NDE4
N2JlYzBhOWQxOTEuLjRiOGFlNmEwY2Q4NTQ2ZGVmNjZmNzRiOWY2OTc2MjNhZTI0ZDQwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIGdl
dEVPVEhlYWRlcihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwg
c2l6ZV90JiBvdmVybGF5RAogICAgIG92ZXJsYXlMZW5ndGggPSAwOwogCiAgICAgc2l6ZV90IGRh
dGFMZW5ndGggPSBmb250RGF0YS0+c2l6ZSgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBmb250
RGF0YS0+ZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSBmb250RGF0YS0+ZGF0YSgpOwogCiAgICAg
RU9UUHJlZml4KiBwcmVmaXggPSBlb3RIZWFkZXIucHJlZml4KCk7CiAKQEAgLTMzNCw4ICszMzQs
OCBAQCBib29sIGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIqIGZvbnREYXRhLCBFT1RIZWFkZXIm
IGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5RAogCiAgICAgLy8gSWYgcG9zc2libGUsIGVuc3Vy
ZSB0aGF0IHRoZSBmYW1pbHkgbmFtZSBpcyBhIHByZWZpeCBvZiB0aGUgZnVsbCBuYW1lLgogICAg
IGlmIChmdWxsTmFtZUxlbmd0aCA+PSBmYW1pbHlOYW1lTGVuZ3RoICYmIG1lbWNtcChmYW1pbHlO
YW1lLCBmdWxsTmFtZSwgZmFtaWx5TmFtZUxlbmd0aCkpIHsKLSAgICAgICAgb3ZlcmxheVNyYyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGZ1bGxOYW1lKSAtIGRhdGE7Ci0gICAgICAg
IG92ZXJsYXlEc3QgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihmYW1pbHlOYW1lKSAt
IGRhdGE7CisgICAgICAgIG92ZXJsYXlTcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihmdWxsTmFtZSkgLSBkYXRhOworICAgICAgICBvdmVybGF5RHN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZmFtaWx5TmFtZSkgLSBkYXRhOwogICAgICAgICBvdmVybGF5
TGVuZ3RoID0gZmFtaWx5TmFtZUxlbmd0aDsKICAgICB9CiAgICAgZW90SGVhZGVyLmFwcGVuZEJp
Z0VuZGlhblN0cmluZyhmdWxsTmFtZSwgZnVsbE5hbWVMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwCmluZGV4IDBjMGMxMzcyMDNkZjM2Y2Y1NzU1ZjEyZjQ5Yjk1NjIzNjJmMjRjNTIuLjcz
MzZhMjM1MWNhNzg4ZWI2ODlhMDJlZGRlMzA3OTgwMWNhMmFlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YVdpbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb24KICAgICBE
V09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7CiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewotICAg
ICAgICBWZWN0b3I8Y2hhcj4gZGF0YShzaXplKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUs
IDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQgPT0gc2l6ZSk7CiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDY3
NWExNzIxZDc1NDY2OGYyNjYwMzc2NGI4YTAxNDNjY2UyMzc4ODMuLjdjNjAzZmQ4MzU4YzIxNGFj
OTE4NGYzMTg5OTcyZmU4NDFiNjFlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBk
ZWZhdWx0OwogCiBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAg
aWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkgIT0gQVZJ
Rl9SRVNVTFRfT0spCisgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rl
ci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAg
ICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBm
YWxzZTsKIAogICAgIGlmIChhdmlmRGVjb2RlclBhcnNlKG1fYXZpZkRlY29kZXIuZ2V0KCkpICE9
IEFWSUZfUkVTVUxUX09LCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQVZJRkltYWdlUmVhZGVyOjpk
ZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2RhdGFQYXJzZWQpIHsKLSAgICAgICAgaWYg
KGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9S
RVNVTFRfT0spIHsKKyAgICAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVj
b2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykg
ewogICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRGYWlsZWQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NGYzOWQyYTYy
NmFiYjQ0NzFjNjAzYmYwZjYwZDViZjY1NDk4OTczLi5jNzE3YzQ1ZDMwNTdjMDU1MzZlZTYwNTBm
OTM5NzA0NmQxMGRmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE1LDcg
KzMxNSw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SW1hZ2VUeXBlIElDT0ltYWdlRGVjb2Rlcjo6aW1h
Z2VUeXBlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgY29uc3QgdWludDMyX3QgaW1hZ2VPZmZz
ZXQgPSBtX2RpckVudHJpZXNbaW5kZXhdLm1faW1hZ2VPZmZzZXQ7CiAgICAgaWYgKChpbWFnZU9m
ZnNldCA+IG1fZGF0YS0+c2l6ZSgpKSB8fCAoKG1fZGF0YS0+c2l6ZSgpIC0gaW1hZ2VPZmZzZXQp
IDwgNCkpCiAgICAgICAgIHJldHVybiBVbmtub3duOwotICAgIHJldHVybiBzdHJuY21wKCZtX2Rh
dGEtPmRhdGEoKVtpbWFnZU9mZnNldF0sICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CisgICAg
cmV0dXJuIG1lbWNtcCgmbV9kYXRhLT5kYXRhKClbaW1hZ2VPZmZzZXRdLCAiXHg4OVBORyIsIDQp
ID8gQk1QIDogUE5HOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDlh
NDcwZWJhYTExYTEyODg1YjYwM2U1M2ZlOGE4NGYxM2M3NjM5ZGUuLmMxMmM0NTlhNWEzZTViMzUx
YzViY2M2MmJmMDBiOGEyODFiZDViYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBA
IC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIGJ5dGVzVG9Vc2UgPSBkYXRh
LnNpemUoKSAtIGJ5dGVzVG9Ta2lwOwogICAgICAgICBtX3JlYWRPZmZzZXQgKz0gYnl0ZXNUb1Vz
ZTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyU2l6ZSA9IG1fcmVhZE9mZnNldDsKLSAgICAgICAg
cG5nX3Byb2Nlc3NfZGF0YShtX3BuZywgbV9pbmZvLCByZWludGVycHJldF9jYXN0PHBuZ19ieXRl
cD4oY29uc3RfY2FzdDxjaGFyKj4oZGF0YS5kYXRhKCkgKyBieXRlc1RvU2tpcCkpLCBieXRlc1Rv
VXNlKTsKKyAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZywgbV9pbmZvLCByZWludGVycHJl
dF9jYXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkgKyBieXRl
c1RvU2tpcCkpLCBieXRlc1RvVXNlKTsKICAgICAgICAgLy8gV2UgZXhwbGljaXRseSBzcGVjaWZ5
IHRoZSBzdXBlcmNsYXNzIGVuY29kZWREYXRhU3RhdHVzKCkgYmVjYXVzZSB3ZQogICAgICAgICAv
LyBtZXJlbHkgd2FudCB0byBjaGVjayBpZiB3ZSd2ZSBtYW5hZ2VkIHRvIHNldCB0aGUgc2l6ZSwg
bm90CiAgICAgICAgIC8vIChyZWN1cnNpdmVseSkgdHJpZ2dlciBhZGRpdGlvbmFsIGRlY29kaW5n
IGlmIHdlIGhhdmVuJ3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiYTM1
NWYwY2VmYWI1N2QyMzc4MWUxYmI2ZWYxNzM3MTViMWEzOTg1Li4wMmYxYjA5ZGJjNzY1MTYwMWY5
MjJkZGUyOWY4MDVhNjU4NzFlMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShzaXplX3Qg
ZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gV2hlbiBleGVjdXRlZCBp
biB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4g
dGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNp
bmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHBy
b3RlY3QgdGhlIGRhdGEuCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHBy
b3RlY3RlZERhdGEobV9kYXRhKTsKLSAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZERhdGEtPmRhdGEoKSksIHByb3RlY3Rl
ZERhdGEtPnNpemUoKSB9OworICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0
YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBk
ZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFs
KCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwogICAgIGlmICghZGVtdXhlcikgewpAQCAtMjk4
LDcgKzI5OCw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6cGFyc2VIZWFkZXIoKQogICAgIGlm
IChtX2RhdGEtPnNpemUoKSA8IHdlYnBIZWFkZXJTaXplKQogICAgICAgICByZXR1cm47IC8vIEF3
YWl0IFZQOFggaGVhZGVyIHNvIFdlYlBEZW11eFBhcnRpYWwgc3VjY2VlZHMuCiAKLSAgICBXZWJQ
RGF0YSBpbnB1dERhdGEgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0
YS0+ZGF0YSgpKSwgbV9kYXRhLT5zaXplKCkgfTsKKyAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7
IG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRl
bXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwo
JmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CiAgICAgaWYgKCFkZW11eGVyKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCmluZGV4IDYwMzc1ZGU1YmNkY2I0NzZhZTBlZjQxNzVjZTcxYjFlMWQ2MTU1
ZmYuLjA1NDQyOGQ1MGRjNjFhYWFkNTE4ODc5ZDIyY2JjMmY5Nzc5MTUwM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0
YShjb25zdCBDU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25z
dCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCmluZGV4IDlmNmRkODBmMjVhMWUw
Njc1NWRhMWFjOTg3ZWFlODg5ZGY5ZjI3NDIuLmRkMDVlZjBmYmQzZTczMDk3NDM1MDVhY2NjMDEw
MTRlZjRkOWM1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRl
KFJUQ0RhdGFDaGFubmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0
cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50
SXNEZWNyZWFzaW5nKHNpemVfdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKaW5kZXggNDEyNDdmNjg0Zjc2MDkwYTZkMmJlMjUwYTU1
ODg2NGNjZjA0MjE1Ny4uYzljOTNiYTYwMTE4ZjkxOWQxMTYwMjkzMmRhZTgzZDc5OTQ2N2ZiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9uLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5
U3RhdGUoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBSVENEYXRhQ2hhbm5lbFN0YXRlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKFJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmF3RGF0YShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoUlRDRGF0YUNoYW5uZWxJZGVu
dGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdEVycm9yKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIs
IHNpemVfdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCmluZGV4IGQwMzAwNTM2ZWQ5MzBm
YmY5YzIwMmJiOTcyNjEwZDRjNWY4OWE4YzQuLjkzYmQ5NjJkNGRlYWQ0MDM5ZTVkMDE1NDdiNTU4
MjA4ZDllZWVhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29s
IFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcm
IHN0cmluZykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEs
IHNpemUpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRleCA0YTUxMDkyYmM0
MWYyY2Y5ZjdmM2QwNGYyNzdhNzVjMjk0ZTFjYWE1Li5lMDcwYmRiMTNlODcyNTg3YzUzZTA0ZjQ5
NjE3ZmVkNTU5YTBhODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtNDEsNyArNDEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIGJvb2wgc2VuZFN0
cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29u
c3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5k
ZXggZDJlZWJkZWQ5NWRlNzVjYzA5NDU5ZTNiMWIwNjE5NmRiNmU2MTNmYi4uMzJkZDhjMDhlMjE5
MDZmNGEyZDhmMmE4YzMwYzdlYTVhYTk1MjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0yODcsNyArMjg3LDcg
QEAgc3RhdGljIGJvb2wgd3JpdGVGaWxlUGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBUaHIKICAgICBmb3IgKGF1dG8mIHBhcnQgOiBmaWxlUGF0
aHNPckRhdGFCdWZmZXJzKSB7CiAgICAgICAgIGlmIChwYXJ0LnNlY29uZC5kYXRhKCkpIHsKICAg
ICAgICAgICAgIGludCBsZW5ndGggPSBwYXJ0LnNlY29uZC5kYXRhKCktPnNpemUoKTsKLSAgICAg
ICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVu
Z3RoKSB7CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcGFy
dC5zZWNvbmQuZGF0YSgpLT5kYXRhKCksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CiAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgd3JpdGluZyBhIEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGI3N2Y5MDA3ODE5
ZmZlYzI5NWI2MDUyOTQ4YWU5OTRkYWUyNDYxZGYuLjNlNzRhNmEwNGVmMDVhNzlkMmNiMTQxYWE4
YzNhZWRmZDJmNDMzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0
ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHZlY3RvcikKICAgICByZXR1cm4gY3JlYXRlKHZlY3Rvci5k
YXRhKCksIHZlY3Rvci5zaXplKCkpOwogfQogCi1SZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVh
dGUoVmVjdG9yPGNoYXI+JiYgdmVjdG9yKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKICAgICBhdXRvIGRhdGEgPSBjcmVhdGUoKTsK
ICAgICBkYXRhLT5tX2VsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOwpAQCAtMTQyLDcg
KzE0Miw3IEBAIHVuc2lnbmVkIEZvcm1EYXRhOjppbWFnZU9yTWVkaWFGaWxlc0NvdW50KCkgY29u
c3QKIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVudDo6bGVuZ3RoSW5CeXRlcyhjb25zdCBGdW5jdGlv
bjx1aW50NjRfdChjb25zdCBVUkwmKT4mIGJsb2JTaXplKSBjb25zdAogewogICAgIHJldHVybiBz
d2l0Y2hPbihkYXRhLAotICAgICAgICBbXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgewor
ICAgICAgICBbXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRlcy5zaXplKCkpOwogICAgICAgICB9LCBb
XSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAg
ICAgICAgICAgICBpZiAoZmlsZURhdGEuZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5k
T2ZGaWxlKQpAQCAtMTY0LDcgKzE2NCw3IEBAIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVudDo6bGVu
Z3RoSW5CeXRlcygpIGNvbnN0CiBGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29s
YXRlZENvcHkoKSBjb25zdAogewogICAgIHJldHVybiBzd2l0Y2hPbihkYXRhLAotICAgICAgICBb
XSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICBbXSAoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChW
ZWN0b3IgeyBieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSB9KTsKICAgICAgICAgfSwgW10gKGNv
bnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChmaWxlRGF0YS5pc29sYXRlZENvcHkoKSk7CkBA
IC0xNzgsMTIgKzE3OCwxMiBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIW1fZWxlbWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB2
ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEp
KSB7Ci0gICAgICAgICAgICB2ZWN0b3ItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgc2l6ZSk7CisgICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9p
ZjxWZWN0b3I8dWludDhfdD4+KG1fZWxlbWVudHMubGFzdCgpLmRhdGEpKSB7CisgICAgICAgICAg
ICB2ZWN0b3ItPmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIG1fZWxlbWVudHMu
YXBwZW5kKFZlY3RvciB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXpl
IH0pOworICAgIG1fZWxlbWVudHMuYXBwZW5kKFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgc2l6ZSB9KTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lKQpAQCAtMjg0LDEyICsyODQsMTIgQEAgdm9pZCBGb3JtRGF0
YTo6YXBwZW5kTm9uTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRE9NRm9ybURhdGEm
IGZvcm1EYXRhLAogICAgIGFwcGVuZERhdGEoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0
YS5zaXplKCkpOwogfQogCi1WZWN0b3I8Y2hhcj4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAor
VmVjdG9yPHVpbnQ4X3Q+IEZvcm1EYXRhOjpmbGF0dGVuKCkgY29uc3QKIHsKICAgICAvLyBDb25j
YXRlbmF0ZSBhbGwgdGhlIGJ5dGUgYXJyYXlzLCBidXQgb21pdCBhbnkgZmlsZXMuCi0gICAgVmVj
dG9yPGNoYXI+IGRhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogbV9lbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RG
OjpnZXRfaWY8VmVjdG9yPGNoYXI+PihlbGVtZW50LmRhdGEpKQorICAgICAgICBpZiAoYXV0byog
dmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAg
ICAgICAgICAgZGF0YS5hcHBlbmQodmVjdG9yLT5kYXRhKCksIHZlY3Rvci0+c2l6ZSgpKTsKICAg
ICB9CiAgICAgcmV0dXJuIGRhdGE7CkBAIC0yOTgsNyArMjk4LDcgQEAgVmVjdG9yPGNoYXI+IEZv
cm1EYXRhOjpmbGF0dGVuKCkgY29uc3QKIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5n
KCkgY29uc3QKIHsKICAgICBhdXRvIGJ5dGVzID0gZmxhdHRlbigpOwotICAgIHJldHVybiBMYXRp
bjFFbmNvZGluZygpLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcy5k
YXRhKCkpLCBieXRlcy5zaXplKCkpOworICAgIHJldHVybiBMYXRpbjFFbmNvZGluZygpLmRlY29k
ZShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEJs
b2JSZXNvbHZlZChCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnksIEZvcm1EYXRhJiBmb3Jt
RGF0YSwgY29uc3QgVVJMJiB1cmwpCkBAIC0zNDcsNyArMzQ3LDcgQEAgUmVmPEZvcm1EYXRhPiBG
b3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdp
c3RyeUltcGwKIAogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAg
ICAgc3dpdGNoT24oZWxlbWVudC5kYXRhLAotICAgICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8
Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMpIHsKICAgICAgICAgICAgICAgICBuZXdGb3JtRGF0YS0+YXBwZW5kRGF0YShieXRlcy5k
YXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRh
RWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgICAgIG5l
d0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVEYXRhLmZp
bGVTdGFydCwgZmlsZURhdGEuZmlsZUxlbmd0aCwgZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSk7CkBAIC00MTAsNyArNDEwLDcgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0
aEluQnl0ZXMoKSBjb25zdAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7
Ci0gICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8Y2hhcj4+KGVsZW1l
bnQuZGF0YSkpCisgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWlu
dDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggOGYyMjEwMmZiYzNhZjJhMGEw
N2E4Y2E1YzI5MTFlMTA1YmJkYzY0ZC4uNWJmZjY1YTYzNmMzMTc1NTI5ZTI0ZGMxMzY1MTA4Y2Yy
YjZhZjc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApA
QCAtMzgsMTIgKzM4LDEyIEBAIGNsYXNzIFRleHRFbmNvZGluZzsKIHN0cnVjdCBGb3JtRGF0YUVs
ZW1lbnQgewogICAgIHN0cnVjdCBFbmNvZGVkRmlsZURhdGE7CiAgICAgc3RydWN0IEVuY29kZWRC
bG9iRGF0YTsKLSAgICB1c2luZyBEYXRhID0gVmFyaWFudDxWZWN0b3I8Y2hhcj4sIEVuY29kZWRG
aWxlRGF0YSwgRW5jb2RlZEJsb2JEYXRhPjsKKyAgICB1c2luZyBEYXRhID0gVmFyaWFudDxWZWN0
b3I8dWludDhfdD4sIEVuY29kZWRGaWxlRGF0YSwgRW5jb2RlZEJsb2JEYXRhPjsKIAogICAgIEZv
cm1EYXRhRWxlbWVudCgpID0gZGVmYXVsdDsKICAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQo
RGF0YSYmIGRhdGEpCiAgICAgICAgIDogZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBleHBs
aWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yPGNoYXI+JiYgYXJyYXkpCisgICAgZXhwbGljaXQg
Rm9ybURhdGFFbGVtZW50KFZlY3Rvcjx1aW50OF90PiYmIGFycmF5KQogICAgICAgICA6IGRhdGEo
V1RGTW92ZShhcnJheSkpIHsgfQogICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICA6IGRh
dGEoRW5jb2RlZEZpbGVEYXRhIHsgZmlsZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0aCwgZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSB9KSB7IH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IHZvaWQq
LCBzaXplX3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0
ZShjb25zdCBDU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKFZlY3Rv
cjxjaGFyPiYmKTsKKyAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hh
cj4mKTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+Jik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IERPTUZvcm1EYXRh
JiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8Y2hhcj4gZmxhdHRlbigpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcworICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRz
IGZpbGVzCiAgICAgU3RyaW5nIGZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0OyAvLyBvbWl0cyBmaWxl
cwogCiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiByZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2ZSBm
aWxlIGFuZCBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGZiYTAyMzNiZWZhMmNkNGMxNjE0ZjcwNTZi
NGIwNzUzNzkzMWVjZWYuLmI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0
ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKaW5kZXggNDYwMzE1OTRkM2FkNTVl
NjI3NDcwOWJlODZjNTI1ZTI5ZWMyZWNmNy4uNGMwNDIxMGM1YTUxM2FjM2Y1NDcxNDZkOWY4NWM4
MmJkODgxMzc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
eW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgdm9p
ZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3Vy
Y2VIYW5kbGUqLCBSZXNvdXJjZVIKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lk
IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5n
dGgqLykKK3ZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKQogewotICAgIG1fZGF0YS5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBsZW5ndGgpOwogfQogCiB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmgKaW5kZXggODgxMDM4Yzg3ZDFiYzlmNDE2YmExMTYzNWUzYjQxNDVj
OGQ4ODBhOS4uNjgzOGU5ZDhjZjQzNzk2ZDJmMzk0YmExZjU0ZjA5ZDBiNjdlOGFiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0
YUxlbmd0aCovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGE2
ZjJiNzNjMTdkZmNmODYyODRjOGM1ZGU1NjIwNmE5YTUwODc0Y2QuLmY2YjJhMTg1NzkyYjk4ZTI0
OGQxNWYwNzYwOGQ2ZGJjYzg3MGVmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0cnVjdCBGb3JtU3RyZWFtRmllbGRzIHsKICAgICBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiByZW1haW5pbmdFbGVtZW50czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgogICAgIFJldGFp
blB0cjxDRlJlYWRTdHJlYW1SZWY+IGN1cnJlbnRTdHJlYW07CiAgICAgbG9uZyBsb25nIGN1cnJl
bnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgfTsKLSAgICBN
YWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+IGN1cnJlbnREYXRhOworICAgIE1hbGxv
Y1B0cjx1aW50OF90LCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERhdGE7CiAgICAgQ0ZSZWFk
U3RyZWFtUmVmIGZvcm1TdHJlYW0geyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IHN0cmVhbUxlbmd0aCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50IHsg
MCB9OwpAQCAtMTM4LDEwICsxMzgsMTAgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJl
YW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICBGb3JtRGF0YUVsZW1lbnQmIG5leHRJbnB1
dCA9IGZvcm0tPnJlbWFpbmluZ0VsZW1lbnRzLmxhc3QoKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9
IHN3aXRjaE9uKG5leHRJbnB1dC5kYXRhLAotICAgICAgICBbZm9ybV0gKFZlY3RvcjxjaGFyPiYg
Ynl0ZXMpIHsKKyAgICAgICAgW2Zvcm1dIChWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ5dGVzLnNpemUoKTsKLSAgICAgICAgICAgIE1hbGxvY1B0
cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsK
LSAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNy
ZWF0ZVdpdGhCeXRlc05vQ29weSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0
YS5nZXQoKSksIHNpemUsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICAgICAgICAgIE1hbGxvY1B0
cjx1aW50OF90LCBXVEY6OlZlY3Rvck1hbGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIo
KTsKKyAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVh
bUNyZWF0ZVdpdGhCeXRlc05vQ29weSgwLCBkYXRhLmdldCgpLCBzaXplLCBrQ0ZBbGxvY2F0b3JO
dWxsKSk7CiAgICAgICAgICAgICBmb3JtLT5jdXJyZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSwgW2Zvcm1dIChjb25zdCBGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKQEAgLTM5NSw4ICszOTUsOCBA
QCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgRm9ybURh
dGEqIGZvcm1EYXRhKQogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBv
bmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRz
ID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYm
ICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9
IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKLSAgICAgICAg
ICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPih2ZWN0b3ItPmRhdGEoKSksIHZlY3Rvci0+c2l6ZSgpKSk7Cisg
ICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KGVs
ZW1lbnRzWzBdLmRhdGEpKSB7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0
YUNyZWF0ZShudWxscHRyLCB2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpKTsKICAgICAg
ICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0LCBkYXRhLmdldCgp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCmluZGV4IDQyMTliYjUzYzIwNTY5NzUzYjBiMTkyYzNiOTNmMWQ1YWY3ZGVlNTYuLjli
ZTU4NjgyY2FjMzNiYmFhYTllMTg2ZDJhMzRjNDY0MGI0MTVjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0KQEAgLTIzNiw3ICsyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsCisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA5
ZDAwNTU4MWFkZWMwY2M0YzY1OGQ4Y2VlNzRmYWI1ZDBhNzJkNmI2Li4wNTc2ZWQ4ODEyNDEwODIy
NDQ3NmNiNmJiNzU1OGY5NWM5Yzc4NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU1
LDcgKzE1NSw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcp
Ynl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0
ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxl
dGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFi
bGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KGNvbnN0IGNoYXIqKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoOworLSAodm9pZClyZXNvdXJjZToo
bnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KGNvbnN0IHVpbnQ4X3QqKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoOwogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNw
b25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZGNhYWI3MDUxY2RjMjJjOTkx
OWEzNTljZmZhZTY4MWY3YzFjYTM0Zi4uYTZmNzFhZjQyMGRmOGRiZDNjZDJlMzRmYzAyNzhkNDYw
YWQ4YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNTcwLDcgKzU3MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAv
KiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBp
bnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTYx
NCw3ICs2MTQsNyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hv
dWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNr
IHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAot
dm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFt
X3Rhc2spCkBAIC04NzMsNyArODczLDcgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICBy
ZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFu
Z2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IGNoYXIqKWRhdGEgbGVuZ3RoOihpbnQp
bGVuZ3RoCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBsZW5ndGg6KGludClsZW5ndGgKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jl
c291cmNlKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEgbGVuZ3RoOmxlbmd0aF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggZTU2NGEwY2U2NjYxNGE0OWExMDMxMzY4ODUx
YzRkYTg4MjM1MmE2MS4uYTMwOWMyNThjZDlmMTEyZDNiYmNlNmNhYTcxNDgxODM2YTFmYjAxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcg
QEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFu
ZGxlLCBidWZmZXItPmRhdGFBc0NoYXJQdHIoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXIt
PnNpemUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Zy5oCmluZGV4IDA1ZDE3NzE3NzUxZTAwYTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2Ri
MmUwZGQ5YjQyODBmMjUxNTczZGJhNmI1YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVu
Z3RoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5n
IGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRl
Y29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBk
ZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5j
b2RhYmxlSGFuZGxpbmcsIE5GQ05vcm1hbGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsK
ICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmlu
ZykgY29uc3QgZmluYWwgeyByZXR1cm4gZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6VVJMRW5jb2RlZEVudGl0aWVzLCBORkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDYyOTFiNjQy
NDY0ZjI3NWI0NTNiY2M5ZTQwZTFjOWZjNTA5OWE5NjAuLjg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYw
NjY3YzUxNWE4YWFjZjg3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKICAgICBpZiAoYnl0
ZXNUb1JlYWQgIT0gSU5WQUxJRF9GSUxFX1NJWkUgfHwgbGFzdEVycm9yID09IE5PX0VSUk9SKSB7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFk
OwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNU
b1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKICAgICAg
ICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggMWYz
M2EzYjYxM2NiMDNlYjU4M2U4NTk0YmFhMDI5MjQwYmY4YWJhYS4uOGVhNDRkY2YyNTZhYjAwNDMx
MjkwY2I0ZTY1NTFiODM2MzJjNTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09U
RkZvbnRDb252ZXJzaW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgU1ZHVG9P
VEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50Jik7CiAgICAgYm9vbCBjb252ZXJ0
U1ZHVG9PVEZGb250KCk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gcmVsZWFzZVJlc3VsdCgpCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlbGVhc2VSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdU
Rk1vdmUobV9yZXN1bHQpOwogICAgIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxHbHlwaERhdGE+IG1fZ2x5cGhzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBHbHlwaD4g
bV9nbHlwaE5hbWVUb0luZGV4TWFwOyAvLyBTVkcgMS4xOiAiSXQgaXMgcmVjb21tZW5kZWQgdGhh
dCBnbHlwaCBuYW1lcyBiZSB1bmlxdWUgd2l0aGluIGEgZm9udC4iCiAgICAgSGFzaE1hcDxTdHJp
bmcsIFZlY3RvcjxHbHlwaCwgMT4+IG1fY29kZXBvaW50c1RvSW5kaWNlc01hcDsKLSAgICBWZWN0
b3I8Y2hhcj4gbV9yZXN1bHQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVzdWx0OwogICAgIFZl
Y3RvcjxjaGFyLCAxNz4gbV9lbXB0eUdseXBoQ2hhclN0cmluZzsKICAgICBGbG9hdFJlY3QgbV9i
b3VuZGluZ0JveDsKICAgICBjb25zdCBTVkdGb250RWxlbWVudCYgbV9mb250RWxlbWVudDsKQEAg
LTE1NTMsNyArMTU1Myw3IEBAIGJvb2wgU1ZHVG9PVEZGb250Q29udmVydGVyOjpjb252ZXJ0U1ZH
VG9PVEZGb250KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8
Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQp
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFNWR1RvT1RGRm9udChjb25z
dCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIg
Y29udmVydGVyKGVsZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCmluZGV4IDg3NTE5MTM0YjcyNjg2
M2QwOWNkMTNjYzI4N2FiYzM4NTUyYTRhNjIuLjg4ZDcyNzI2ODE4NjY3OGI2ZmU2ZjhlNmJiMmJj
NDAwYzFjN2QwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRD
b252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uaApAQCAtMzEsNiArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0Zv
bnRFbGVtZW50OwogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RG
Rm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
aW5kZXggMDA5NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNi4uZWNiNmJhZTE2
ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NF
UlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91
bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1s
Iik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdp
bihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRh
dGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEoKS0+c2l6ZSgpKTsK
ICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwog
CiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cAppbmRleCAyYzkzY2VjMjQ4MzQ3MGQ5MDM1NGUyNGY0YmIyODYyYjQ3MjA1NjQzLi5mYzEyN2I3
YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9j
a0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
CiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7
CiB9CiAKLXZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciosIGludCkK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkKIHsK
ICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDg1NDVm
MTk5YTY0ZDI2ZGEyYzU0YTA1MzdkYTA3NTkxMjU4ZDUyNWUuLjQxMWEzMDA5NDdiNTM5ZTI2YWE2
YzY0YTAwOTMyOTJlOWZmYmU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwog
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBhMWY5NDdlYjg3MTIxZDljYzAwN2Q3
MjM3YjBjZDdlMTI4MjQwYzI2Li5mYWJiZDAzZWIwYWRjMTIwNGUxMDQxYTEwOGUwNWI3NmU0NTQ1
NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAg
ICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9p
ZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oCmluZGV4IGJmOTRmZDQ4Y2FiMTRiZDUzNDg5MjE3ZjIwNGJmMjNhODYwNGM1ZTguLjE1YzQ1
MTM4MDA1MDRhYjAzZDQ5MTc5YmI1NGU4MjAwZTJkNDk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5k
ZXggZmIwNzJjYzE4YzkxZmUxMTBlNGFkZWVhODMzMjg5YzI4M2JiNmRkZS4uZDdjMWFiMjZkYzFk
ZTIzMjM3ZGI0M2U5OGMxMjM1NDNkMDE5NjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlm
IChtX2ZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVu
ID0gc3RybGVuKGRhdGEpOworICAgICAgICBsZW4gPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSkpOwogCiAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKaW5kZXggZDMzN2M1MDM2ZGFjMGY2NzVhMWM5MjNkOGRlNjQzZmYxMzUzM2NiOC4u
OGQxYWExYmIxOTE4NWQ0Zjc5YmI2ZmFkNGU5ZTc0MTgyM2Q2ZjA3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3I7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4Zjc2MGQ2MmY3ZGIwMDdlNWM0YWJl
ZDM4YWEwOGNiZWZlMDE2NTEzLi5iMmU5MTc1YTcwZTY0MDc1MTg2NmM0ZjRhZGVlYjkxYjcyMzVl
N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFNjcmlwdEJ1ZmZlciBT
V1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhCiAKICAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhID0gWyZd
KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiB3cml0ZURhdGEp
IHsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpOyBpdCAh
PSBzY3JpcHQuYnVmZmVyKCktPmVuZCgpOyArK2l0KQotICAgICAgICAgICAgd3JpdGVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGl0LT5zZWdtZW50LT5kYXRhKCkpLCBpdC0+
c2VnbWVudC0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHdyaXRlRGF0YShpdC0+c2VnbWVudC0+ZGF0
YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKTsKICAgICB9OwogCiAgICAgaWYgKCFzaG91bGRVc2VG
aWxlTWFwcGluZyhzY3JpcHQuYnVmZmVyKCktPnNpemUoKSkpIHsKQEAgLTk4LDcgKzk4LDcgQEAg
U2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmEKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KICAgICAgICAgaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShoYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgc2l6ZSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggNzcwNGZlODEzNTA2MTY1MDlhMjgxNzEzMjJkOWVhZWEzMGU3NWY3My4uZWNmMGE0OWIz
MDFkY2Y5MTgzYzFlYWY5ODUwMDYwMDkwYTQ0MGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rl
cj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgIHJldHVybiBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKIH0KIAotdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW4pCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEw
MzgsNyArMTAzOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsZW4gPT0g
LTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihkYXRhKTsKKyAgICAgICAgbGVuID0gc3RybGVuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAogICAgIGlmICh1c2VEZWNvZGVy
KQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0
YSwgbGVuKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGMxODU3YzkwNTE1
ZjZiZTc3NzBiYzA0Yzk1NjQzNDIzNmFiNzQ0YTguLjYzZDViMjQwMjhlZGQ3YzI5ZWU3NWI2NDA3
OGFmOTYzYjQyYjM4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xNjAs
NyArMTYwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5
SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKaW5kZXggNTdlZTVkZWQyNGJkYTI3NWU1ODZiZGY2MTMyYTUyNDU1YWJhY2M5Ni4u
ZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgc3Rh
dGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKIAogICAgICAg
ICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFuIGVuY29kaW5nIGhlcmUuIE5laXRoZXIgR2Vja28gbm9y
IFdpbklFIHJlc3BlY3RzCiAgICAgICAgIC8vIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhl
IEhUVFAgaGVhZGVycy4KLSAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbFJlYWRNZW1vcnkoZGF0
YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAoY29u
c3QgY2hhciopdXJpLCAwLCBvcHRpb25zKTsKKyAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbFJl
YWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRhdGFBc0NoYXJQdHIoKSA6IG51bGxwdHIsIGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBvcHRpb25zKTsKIAogICAgICAg
ICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKDAsIDApOwogICAgICAgICB4bWxTZXRHZW5lcmlj
RXJyb3JGdW5jKDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDFkOGRhZGJlNDY3NjE5MmY2NWFlOGUw
OGM1NjgxYzZiMGNjZTk3OGYuLmE1NGRjMjg5OTgyMDg4MzY2YWU3N2MwNmI0MWU1NDViOWNiMGU2
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM1OSw5ICszNTksOCBAQCBzdGF0aWMgaW50IG1hdGNoRnVu
Yyhjb25zdCBjaGFyKikKIGNsYXNzIE9mZnNldEJ1ZmZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT2Zmc2V0QnVmZmVyKFZlY3RvcjxjaGFyPiBidWZmZXIp
CisgICAgT2Zmc2V0QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi0gICAgICAgICwgbV9jdXJyZW50T2Zmc2V0KDApCiAg
ICAgewogICAgIH0KIApAQCAtMzc3LDggKzM3Niw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOwotICAgIHVuc2lnbmVkIG1fY3VycmVudE9m
ZnNldDsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CisgICAgdW5zaWduZWQgbV9jdXJy
ZW50T2Zmc2V0IHsgMCB9OwogfTsKIAogc3RhdGljIGJvb2wgZXh0ZXJuYWxFbnRpdHlNaW1lVHlw
ZUFsbG93ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5k
ZXggZDNlNjE2MWJkMmJkY2Y4ZWFmMzAxMDdjNTM2YmVkNGIyN2UwOWMwOC4uMjA4NzM3MzllMDUz
NGRkYTZhNDgyMjI0MTRhYWM3MTY0NjQwOGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQo
KnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50NjRfdCBsZW5n
dGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1
MjliNjdkMTc3ODA5MzRlODM1OWMwMDBhNDEzNmFlOTkwNTAyNjRjLi45YjQwNzAxY2Y1MzI5ODk1
ZTQxYjg0MzRmMDE1ZjY5OWQ0MGQzOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAg
IHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChjb25zdCBjaGFyKiwgaW50NjRfdCk7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCosIGludDY0X3QpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXgg
ZmVjNjVjZjYyYjY2NzRiODMwMGM1MGNkNDMzNDE1ZTkxNTExNDQwMC4uMTNmMTc0ZTQ5MzEwMDFm
ZWJhZWNhNmFjYzFkZWQ5MWQxZTMxOGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNl
aXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVuCiAgICAgaWYgKCFyZXNvdXJj
ZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc291cmNl
LT5kYXRhUmVjZWl2ZWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZlZChkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwCmluZGV4IDM3YjI1NGI5MGUwNDFlN2UwMjMyNjY1M2QwOWNmMDJjYWFhZDRkZTkuLjFjMDg2
Y2EwZDA2ZTg5MTI0NDE2MjI2MTBlMDdkZTkyOGU4MjliN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNv
ZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAg
IFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0
YSBib2R5LgogICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7Ci0gICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkgfTsKKyAgICAgICAgYm9keSA9IHsgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxs
cHRyX3QmKSB7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggZmZhOTEwNGNkNWNkNjFh
ZjE2ZDRjYzA4MjJhMDdkNzMyYjIwZjAxNi4uOGE1OWEzNTY2ZDQ2ZWUzMzI1ZTU3MWE4YWU3ZGQ5
NzA5YzQxNGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBTdG9yYWdl
OjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgRGF0YSBo
ZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEg
Ym9keTsKICAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpIH07
CisgICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsK
IAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCmluZGV4IDNiZjE2NjM1MTQ4YjRmYzQx
MDRkZTdlMTBhNWYzNmE5MzA1MGQ1YTEuLmZhNzZhYzc2MmVhZGFhMDdiMTQzNzU4YTU1MmNhYjBi
Y2JhMzQ5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcApAQCAtNzksNyArNzks
NyBAQCB2b2lkIElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0
YSwgV29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3RpbwogewogICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBGaWxlU3lz
dGVtOjpzZWVrRmlsZShtX2ZpbGVEZXNjcmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVT
ZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwotICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9maWxlRGVzY3JpcHRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGludCBlcnIgPSBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShtX2ZpbGVEZXNjcmlwdG9yLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBlcnIgPSBlcnIgPCAwID8gZXJyIDogMDsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXJyKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IDc2MWMwNWNmNmQ2ZTY5MmYy
NzE2ZmFjNmMzNGNkYzkzNjFlOGM1OGMuLjgwYmFjNGIyODljMGI1NzQxMTMxODQ1YTVkMzA2ZTZh
ZjhmODJmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIENTdHJpbmcgbV9zbmlmZmVkQ29u
dGVudFR5cGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1fcmVhZEJ1ZmZlcjsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gbV9yZWFkQnVmZmVyOwogICAgIHVpbnQ2NF90IG1fYm9keURhdGFUb3RhbEJ5dGVzU2Vu
dCB7IDAgfTsKICAgICBHUmVmUHRyPEdGaWxlPiBtX2Rvd25sb2FkRGVzdGluYXRpb25GaWxlOwog
ICAgIEdSZWZQdHI8R0ZpbGU+IG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA4MzQ2ZTM5
ZTg3YTRkMDU4MjUzZmVjZWE2NzFjMTMyZTQ3NjllMWI5Li5kZjhlZTMwYzQzYzBmZmY0ZDBlYTZk
OGNlY2UzZmNmNGNiMzNlZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNv
cHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICghYnVmZmVyU2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc2VnbWVudC5zZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNlZ21lbnQtPnNp
emUoKSwgMSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQu
c2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CiB9CiAKIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKaW5kZXggYzNmMTgzYjJkYjViYjU5NGMzMDljZDg5YjcyMDIwZWEwMWFkMjFhNy4uN2Uw
ZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJu
IG1fYnVmZmVyOyB9CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKLSAgICBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsg
fQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuY3BwCmluZGV4IDRiMjBjODVhYzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcy
ZjYuLmNiZDA0ZDk5YjdjMjcxNjcxYzg3NTJiMThhOTJlNDIxNTg1NmM5ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
CkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3QKIAogdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgbV9wbHVnaW4tPnN0cmVh
bURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2
ZURhdGEoc3RyZWFtSUQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1
Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVh
bUlEKQpAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmCiAgICAgaWYg
KG1fcGx1Z2luQ2FuY2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPm1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAK
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggZGE4MjA0NjRmOTNjNjA0Y2U4
Njk3OWI2NWQ2YWU2NzZmMWZjMDBiMi4uYmZmMWQxN2ZhNmE3M2Q5ZTlkYzA4MGVjOTUxOWE2ZDNj
Y2MwNDhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTU5LDcgKzU5LDcg
QEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgVHlwZSB0eXBlID0gVHlwZTo6RGF0YTsKIAog
ICAgICAgICAvLyBEYXRhLgotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAKICAgICAgICAgLy8gRmlsZS4KICAgICAgICAgU3RyaW5nIGZp
bGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNy4uMDg3ODhj
ODJmMmEzNjY2YmQxNTVkZmMzZTQ1NmIwYmJlNTEwMmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3Bw
IGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQg
aXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NTcxLgogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICpidWZmZXIp
Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50
LT5zaXplKCksIDEpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEpOwogI2Vsc2UK
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlC
dWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC0zMDYxLDcgKzMw
NjEsNyBAQCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZl
cigpLT5iZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVt
b3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQt
PnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBz
aGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4o
c2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBmZmVlMDYx
MTQ2MGJjMWVkYmFkYWFkYTc5ZDhkZWY4NmRmMjk5NDdmLi41YTE4MGJlZWQxMmY1Y2RjZGZiYWU2
NzAyZTY5M2I5ZWE2ZTBhODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB0
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248YgogfQogdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpPiYgZnVuY3Rpb24pCiB7Ci0gICAgZnVuY3Rpb24ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgZnVu
Y3Rpb24oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlk
YXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQogICAgIGlmIChm
aWxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICBD
b250ZW50UnVsZUxpc3RNZXRhRGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9
OwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikp
OworICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgJmludmFsaWRIZWFk
ZXIsIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0
ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIGNsb3NlRmls
ZShmaWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKaW5kZXggZTczNTdkMTEyNTBkNjBlYzhjODM4YTg3MDgxNzBlMWYyYzY4ZjVkZC4uMWUxNDlj
ZjIzNzBhNzExNTE2OTk1NGE2NWI5YmM5ZTI4Yjc3OTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7
IG1fc3luY0RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAg
ICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkg
fTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCBmMmVkYzVjZjg3YmVhZWNlYjg1ZmViNmMzZTNj
OWNlNTE4MjVhYzY5Li43MDhiYjI5ZjhmNzNkNmVkN2ZjZjY3MzkwYzU4MmMxZmViYWQ1Njk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhU2VudChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVNlbnQobV9pZCwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVz
VG9CZVNlbnQpLCAwKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFS
ZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZl
ZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCAwKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
OjpEYXRhUmVjZWl2ZWQobV9pZCwgSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0aCkpLCAw
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDRkNmE1
YWZjM2U1OTVlNWNmZWEzNzBiMjFmN2VlOGExMzc0MWUzZTQuLjQ3ZWE4NjY3MWIxM2QxMzk1YzNk
YWQ5YmRhNzlhYmY2MTZjYmExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3
ODIwYTI3OGFmMWRjNmEuLjQ4NGMwYmVkMzZiMmZlY2ExZmU4MGViNmRmMmMzMGQwMzBlZDIxODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3Qg
ZQogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2Nv
cmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpIH0s
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1JlY2Vp
dmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBkMGNiNzllNWQxZTY1ZjhlMWJkMTk5YzU0M2RlZDA5MThlODRm
NTFhLi43ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2OTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtNTgsOSArNTgsOSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNy
ZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvYwogICAgIHJldHVybiB7
IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKICAgICAgICAgY2hhbm5l
bC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRm
OFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBjaGFubmVsLnNl
bmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhT
dHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3Ro
KCkpOwotICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVMZW5n
dGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9w
Q29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgY2hhbm5lbC5z
ZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBD
OjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7CisgICAgICAgIGNoYW5uZWwubm90aWZ5
U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAgICAgICBjaGFubmVs
LnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CiAg
ICAgfSwgWyZjaGFubmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsKICAgICAgICAg
YXV0byBjb2RlID0gc3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsKICAgICAgICAgY2hh
bm5lbC5mYWlsKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIEJsb2I6IGV4Y2VwdGlvbiBjb2Rl
ID0gIiwgY29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNw
cAppbmRleCA0OTlkYTE4ZDE3NGZlNzg5MjhiODczY2E3MmNiN2VlMWFlMGE1ZDlmLi43ZWIxMDc4
NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgc291CiB7CiAgICAgaWYgKGF1dG8qIHNvdXJjZSA9IHNvdXJjZUZyb21JZGVudGlm
aWVyKHNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAg
IHNvdXJjZS0+c2VuZFJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNvdXJj
ZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZv
aWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpjaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
OjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcklk
ZW50aWZpZXIsIGJvb2wgaXNSYXcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsK
LSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGlzUmF3KQogICAgICAgICBidWZmZXIg
PSBkYXRhLnZlY3RvcigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIKIAogICAgIHBvc3RUYXNrVG9IYW5kbGVyKGhhbmRsZXJJZGVudGlmaWVyLCBbaXNSYXcsIHRl
eHQgPSBXVEZNb3ZlKHRleHQpLmlzb2xhdGVkQ29weSgpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cildKGF1dG8mIGhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoaXNSYXcpCi0gICAgICAg
ICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGhhbmRsZXIu
ZGlkUmVjZWl2ZVJhd0RhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV1RGTW92ZSh0
ZXh0KSk7CiAgICAgfSk7CkBAIC0yMzAsOSArMjMwLDkgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdEYXRh
KFcKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZhbHNlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih0ZXh0LmRh
dGEoKSksIHRleHQubGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1v
dGVTb3VyY2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRh
dGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRh
KSwgc2l6ZSAgfSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIHRy
dWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgIH0gfSwgMCk7CiB9CiAKIHZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRE
ZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAppbmRleCA2ZDEyYjdjMzVm
MDA0YTQ3YzU1NGZkYjE1ZWUyMzlkZTYyYjM1MGNlLi5mOGMwNWU1Mzc0MTdkNzk0ZDVhNjE1ZTc4
OGUxZTZhZWRhMGE3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdl
ci5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBkaWRDaGFuZ2VS
ZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxTdGF0ZSkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5l
bElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3IoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBidWZm
ZXJlZEFtb3VudElzRGVjcmVhc2luZyhXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIs
IHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRl
eCAwMDY3ODk5MDkzMmM0MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3Li4zZGM5MjhkYzU3YTk3
ZDAyYzkyODQ1MzMxMWNmMzFjYmYyYjg1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVm
ZmVyKGJvb2wgaXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAg
ICAgICAgaWYgKCFmaWxlQ29udGVudHMpCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9O
T1RfRk9VTkQ7CiAKLSAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+ZGF0YSgpOwor
ICAgICAgICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhQXNDaGFyUHRyKCk7CiAgICAg
ICAgIHBvc3RCdWZmZXJTaXplID0gZmlsZUNvbnRlbnRzLT5zaXplKCk7CiAKICAgICAgICAgLy8g
RklYTUU6IFRoZSBOUEFQSSBzcGVjIHN0YXRlcyB0aGF0IHRoZSBmaWxlIHNob3VsZCBiZSBkZWxl
dGVkIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjE3ZDdkNzZjMGE4YTVlYjlk
YmE1N2E4YTgwNmJjNjA4NjI2ZjQ1Yy4uMDkwZDVhNDBjZWJkNzhjMWVkNzJiYWJhN2JmNmUwNzIz
M2IyNWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtODY2LDcgKzg2Niw3IEBAIHZv
aWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgVVJMJiByZXNwCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVU
eXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lz
U3RhcnRlZCk7CiAgICAgCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQKICAgICBtX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBz
dHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBB
U1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIEFTU0VSVChtX3Nob3VsZFVzZU1hbnVhbExvYWRlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCAyNDc0OTE0NmQ5MGY0NTVmNjlmNTQzNTk2NGUwYjNi
Y2EzMWRjY2YyLi5hNTgyYjY2NTJmYTUwMWQ2ZTc3ZGMyNDI5MDZiNDFkZWEyYjA1ZGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVk
VGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNl
bGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJv
b2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmNwcAppbmRleCAyYTYwMWNjMDhiNDBlNzVmOWFlMThhNjI1YTgyYzI2MWZmZDdjMjdl
Li5kYmZiOGI2YjgxMWIzNjQ3NGE1ZGU2YmI2YTdmMzhjNWIwMjUyMDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzCiAgICAgc3RhcnQocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIERlbGl2ZXJpbmcgdGhlIGRhdGEgY291
bGQgY2F1c2UgdGhlIHBsdWctaW4gc3RyZWFtIHRvIGdvIGF3YXkgc28gd2Uga2VlcCBhIHJlZmVy
ZW5jZSB0byBpdCBoZXJlLgogICAgIFJlZjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gcHJvdGVjdCgq
dGhpcyk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2Vu
ZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgaWYgKCFzdGFydCht
X3JlcXVlc3RVUkxTdHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCksIDAsICJ0ZXh0L3BsYWlu
IiwgIiIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0YShyZXN1bHRDU3RyaW5n
LmRhdGEoKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVsaXZlckRhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0cmluZy5kYXRhKCkpLCByZXN1bHRD
U3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQogCkBAIC0xODcsNyAr
MTg3LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQoY29uc3QgU3RyaW5nJiBy
ZXNwb25zZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQp
OwogCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZl
ckRhdGFUb1BsdWdpbigpCiAgICAgfQogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0
c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAg
IC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKaW5kZXggMTBjN2YyZDllODc0NjNhY2JlNzhmODdkNDNlNTIxZjA4OTkyM2FiZS4uOWIwNzA5
OTg4NDcyMDQzMWEzYjEzZTQwMWVlNDg4ODM4YmE2MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25z
ZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCk7
CiAKQEAgLTczLDkgKzczLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZv
aWQgbm90aWZ5QW5kRGVzdHJveVN0cmVhbShOUFJlYXNvbik7CiAKLSAgICB2b2lkIGRlbGl2ZXJE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRlbGl2ZXJEYXRh
VG9QbHVnaW4oKTsKLSAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKTsKIAogICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4gbV9wbHVnaW47
CiAgICAgdWludDY0X3QgbV9zdHJlYW1JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA2Y2RiZWRjZDA4NTcyZTBiNjU5OTg1NDNm
ZGY0MmYyNTg0MDIyMDVhLi5hNjUzMWI2NGI5NzczMDZkMGZmZDgyYWNjODJmMjhiMDljZmUwMjM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVK
YXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFs
OwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0
YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5h
bDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJl
YW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBi
b29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBmaW5hbDsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91
c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgZmluYWw7CkBAIC0zNjYsNyArMzY2LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBm
aW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KaW5kZXggYzAyZjg0MGM0MDc0ODAxYmQ4NzRmNmNmODMyZTk3Yjg4NDFmNWM0
OS4uMTUxM2UwNGVmNGU4NTZmYTg3MmM1NTI4YTdjYmJkMDcxMWY3ZDJmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTU3
LDcgKzExNTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdAogICAgIH0KIH0KIAotdm9pZCBQ
REZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGNv
dW50KQordm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGNvdW50KQogewogICAgIGlmICghbV9wZGZQbHVnaW4pCiAgICAgICAgIHJl
dHVybjsKQEAgLTExNjYsNyArMTE2Niw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJl
YW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtCiAgICAg
aWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LT5hZGREYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBjb3VudCk7CisgICAgcmVxdWVz
dC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5T
dHJlYW1Mb2FkZXJDbGllbnQ6OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCkBAIC0xNjg0LDE0ICsxNjg0LDE0IEBAIHZvaWQg
UERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYsIHVpbnQzMl90CiAgICAgICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAot
dm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9j
dW1lbnRSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRl
cyhtX2RhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRlcyksIGxl
bmd0aCk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3Ro
KTsKICAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogfQogCkBAIC0xNzI5LDcgKzE3Mjks
NyBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJn
ZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFy
Z2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQg
UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggZDNjN2FjNzA1MTFmYzcyYzg3MDg0YjhhMzc0ZjlkNmM3
MjY4NTliMC4uMTM1NWNmZjRlYjc3ZjZmNzE3ZGI5MjBlMjE0MDU4ZmMxNmIyZmVjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE3NCw3ICsxNzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAg
IC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVh
bSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBk
YXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwog
CiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9h
ZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cAppbmRleCBiZmY4MDRiMzg4NWFhNThiYTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNmLi45Y2VkN2Rh
MDc1MDJmNjJiYWM2YWY2NzllMTYxMGQ0ZTY1OWUwN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0zMzAsOSArMzMwLDkgQEAg
dm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlc3BvbnMKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2Uoc3RyZWFtSUQsIHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RN
b2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXZvaWQgUGx1Z2lu
UHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2lu
Q29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3Ro
KSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZURh
dGEoc3RyZWFtSUQsIElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2lu
SW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRp
bmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC0zNTAsOSArMzUwLDkgQEAgdm9pZCBQbHVnaW5Qcm94
eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl8KICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
UGx1Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5
cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCi12b2lkIFBsdWdpblByb3h5
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkKK3ZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihieXRlcyksIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIG1fY29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJv
eHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywg
bGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggMDA4YzIwMjE2ZGU1YjdhMTk3ZjFmMjQyNGEx
MmU1NjEyYzZmZGU0MC4uM2YxYjM5ZWFiN2RhZTA4MTY4ZGQzYTczOGZlZDJiMGRjMDcxNDRiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBA
IC04NywxMSArODcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlw
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJM
JiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
c3RyZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJl
YW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVy
cmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggYjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcwZWQzMjAyMS4u
M2EwOTY4M2VlYzdhYTIxZTYxZGVhMTBjODgyOWMzMDc2ODQwN2E5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBwcml2YXRlOgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJy
aWRlOwogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJl
Y2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBt
X3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1J
RCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNl
KSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQog
Ci12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2lu
Vmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIG1fcGx1Z2luVmlldy0+
bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgp
OwogfQpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3Bs
dWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1M
ZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCBy
ZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lk
IFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgaW50IGxlbmd0aCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlm
IGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggODI4ZDMwYTA2ZTlk
OGZkZDc4YjU5OGRmOTBhNjYzOTMxZGEwZThkMy4uNGExZjVhYzU3YTlkNzc1NGU2NDA3OGY3ZGE0
MmI1NzZhMzM0MzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVz
dHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVz
dHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAg
ICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2Fk
RGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggODU0MWRmM2NiMjIzOWNhZDhhYzdkNTZmM2U0
NjJkMGQ1YTcxZWNiNS4uMGUzNDYzMWFkNmZjMjQ5MWIzZGIyNzZiM2YxNGZkMDYxY2VlOTYwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEzMCwxMiArMTMw
LDEyIEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZv
cm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZl
RGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwg
bV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaAppbmRleCA5ZGFhYmUxNGEzNGIzYzA5ZjI3ZGM4ZGY1NDMwNGVlNzUzMTY5NWUxLi5i
ZTQzYzBmZGRiNWUxNjI3MWFlYThlNWNjMjAyZGM3ZTExYTI2OWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGNsZWFudXAoKTsKICAgICAKLSAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpOworICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRp
bmcoKTsKIAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXJDbGllbnQgewpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNo
TG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5k
aWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5k
aWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZh
aWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5k
aWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmNwcAppbmRleCA4MzNjODJjNTRkMzdhZTAxNWExODFhN2I5MzI0ZjcwNTMwN2M2OGY0Li5jOGYy
NDhhNjQ3NjU3NmEyOTJjNzVkNWZhYTY4ZjVhYzYzYTQ3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBIVFRQQm9keSB0b0hU
VFBCb2R5KGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSkKICAgICAgICAgSFRUUEJvZHk6OkVsZW1l
bnQgZWxlbWVudDsKIAogICAgICAgICBzd2l0Y2hPbihmb3JtRGF0YUVsZW1lbnQuZGF0YSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICAgICAg
WyZdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgZWxl
bWVudC50eXBlID0gSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkRhdGE7CiAgICAgICAgICAgICAg
ICAgZWxlbWVudC5kYXRhID0gYnl0ZXM7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1E
YXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2
MjEwMi4uNWRhMmJiOWY0YTJkN2Q0MjNiZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFn
ZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5j
b21taXREYXRhKGRhdGEsIGxlbmd0aCk7CkBAIC0xMTgxLDcgKzExODEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRh
KCkgOiAwKSwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDAp
OworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291
cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1l
KCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDkzODZlZmE1OWE1NTU1NjVlMWE0NjRiYmQ3ODJiNzU0Y2VkODE5NDMuLmFhM2E4
NjAxNzU3MjY1NDEzODUyYTRiOWU4OTU2NGJiNGQxYTNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmlu
YWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDAyOGU4YzZlM2U4ODY0Y2MxNjU1OTBhNDlj
YmFlZTdkOGJiNmE1YmIuLjJhYzI1ZGNkMzllNDgwZGY5MzZjNmFlYjc5ZWMyMGFmZWMyZDQ0MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgotICAg
IFZlY3RvcjxjaGFyPiBvdmVycmlkZUJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJp
ZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9h
cmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9h
cmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4
IDQ3ZTNjYTk2ZTkzYzUxNDE4NDJhNzMzYmFkMTI2NGNiZjE1MjQ5MjEuLmRkYzA3MWIzYTI2YWY4
MjhlYzdjNDYzZDUxYzcxMzgwZTU3ZTkwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShz
aXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKICAgICB9CiAKICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplLCAwLCBEYXRhUGF5
bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2
ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsK
ICAgICBwcm9jZXNzTmV4dFBlbmRpbmdUYXNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCmluZGV4IGM1MzYyNWExODgzOGZkMGQyNzNmNmI0NjRlOTZjMDNhYWNj
MDBjMDkuLjE1MjAwZWNkOTE5MjY4YzM0MDdkOTE5YzA2NjcxOGM5MzI0NjE0ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBl
UGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydFN0cmVhbVdpdGhSZXNwb25zZShOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSk7CiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCmluZGV4IDU3YWE0YTgyZDZhNjcxODE1ZTQzYmE4MDU5NDg2Yjc1NjVl
NTBlNjkuLjA4NjE1ZTQ5ZjUxMzAzYTRmNTljYWQwNTM5Y2ZmZTdkOWEwNWIwY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBl
UGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2
b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbShOU1VSTCAqcmVzcG9u
c2VVUkwsIGxvbmcgbG9uZyBleHBlYwogICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxj
aGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oW2hlYWRlcnMgYnl0ZXNdKSksIFto
ZWFkZXJzIGxlbmd0aF0pOwogfQogICAgICAgICAgICAgICAgICAgICAgCi12b2lkIEhvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBIb3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsK
ICAgICBfV0tQSFN0cmVhbURpZFJlY2VpdmVEYXRhKG1faW5zdGFuY2UtPmhvc3RQcm94eSgpLT5w
b3J0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5wbHVnaW5J
RCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJlYW1JRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzKSksIGxlbmd0aCk7CiB9CiAgICAgCiB2b2lkIEhv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbQppbmRleCA3NTQyNjkzODEyZTc4YjdmODlhOGUzNDQwMzczMzAwOGFmYzNmMjk1Li5l
ZDBlMzE0M2VmOGMwNmFjYzk4OGFhMjRhYjg4MjdhMzk4ZjViYTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0
KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGg6W0pTRGF0YSBsZW5n
dGhdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICBzdHJlYW0t
PnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAgc3RyZWFt
LT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pTRGF0YSBieXRl
c10pLCBbSlNEYXRhIGxlbmd0aF0pOworICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAs
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVu
Z3RoXSk7CiAgICAgICAgIHN0cmVhbS0+ZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNzYxMTcxY2VhN2Nh
NWZhNjcyOGM5ZGMwMGQyZWI3YjJkMThmNzc4MC4uNjRjMjc3YjVmNDNkMTUxYmRhNDE1YmVjOWI1
OWQ1ZjNjY2ZjMDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNTE5LDcgKzUxOSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2lu
VmlldyByZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGlmIChIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbSogbWFudWFsU3RyZWFtID0gX3Byb3h5
LT5tYW51YWxTdHJlYW0oKSkKLSAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgw
LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7
CisgICAgICAgIG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lk
KXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAq
KWVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMmJjOTc4ZDM0MDNmNzNmMWMwNjNkZjI1MjM0
M2M1YjgzZWMxMzA2Yy4uMTkzOTBiNWMwMmE3NWY3OWY5NjZmODFhNDFhMmQ3MDU2NTc4ZjA4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAKICAgICAvLyBGSVhNRTogQ2FuIHRo
ZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRl
eCBmODg5MGQwNTE2YjIxMmFjZmU3Njk2NjQyNWRlNTQ0MTA0YzlhNjk0Li40YjRkZGMwMDRhMjZh
M2VhNjQ5YzI2OTE1ODE0ZTU2NjIwYzk1NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTYx
MSw3ICs2MTEsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2Fk
aW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKICAgICBkZXN0cm95U3RyZWFtV2l0aFJl
YXNvbihOUFJFU19ET05FKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKK3ZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlc05vQ29weToodm9pZCopYnl0ZXMgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6
Tk9dKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAzM2JhNTdjMTU1ZjE4YTcyMGNmYzc5ZDQ2YWYz
NTVkNzhlMDk1ZTljLi5hOGEyZWU4MTcxYTJkYjhkODJjOGJiMDVhOTlkZDAwNDE2OWVhZWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgLSAodm9pZClwbHVnaW5WaWV3
OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogICAgIH0K
IAogICAgIGlmIChfbWFudWFsU3RyZWFtLT5wbHVnaW4oKSkKLSAgICAgICAgX21hbnVhbFN0cmVh
bS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURh
dGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxl
bmd0aF0pOwogfQogCiAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVj
ZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCkBAIC0xMTI3LDcgKzExMjcsNyBAQCAtICh2b2lk
KWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1Bs
dWdpblJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAgICAg
IAogICAgICAgICBzdHJlYW0tPnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgp
KTsKLSAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOworICAgICAgICBzdHJlYW0t
PmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5
dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHN0cmVhbS0+ZGlkRmluaXNoTG9hZGlu
ZygwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiZDUyMjNhMGNl
MTUwY2YzNWEyOGI3NTUwNDgwMDRjMWZjYjU0YWE2Li4xNTJmZGExZjZlZDU3ZTI5OWFkZTM0ZDA3
ZWU4ZGJiNGUyYzFlZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1MSw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
Y2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0
ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRp
cmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDYzNDIy
MDA1ZmVmNGZiMDljZjY3Y2EyM2RmMTAyY2E3NGM1ZmY5NWEuLjhlMWIyNDdmZjdhMjFlZTdkYjM4
MWM2NDBlMTA2NWFiOGNhYWQyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0x
MDA1LDcgKzEwMDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxv
Y10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVu
RG9uZTpOT10pOwogICAgIFtkYXRhU291cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpuc0RhdGEu
Z2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggNDEzOWJiNWE5MTY4M2U2NWFjYzA4MjUzYmVjYjNmZGQwYWJjNjNkOS4uZmQzMTAwMzUwMWZm
Y2MzYzAxYTkyZjk1N2JjMzRjZDJkYmExZjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05ODIsNyArOTgyLDcgQEAgLSAodm9pZClfY29tbWl0
RGF0YTooTlNEYXRhICopZGF0YQogICAgIGF1dG8qIGRvY3VtZW50ID0gX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZG9jdW1lbnQoKTsKICAgICBkb2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJz
KF9wcml2YXRlLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMpOwogCi0gICAgX3ByaXZhdGUtPmNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgY2hhciAq
KVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgdWludDhfdCopW2Rh
dGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDViMWJmYjJkMzQxNzRjNjhhMmI0MGJkNGM3ZDFhZGI4ZDMyOWQ1Zjku
LjRkMDQwZjU2NDZlYjgyNDFhOTJiYzdjMmRjNzhmNmRmZDk2ZGFkMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGxvYWRlci0+Y29tbWl0
RGF0YShkYXRhLCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4YWE3
YWEzMWZlODI1ZWM3OTVjZjFiM2UzZmIzZTUzYmZlNmI4NzlmLi42ZGFjMGIwNTIxODM5MTY2MjA4
OTY0MWY2NWFlOTQyYzI5Yjg5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEx
Miw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3Ry
aW5nKCkpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXR0
ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMWNhOGQzOGQ1MzUzMzg0NzQwOTdiYjQ5MDYwNDUzZTY1MjljOTNhOS4u
OTJiN2JkNGIwMjI5YzRlNDNmNTE0NTMwZDRiMjU1ZDgwYzUxZTY1NiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIx
LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZl
Y3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBT
aGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0
ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhhdmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAg
ICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3QqYCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRo
aXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRvIHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tCdWZmZXIp
OgorCiAyMDIxLTA2LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTWFrZSBhdHRyaWJ1dGVkQnVuZGxlSWRlbmRpZmllciBhIHByb3BlcnR5
IGZvciBXS1dlYlZpZXdDb25maWd1cmF0aW9uIGluc3RlYWQgb2YgX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYmVjN2QxMTllYTgxOWIwMTk5YTg3M2YwMjA3NjZkNDE5
MjAxYWMyYS4uZWE3MzJhOGUwZTBjMjZjOWQ5MGExMjM1OTQwYWNkZTU3ZTIxNjNhNiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTEwMyw5ICsxMDMsOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
ckxhcmdlU2VnbWVudHMpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjAoMHg0MDAwLCAnYScp
OwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKLSAgICBWZWN0b3I8Y2hh
cj4gdmVjdG9yMigweDQwMDAsICdjJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0
MDAwLCAnYScpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcjApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKQEAg
LTE2MCw3ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NF
UlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
ciogZXhwZWN0ZWQpCitzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQogewogICAgIC8v
IGV4cGVjdGVkIGlzIG51bGwgdGVybWluYXRlZCwgYnVmZmVyIGlzIG5vdC4KICAgICBzaXplX3Qg
bGVuZ3RoID0gc3RybGVuKGV4cGVjdGVkKTsKQEAgLTE3MSw5ICsxNzEsOSBAQCBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNv
bnN0IGNoYXIqIGV4cAogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7
Ci0gICAgVmVjdG9yPGNoYXI+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9y
PGNoYXI+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPGNoYXI+IHMzID0g
eydpJywgJ2onLCAnaycsICdsJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2In
LCAnYycsICdkJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdo
J307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307CiAgICAg
CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczEpKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiB7Ci0gICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8Y2hhcj4+JiYg
Y29udGVudHMpIHsKKyAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50
OF90Pj4mJiBjb250ZW50cykgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQogICAgICAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CkBAIC0yMDksNyArMjA5LDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICBhdXRvIGJ1ZmZlcjEg
PSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8
Y2hhcj4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKKyAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEu
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdk
J319KS5nZXQoKSk7CiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9
LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0
KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdG9IZXhTdHJpbmcpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHQxID0gezB4MTEsIDB4NSwgMHgx
Mn07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUodDEpKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwo=
</data>
<flag name="commit-queue"
          id="452134"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430620</attachid>
            <date>2021-06-04 15:26:23 -0700</date>
            <delta_ts>2021-06-04 15:35:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604152622.patch</filename>
            <type>text/plain</type>
            <size>263902</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDI1ZDQ5NTZjODgzYzU4NzQxYjM4YmMwMDUwNmMwMzY0YTc1MmNhNjUu
LjU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlk
RmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDZjOWE5YTIxYTBjNjNm
MWM4YTY5NTE2YmU5YmUwODJlYzQyN2UzYTcuLjk0MzgzYTFjNzcyNjMyZjU3MThkN2RmMzdlNTc1
NGE2MzJiNTBmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJl
dmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCitib29sIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
aW5kZXggMGRhYzdmZjAzY2M4NDZkMTg5NmEwODhmNjI2MzAyODYxNmJkZmE2OS4uYjZlNjhmM2M3
MjlmYjQxYzkyOWE2ZDE3OGRhNjAzOTlmZGM5MWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVy
cm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4p
OwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKaW5kZXggMGYyZjA0MTU0MzEzMjM1MjIzY2RmZmI3YzVjNGMzNjk0YzRlOTAzNC4uZTEwZDhk
OTE2ZmIwZjI1ZmJlYTNmN2FjMmFmNTVmNTcwYjIwZGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggZWU0ZjM2MWRkMDgz
ZGU3M2M5YzRkZTg4MTQxMjQwYWYxNWZiMjkwMy4uM2I5NjAyMTA5NTk2MzI1YTBkNDc0MzJlNDY2
ZjQ1ZjgyZDE2MTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBpbnQgRmlsZUhhbmRsZTo6d3JpdGUoY29uc3Qgdm9pZCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAg
IHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5k
bGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggNThjZjE0MDQ4ZDM1NTMwMjA3
N2YxYzRlZDUxNDkyNWE1YzdkOTE0Yy4uM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDcz
M2U5ZDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50
RmlsdGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
Q29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7
CiAgICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9
IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggODI1ODY1M2YyNTUxODJmNzRlY2ZkNGQ4N2FhZTk5YWEx
NjYzZDExMS4uMDA0MGE4YTYxMTg3ZmIwZTQ5ZTg2ZjMzNzBiYjhmODIzNzc1YWZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCkBAIC01Miw3ICs1Miw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCiAgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZl
Y3RvcjxjaGFyPiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTgxLDE1
ICs4MSw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPGNoYXI+JiYgdmVjdG9yKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQot
Ly8gRklYTUU6IE1vdmUgdGhlIHdob2xlIGNsYXNzIGZyb20gVmVjdG9yPGNoYXI+IHRvIFZlY3Rv
cjx1aW50OF90PiBhbmQgbWFrZSB0aGlzIGVmZmljaWVudCwgcmVwbGFjaW5nIHRoZSBWZWN0b3I8
Y2hhcj4gdmVyc2lvbiBhYm92ZS4KIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIgeyB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpIH0pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CkBAIC0xMDIs
NyArOTYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3QKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmVjdG9yPGNoYXI+IGNvbWJpbmVkRGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2l6ZSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKICAgICAgICAgY29t
YmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50
LT5zaXplKCkpOwpAQCAtMTEzLDcgKzEwNyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdAogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2NvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjIsMTEgKzExNiw2IEBAIGNv
bnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGFBc1VJbnQ4UHRyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSgpKTsKLX0KLQogU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVk
QnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAtMTUwLDcgKzEzOSw3IEBAIFN0cmluZyBT
aGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGFy
cmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3Jl
YXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICV6dVxuIiwgc2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNTgsNyArMTQ3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogICAgIHNpemVfdCBw
b3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykg
ewotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
ICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNp
emUoKSk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKICAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudC5zZWdtZW50LT5zaXpl
KCk7CiAgICAgfQogCkBAIC0xNzgsMjIgKzE2NywxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3I7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7Ci19Ci0KLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
VmVjdG9yPGNoYXI+JiYgZGF0YSkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKQEAgLTI0MCwyMCArMjI0
LDIwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRh
dGEuZGF0YSgpOyB9LAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsg
cmV0dXJuIGRhdGEuZGF0YSgpOyB9LAogI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0
YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkpOyB9LAorICAgICAgICBbXShjb25z
dCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBH
UmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorICAgICAgICBb
XShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKICNlbmRpZgotICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1cm4g
V1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzI2LDcgKzMxMCw3
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29u
c3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAg
W10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwK
ICNpZiBVU0UoQ0YpCiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRh
KSB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKQEAgLTM1
Myw3ICszMzcsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owog
fQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Citjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CkBAIC0z
NjcsMTAgKzM1MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGxlbmd0aCAqIDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJh
Y3RlcnMuCi0gICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpOwogICAgIGlmIChsZW5ndGgpIHsKICAg
ICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENoYXIqIGQg
PSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3ICszNjcsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7CisgICAgYnVmZmVyLnNo
cmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDhhYzY5ZDU5MTAzNmYxZjYwMGZlODM4
NGY2ZmIyOWQ5OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdlOTA5M2RmOGVkYjYxZWFlYWRkZDAwZWI4
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02NiwxNCArNjYs
MTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAKICAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAjaWYgVVNF
KEZPVU5EQVRJT04pCkBAIC05OSw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIGRh
dGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBz
ZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgogICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21l
bnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IEF1ZGl0
IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0
ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAg
Y29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAogICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTExLDkgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTEyMywxMCArMTIyLDExIEBAIHB1
YmxpYzoKICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBu
ZXcgRGF0YVNlZ21lbnQuCiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRh
KQorICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OwpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjaWYgVVNFKENGKQogICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2VnbWVudChG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFy
PiwKKyAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQogICAgICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKQEAgLTIwNCw5ICsyMDQsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIzNSw4IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNmZWU2MTQyNTEzY2MyMmU2Zjg5ZGM0Yzgy
NGZhMDcwMmUwOWQuLjVlNDQ2NmNkM2YxNzE4OGEyN2MwY2RlMWVhOGE4MDFiMDJhMjQ3ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKQEAgLTQyLDI0ICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZm
ZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAs
IG1fc2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVh
Y2hlZEVuZE9mRmlsZShmYWxzZSkKICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKIH0KIAogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9u
KDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVudExlbmd0aCgwKQotICAgICwg
bV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKICAgICBzZXRTZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0K
QEAgLTc1LDcgKzYzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6c2V0U2VwYXJh
dG9yKGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICBtX3NlcGFyYXRvci5hcHBlbmQoc2VwYXJh
dG9yLCBzdHJsZW4oc2VwYXJhdG9yKSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0b3Ip
Citib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+
JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewogICAgIGlmIChtX3JlYWNoZWRFbmRP
ZkZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzLDcgKzcxLDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXQKICAgICBjaHVuay5jbGVhcigpOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIHdoaWxlIChtX3NlZ21lbnRJbmRleCA8IG1fc2VnbWVudExlbmd0aCkgewotICAgICAg
ICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4Kytd
OworICAgICAgICAgICAgYXV0byBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVu
dEluZGV4KytdOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0
b3JbbV9zZXBhcmF0b3JJbmRleF0pIHsKICAgICAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJ
bmRleCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04obV9zZXBhcmF0b3JJbmRleCA8PSBtX3NlcGFyYXRvci5zaXplKCkpOwpAQCAtMTEy
LDcgKzEwMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0
b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgIGlmICghbV9zZWdt
ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkZpbGUgPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKQotICAgICAgICAgICAgICAgIGNodW5r
LmFwcGVuZChtX3NlcGFyYXRvci5kYXRhKCksIG1fc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAg
ICAgICAgIGNodW5rLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3Nl
cGFyYXRvci5kYXRhKCkpLCBtX3NlcGFyYXRvckluZGV4KTsKICAgICAgICAgICAgIHJldHVybiAh
Y2h1bmsuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIyLDE0ICsxMTAsMTQgQEAg
Ym9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1
bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKIAogU3RyaW5nIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpuZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soYm9vbCBpbmNsdWRlU2Vw
YXJhdG9yKQogewotICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGlmICghbmV4dENodW5rKGRhdGEsIGluY2x1ZGVTZXBhcmF0b3IpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gZGF0YS5zaXplKCkgPyBTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgOiBlbXB0
eVN0cmluZygpOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVj
dG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKK3NpemVfdCBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0
ZWRTaXplKQogewogICAgIGRhdGEuY2xlYXIoKTsKICAgICBpZiAocmVxdWVzdGVkU2l6ZSA8PSBt
X3NlZ21lbnRMZW5ndGggLSBtX3NlZ21lbnRJbmRleCkgewpAQCAtMTQxLDcgKzEyOSw3IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8Y2hhcj4mIGRhdGEsIHNp
emVfdCByZXF1ZXN0ZWRTaXplKQogICAgIGRhdGEuYXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVu
dEluZGV4LCByZWFkQnl0ZXNDb3VudCk7CiAKICAgICBzaXplX3QgYnVmZmVyUG9zaXRpb24gPSBt
X2J1ZmZlclBvc2l0aW9uICsgbV9zZWdtZW50TGVuZ3RoOwotICAgIGNvbnN0IGNoYXIqIHNlZ21l
bnQgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBudWxscHRyOwogCiAgICAgLy8g
TGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgogICAgIC8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIGp1c3QgaXRlcmF0aW5n
IHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNzU2ZWVlMjQ2YjBlMmNh
ZTIwYzdlZTc3NzllNjVjMGY4ZDczNDYzYy4uYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQx
ZTI1ZmQ0Yzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCkBAIC00OCwyNCArNDgsMjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2Ugd2hlbiB0aGUg
ZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9y
PGNoYXI+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CisgICAgYm9vbCBu
ZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBm
YWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRo
ZSBidWZmZXIgaGFzIGJlZW4gcmVhY2hlZC4KICAgICBTdHJpbmcgbmV4dENodW5rQXNVVEY4U3Ry
aW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKTsKIAog
ICAgIC8vIFJlYWRzIHNpemUgYnl0ZXMgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gdGhlIGJ1
ZmZlciwgd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVmZmVyIHBvc2l0aW9uLgogICAgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBUaGF0IG51bWJlciBtaWdodCBiZSBsZXNzIHRo
YW4gdGhlIHNwZWNpZmllZCBzaXplIGlmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB3YXMgcmVhY2hl
ZC4KLSAgICBzaXplX3QgcGVlayhWZWN0b3I8Y2hhcj4mLCBzaXplX3QpOworICAgIHNpemVfdCBw
ZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6CiAgICAgU2hhcmVkQnVm
ZmVyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbjsKLSAgICBjb25zdCBj
aGFyKiBtX3NlZ21lbnQ7Ci0gICAgc2l6ZV90IG1fc2VnbWVudExlbmd0aDsKLSAgICBzaXplX3Qg
bV9zZWdtZW50SW5kZXg7CisgICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CisgICAg
Y29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NlZ21l
bnRMZW5ndGggeyAwIH07CisgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIGJv
b2wgbV9yZWFjaGVkRW5kT2ZGaWxlOwotICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvcjsKLSAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleDsKKyAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3Ig
eyBmYWxzZSB9OworICAgIHNpemVfdCBtX3NlcGFyYXRvckluZGV4IHsgMCB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMGJmMGM0YWZiMDFiNWExYjk5ZWE3YzlmNjZh
MzFjMDYyY2UzYWFhMi4uMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXgg
Mzg3MTczOGU1ZDVjMDUzY2JkYjJkNGJiOWI3MzAzODJmYmNhYzQyZS4uNDI5MGRiMTI4ZDAwMGE0
MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFwaG9y
ZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CmluZGV4IDU2YTc4OGNkNzUwNDhlZmRlY2FlZTY2ZWNmYWYwZjk2NTBkYzc4NmIuLjA2OGNkY2Iz
ODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRl
eCA0OWY4ZmE0YmNlMGQwZjg4MGJhNDM3NTEzYTMyNjZmNTZmNWEwMDYxLi45ZDBjZTkwYzBiMDE5
MjgwNjU4ZTg3MTM4YzFjNTFkMTc2NDY3ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVwZGF0ZUZp
bHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFk
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YS5nZXQoKSBsZW5ndGhdKTsKICAgICBt
X3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9u
ZTpOT11dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE1ZTYwZjIwNWNlZDJh
NTY0ODlhNDc0ZjAxMTQ3MmI3OThhNmMzNWMuLjQ1ZDE0YWQ5MDAzNzNhMjdiZjNiMmYzMzIzODIy
ZmU4ZjM0MTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5
KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgY29uc3QgY2hhciogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwogICAg
IHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkK
ICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0
YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggZTFlNWMzMDQzNTZjMGFhOWQ5YzA1
NDVkOTZhMzVhNjYzY2RiNzgzZS4uNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4
MTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXI7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAg
IHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpOwogCiAg
ICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKSkKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwog
ICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhf
dCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAg
bV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFy
KCk7CkBAIC0yMDUsOSArMjA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3ByZW11bHRpcGx5
QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwotICAgICAgICBWZWN0b3I8
Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNp
emUoKSB9OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMt
PmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwogICAgICAgICBtX3BpeGVscyA9IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNo
YXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkp
KTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRzKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMz
ZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3MTkuLjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2My
ZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2Rl
bDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaAppbmRleCAzZWQ0ZTA1YzQzOTRkZmY2M2FlNWZjNmJhMWVmMWE4MDQyNTQz
Y2I3Li5hMjhlNjFjMDJhNzJjYTkzODlhNjg2MzI1YjU0NmUzMWM0YzA0OTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgY2hhciosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCAxZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1
MTk4ZjgzNTA2ZGUzOTM3Li5iMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPGNoYXI+JiB2
ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQorc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPHVp
bnQ4X3Q+JiB2ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQogewogICAgIHVpbnQzMl90IGJpZ0VuZGlh
blZhbHVlID0gaHRvbmwodmFsdWUpOwotICAgIHJldHVybiB2ZWN0b3IudHJ5QXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPigmYmlnRW5kaWFuVmFsdWUpLCBzaXplb2YoYmlnRW5kaWFu
VmFsdWUpKTsKKyAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjx1aW50OF90Kj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MTZf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MTZfdCB2YWx1ZSkKIHsKICAgICB1aW50MTZfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25z
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCiBzdGF0aWMgY29u
c3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwpAQCAt
OTMsNyArOTMsNyBAQCBib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICNpZiBVU0Uo
V09GRjIpCiBjbGFzcyBXT0ZGMlZlY3Rvck91dCA6IHB1YmxpYyB3b2ZmMjo6V09GRjJPdXQgewog
cHVibGljOgotICAgIFdPRkYyVmVjdG9yT3V0KFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorICAgIFdP
RkYyVmVjdG9yT3V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQogICAgICAgICA6IG1fdmVjdG9y
KHZlY3RvcikKICAgICB7IH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmICghbV92ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fdmVjdG9yLnNpemUoKSAr
IG4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX3ZlY3Rvci5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBuKTsKKyAgICAgICAgbV92ZWN0b3IuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG9mZnNldCArIG4gPiBtX3ZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICBtX3ZlY3Rvci5ncm93
KG9mZnNldCArIG4pOwogICAgICAgICBtX3ZlY3Rvci5yZW1vdmUob2Zmc2V0LCBuKTsKLSAgICAg
ICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBuKTsKKyAgICAgICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBuKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MjIsMTEgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3Rvcjxj
aGFyPiYgbV92ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX3ZlY3RvcjsKIH07CiAjZW5k
aWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjxj
aGFyPiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBW
ZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1w
dHkoKSk7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogCiAjaWYgVVNFKFdPRkYyKQogICAg
IGlmIChzaWduYXR1cmUgPT0ga1dvZmYyU2lnbmF0dXJlKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHdvZmZEYXRhID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDhfdCo+KHdvZmYu
ZGF0YSgpKTsKKyAgICAgICAgYXV0byogd29mZkRhdGEgPSB3b2ZmLmRhdGEoKTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IHdvZmZTaXplID0gd29mZi5zaXplKCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBzZm50U2l6ZSA9IHdvZmYyOjpDb21wdXRlV09GRjJGaW5hbFNpemUod29mZkRhdGEsIHdvZmZT
aXplKTsKIApAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyIHx8ICFp
c1dPRkYoKmJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb252ZXJ0ZWRGb250OworICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKICAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKaW5kZXggNWMwY2E0ZmMyMDdkMjEwZmQwODA1NGM0ZmZhN2VmY2EzM2EwYjEyZC4u
M2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQg
dG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5
KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50
byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjxjaGFyPiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0
IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYg
dGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IDMwY2Y3OWVjZmRmMjU4MmY1NDUyYWJmMjEyOTYxMjg1NjMzZjc4MzAuLjI0NzcyOGU2Y2Jj
MDdmMjgyZmE1OGY1MTdiOGE2ZmUwNmU1YjA2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgog
ICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNo
YXIqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCiB7CiAgICAgQVNT
RVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
IHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwog
fQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQordm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCmluZGV4IGVmNWU1ZmI5ZTEzNjRhZjY3NTdlNTBmOGI4ZWYxNzJiZmMwZDYxNzku
LmEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAgICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIGNvbnN0IGNo
YXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247CisgICAgYXV0byog
c291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKICAgICBzaXplX3QgYW1v
dW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKICAg
ICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7CiAgICAgcmV0dXJuIGFtb3VudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0
aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGls
aXRpZXNDRy5jcHAKaW5kZXggM2Y4ZGUyNGVjMTQyNmJiNzdkNzdiODk3YzEzNGZmYWI5YzY2MDhl
ZC4uYTFlNWI3MzJmYjBiZjRlNTQyZDQxYmE5ZTg2OWRmMDFkNjU5ZTM1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXND
Ry5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGMKICAgICBDR0Rh
dGFDb25zdW1lckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIFtdKHZvaWQqIGluZm8s
IGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgewogICAgICAgICAg
ICAgYXV0byBoYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlKj4oaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
aGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgYnVmZmVyLCBjb3Vu
dCk7CiAgICAgICAgIH0sCiAgICAgICAgIG51bGxwdHIKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCAzYmE0YjhjOTBlYjBmMjE5MDdhNDI4
ZTMzN2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVk
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
Nzc0LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgdGVtcG9yYXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAg
ICAgbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0
aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1lbWNweShsb2NhdGlvbiwg
b3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEo
YWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNDUwY2RhMDM3Nzdh
ODJlNTQyNWI4ZmE4MWQyODcwZDVjM2I2MGQxYS4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoRlRfTG9h
ZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFibGVTaXplKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YSh0YWJsZVNpemUpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHRhYmxlU2l6ZSk7CiAgICAgRlRfVUxvbmcgZXhwZWN0
ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1Nm
bnRfVGFibGUoZnJlZVR5cGVGYWNlLCB0YWcsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8RlRfQnl0ZSo+
KGRhdGEuZGF0YSgpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAh
PSBleHBlY3RlZFRhYmxlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggYTE2MWM0N2M1MGRiODI4NDdlNmZmMmQ2ODUyOGJkOGNjYzcyMmQ1MS4uMGRlYTgw
ZTJiY2E0NzhlZDRjMDJhZTFhMGIwNTY1NGI4NGQyOWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBk
YXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0
YSA9IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAg
ICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4o
KTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDBiODc5NmFiN2I0N2Q5ZjgxMTNiZTk0ZWNkYTk2
M2ZlM2MwMGJmNWUuLjlkNDljOWYzN2JlMmU1NGNkYTc2MGE0ZGYyNmE0YjNlZGUzODc3ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmly
dHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDg3LDcg
KzEwODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDQ0OTgzNzM2NjFhN2ViMDk5ZmI5ODQ1NmU5NGE0MWQ4
NGFkYjFjMTYuLjE3MTM1YTE0MWNkNmZhMmNlNmE4NzJjNzczMTllNDMzYjM4NzYwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhCiAKIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3Nl
cnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGNlcnRpZmljYXRlLT5kYXRhQXNVSW50OFB0cigpKSwKKyAgICBPcGVuQ0RNRXJyb3IgZXJy
b3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3Rl
bS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAg
ICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwogICAgIGNhbGxiYWNrKCFlcnJvciA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZCk7CiB9CkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIEdTVF9ERUJVRygicGFyc2luZyBidWZmZXIgb2Ygc2l6ZSAlenUi
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXIt
PmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAo
ImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICAgICAgU3Ry
aW5nVmlldyBwYXlsb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXItPmRh
dGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZ1ZpZXc+IHR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCI6VHlwZToiKSwg
Nik7CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpr
ZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NU
X0VSUk9SKCJDRE0gZXJyb3IiKTsKLSAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3Nh
Z2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAo
ImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjaGFsbGVuZ2VDYWxsYmFjayA6IG1fY2hhbGxlbmdlQ2FsbGJhY2tzKQog
ICAgICAgICBjaGFsbGVuZ2VDYWxsYmFjaygpOwogICAgIG1fY2hhbGxlbmdlQ2FsbGJhY2tzLmNs
ZWFyKCk7CkBAIC01MDcsMTEgKzUwNywxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAg
IG1faW5pdERhdGEgPSBJbml0RGF0YShpbnN0YW5jZS0+a2V5U3lzdGVtKCksIFdURk1vdmUoaW5p
dERhdGFTaGFyZWRCdWZmZXIpKTsKIAogICAgIEdTVF9UUkFDRSgiR29pbmcgdG8gcmVxdWVzdCBh
IG5ldyBzZXNzaW9uIGlkLCBpbml0IGRhdGEgc2l6ZSAlenUiLCBtX2luaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKLSAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwor
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgp
LCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKIAogICAgIE9wZW5DRE1TZXNzaW9uKiBz
ZXNzaW9uID0gbnVsbHB0cjsKICAgICBvcGVuY2RtX2NvbnN0cnVjdF9zZXNzaW9uKCZpbnN0YW5j
ZS0+dGh1bmRlclN5c3RlbSgpLCB0aHVuZGVyTGljZW5zZVR5cGUobGljZW5zZVR5cGUpLCBpbml0
RGF0YVR5cGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51
bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7Cisg
ICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAm
c2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBzZXNzaW9uIik7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXRE
YXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdl
Lmhhc1BheWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3Nh
Z2UtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwg
bWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2Ut
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5z
ZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUobWVzc2FnZSkp
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBpZiAoIW1fc2Vzc2lvbiB8fCBtX3Nlc3Npb25JRC5pc0VtcHR5
KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Npb24uZ2V0KCksIHJlc3BvbnNlLT5k
YXRhQXNVSW50OFB0cigpLCByZXNwb25zZS0+c2l6ZSgpKSkKKyAgICBpZiAoIW1fc2Vzc2lvbiB8
fCBtX3Nlc3Npb25JRC5pc0VtcHR5KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Np
b24uZ2V0KCksIHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpKQogICAgICAgICBz
ZXNzaW9uRmFpbHVyZSgpOwogfQogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2Fn
ZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIFdU
Rk1vdmUobWVzc2FnZSkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmlu
ZGV4IGU4OWZiNTk5ODYyMTViOWQ1ZGFlMTc5ZDJkNzU5Y2VmNzQxODE0NzYuLmM4NjRiMmMzYThm
YjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVm
ZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBvc2l0aW9uKSAtIGJ1ZmZlci5k
YXRhKCk7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggYTAzZTcxYWIxYmMzYjFj
YTUwN2NmMzhlMjc0MTg3YmVjMGE5ZDE5MS4uNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYy
M2FlMjRkNDBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRl
ciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAgICAgb3ZlcmxheUxlbmd0aCA9IDA7CiAK
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGZvbnREYXRhLT5zaXplKCk7Ci0gICAgY29uc3QgY2hh
ciogZGF0YSA9IGZvbnREYXRhLT5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGZvbnREYXRhLT5k
YXRhKCk7CiAKICAgICBFT1RQcmVmaXgqIHByZWZpeCA9IGVvdEhlYWRlci5wcmVmaXgoKTsKIApA
QCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERh
dGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKICAgICAvLyBJZiBw
b3NzaWJsZSwgZW5zdXJlIHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9mIHRoZSBm
dWxsIG5hbWUuCiAgICAgaWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5ndGggJiYg
bWVtY21wKGZhbWlseU5hbWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewotICAgICAg
ICBvdmVybGF5U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnVsbE5hbWUpIC0g
ZGF0YTsKLSAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGZhbWlseU5hbWUpIC0gZGF0YTsKKyAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGZ1bGxOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJsYXlEc3Qg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmYW1pbHlOYW1lKSAtIGRhdGE7CiAg
ICAgICAgIG92ZXJsYXlMZW5ndGggPSBmYW1pbHlOYW1lTGVuZ3RoOwogICAgIH0KICAgICBlb3RI
ZWFkZXIuYXBwZW5kQmlnRW5kaWFuU3RyaW5nKGZ1bGxOYW1lLCBmdWxsTmFtZUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggMGMwYzEzNzIwM2RmMzZjZjU3NTVmMTJmNDliOTU2
MjM2MmYyNGM1Mi4uNzMzNmEyMzUxY2E3ODhlYjY4OWEwMmVkZGUzMDc5ODAxY2EyYWU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbgogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAw
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJ
X0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhKHNpemUpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERh
dGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKICAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHAKaW5kZXggNjc1YTE3MjFkNzU0NjY4ZjI2NjAzNzY0YjhhMDE0M2NjZTIzNzg4My4uN2M2
MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1h
Z2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRl
cihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKLSAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKKyAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9y
eShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZf
UkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5z
ZXRGYWlsZWQoKSA6IGZhbHNlOwogCiAgICAgaWYgKGF2aWZEZWNvZGVyUGFyc2UobV9hdmlmRGVj
b2Rlci5nZXQoKSkgIT0gQVZJRl9SRVNVTFRfT0sKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBBVklG
SW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGF0YVBhcnNlZCkg
ewotICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykgeworICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01l
bW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFW
SUZfUkVTVUxUX09LKSB7CiAgICAgICAgICAgICBtX2RlY29kZXItPnNldEZhaWxlZCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMuLmM3MTdjNDVkMzA1
N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJbWFnZVR5cGUgSUNPSW1h
Z2VEZWNvZGVyOjppbWFnZVR5cGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBjb25zdCB1aW50
MzJfdCBpbWFnZU9mZnNldCA9IG1fZGlyRW50cmllc1tpbmRleF0ubV9pbWFnZU9mZnNldDsKICAg
ICBpZiAoKGltYWdlT2Zmc2V0ID4gbV9kYXRhLT5zaXplKCkpIHx8ICgobV9kYXRhLT5zaXplKCkg
LSBpbWFnZU9mZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247Ci0gICAgcmV0dXJu
IHN0cm5jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0KSA/IEJN
UCA6IFBORzsKKyAgICByZXR1cm4gbWVtY21wKCZtX2RhdGEtPmRhdGEoKVtpbWFnZU9mZnNldF0s
ICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggOWE0NzBlYmFhMTFhMTI4ODViNjAzZTUzZmU4YTg0ZjEzYzc2MzlkZS4uYzEy
YzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYnl0
ZXNUb1VzZSA9IGRhdGEuc2l6ZSgpIC0gYnl0ZXNUb1NraXA7CiAgICAgICAgIG1fcmVhZE9mZnNl
dCArPSBieXRlc1RvVXNlOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXJTaXplID0gbV9yZWFkT2Zm
c2V0OwotICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2luZm8sIHJlaW50ZXJwcmV0
X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PGNoYXIqPihkYXRhLmRhdGEoKSArIGJ5dGVzVG9T
a2lwKSksIGJ5dGVzVG9Vc2UpOworICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2lu
Zm8sIHJlaW50ZXJwcmV0X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRh
LmRhdGEoKSArIGJ5dGVzVG9Ta2lwKSksIGJ5dGVzVG9Vc2UpOwogICAgICAgICAvLyBXZSBleHBs
aWNpdGx5IHNwZWNpZnkgdGhlIHN1cGVyY2xhc3MgZW5jb2RlZERhdGFTdGF0dXMoKSBiZWNhdXNl
IHdlCiAgICAgICAgIC8vIG1lcmVseSB3YW50IHRvIGNoZWNrIGlmIHdlJ3ZlIG1hbmFnZWQgdG8g
c2V0IHRoZSBzaXplLCBub3QKICAgICAgICAgLy8gKHJlY3Vyc2l2ZWx5KSB0cmlnZ2VyIGFkZGl0
aW9uYWwgZGVjb2RpbmcgaWYgd2UgaGF2ZW4ndC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGJhMzU1ZjBjZWZhYjU3ZDIzNzgxZTFiYjZlZjE3MzcxNWIxYTM5ODUuLjAyZjFi
MDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBX
aGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQ
RGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNv
IHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwotICAgIFdlYlBEYXRhIGlucHV0RGF0
YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkRGF0YS0+ZGF0
YSgpKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CisgICAgV2ViUERhdGEgaW5wdXREYXRhID0g
eyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdl
YlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdl
YlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CiAgICAgaWYgKCFkZW11
eGVyKSB7CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpwYXJzZUhl
YWRlcigpCiAgICAgaWYgKG1fZGF0YS0+c2l6ZSgpIDwgd2VicEhlYWRlclNpemUpCiAgICAgICAg
IHJldHVybjsgLy8gQXdhaXQgVlA4WCBoZWFkZXIgc28gV2ViUERlbXV4UGFydGlhbCBzdWNjZWVk
cy4KIAotICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSB9OworICAgIFdlYlBEYXRh
IGlucHV0RGF0YSA9IHsgbV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpIH07CiAgICAgV2Vi
UERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2Vi
UERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKICAgICBpZiAoIWRlbXV4
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNjAzNzVkZTViY2RjYjQ3NmFlMGVmNDE3
NWNlNzFiMWUxZDYxNTVmZi4uMDU0NDI4ZDUwZGM2MWFhYWQ1MTg4NzlkMjJjYmMyZjk3NzkxNTAz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBib29s
IHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNl
bmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXgg
OWY2ZGQ4MGYyNWExZTA2NzU1ZGExYWM5ODdlYWU4ODlkZjlmMjc0Mi4uZGQwNWVmMGZiZDNlNzMw
OTc0MzUwNWFjY2MwMTAxNGVmNGQ5YzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVT
b3VyY2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAppbmRleCA0MTI0N2Y2ODRmNzYw
OTBhNmQyYmUyNTBhNTU4ODY0Y2NmMDQyMTU3Li5jOWM5M2JhNjAxMThmOTE5ZDExNjAyOTMyZGFl
ODNkNzk5NDY3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNv
bm5lY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIFJUQ0RhdGFDaGFu
bmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoUlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hh
ciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciwgc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKaW5kZXgg
ZDAzMDA1MzZlZDkzMGZiZjljMjAyYmI5NzI2MTBkNGM1Zjg5YThjNC4uOTNiZDk2MmQ0ZGVhZDQw
MzllNWQwMTU0N2I1NTgyMDhkOWVlZWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC01NCw3
ICs1NCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZVJhd0RhdGEoZGF0YSwgc2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmlu
ZGV4IDRhNTEwOTJiYzQxZjJjZjlmN2YzZDA0ZjI3N2E3NWMyOTRlMWNhYTUuLmUwNzBiZGIxM2U4
NzI1ODdjNTNlMDRmNDk2MTdmZWQ1NTlhMGE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC00MSw3
ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogCiAg
ICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5h
bDsKIAogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAppbmRleCBkMmVlYmRlZDk1ZGU3NWNjMDk0NTllM2IxYjA2MTk2ZGI2ZTYxM2Zi
Li4zMmRkOGMwOGUyMTkwNmY0YTJkOGYyYThjMzBjN2VhNWFhOTUyNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAg
LTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNU
b0ZpbGUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocgogICAgIGZvciAoYXV0byYg
cGFydCA6IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vjb25kLmRhdGEoKS0+
c2l6ZSgpOwotICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwg
bGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSwgbGVuZ3RoKSAhPSBsZW5ndGgp
IHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0
ZW1wb3JhcnkgZmlsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uM2U3NGE2YTA0ZWYw
NWE3OWQyY2IxNDFhYThjM2FlZGZkMmY0MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogICAgIHJldHVybiBj
cmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CiB9CiAKLVJlZjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCitSZWY8Rm9ybURhdGE+IEZv
cm1EYXRhOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewogICAgIGF1dG8gZGF0
YSA9IGNyZWF0ZSgpOwogICAgIGRhdGEtPm1fZWxlbWVudHMuYXBwZW5kKFdURk1vdmUodmVjdG9y
KSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZp
bGVzQ291bnQoKSBjb25zdAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVz
KGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNpemUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hh
cj4mIGJ5dGVzKSB7CisgICAgICAgIFtdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVzLnNpemUoKSk7
CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYg
ZmlsZURhdGEpIHsKICAgICAgICAgICAgIGlmIChmaWxlRGF0YS5maWxlTGVuZ3RoICE9IEJsb2JE
YXRhSXRlbTo6dG9FbmRPZkZpbGUpCkBAIC0xNjQsNyArMTY0LDcgQEAgdWludDY0X3QgRm9ybURh
dGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0
YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRh
dGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgIFtd
IChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9y
bURhdGFFbGVtZW50KFZlY3RvciB7IGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpIH0pOwogICAg
ICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVE
YXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KGZpbGVEYXRhLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9sZW5ndGhJbkJ5dGVz
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9lbGVtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4obV9lbGVtZW50
cy5sYXN0KCkuZGF0YSkpIHsKLSAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3Rv
ciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9lbGVtZW50cy5sYXN0KCkuZGF0YSkp
IHsKKyAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUgfSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0pOwogfQogCiB2b2lkIEZvcm1EYXRh
OjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCkBAIC0yODQsMTIgKzI4NCwxMiBA
QCB2b2lkIEZvcm1EYXRhOjphcHBlbmROb25NdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBET01Gb3JtRGF0YSYgZm9ybURhdGEsCiAgICAgYXBwZW5kRGF0YShlbmNvZGVkRGF0YS5kYXRh
KCksIGVuY29kZWREYXRhLnNpemUoKSk7CiB9CiAKLVZlY3RvcjxjaGFyPiBGb3JtRGF0YTo6Zmxh
dHRlbigpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAog
ewogICAgIC8vIENvbmNhdGVuYXRlIGFsbCB0aGUgYnl0ZSBhcnJheXMsIGJ1dCBvbWl0IGFueSBm
aWxlcy4KLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRv
KiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCisgICAg
ICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KGVsZW1l
bnQuZGF0YSkpCiAgICAgICAgICAgICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9y
LT5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBW
ZWN0b3I8Y2hhcj4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAogU3RyaW5nIEZvcm1EYXRhOjpm
bGF0dGVuVG9TdHJpbmcoKSBjb25zdAogewogICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7Ci0g
ICAgcmV0dXJuIExhdGluMUVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CisgICAgcmV0dXJuIExhdGluMUVu
Y29kaW5nKCkuZGVjb2RlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwg
Rm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKQEAgLTM0Nyw3ICszNDcsNyBAQCBS
ZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5
SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbAogCiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewogICAgICAgICBzd2l0Y2hPbihlbGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0g
KGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBl
bmREYXRhKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAo
Y29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAg
ICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0YS5maWxlbmFt
ZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxlRGF0YS5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB1aW50NjRfdCBG
b3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjxjaGFyPj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA4ZjIy
MTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUxMDViYmRjNjRkLi41YmZmNjVhNjM2YzMxNzU1Mjll
MjRkYzEzNjUxMDhjZjJiNmFmNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCkBAIC0zOCwxMiArMzgsMTIgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKICAgICBz
dHJ1Y3QgRW5jb2RlZEJsb2JEYXRhOwotICAgIHVzaW5nIERhdGEgPSBWYXJpYW50PFZlY3Rvcjxj
aGFyPiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRhdGE+OworICAgIHVzaW5nIERhdGEg
PSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRh
dGE+OwogCiAgICAgRm9ybURhdGFFbGVtZW50KCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IEZv
cm1EYXRhRWxlbWVudChEYXRhJiYgZGF0YSkKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQotICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4mJiBhcnJheSkK
KyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgYXJyYXkpCiAg
ICAgICAgIDogZGF0YShXVEZNb3ZlKGFycmF5KSkgeyB9CiAgICAgRm9ybURhdGFFbGVtZW50KGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmlsZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5n
dGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUp
CiAgICAgICAgIDogZGF0YShFbmNvZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBm
aWxlTGVuZ3RoLCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lIH0pIHsgfQpAQCAtMTkzLDcg
KzE5Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVh
dGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOworICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29u
c3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJh
bmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxl
bmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxjaGFyPiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9t
aXRzIGZpbGVzCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGZsYXR0ZW4oKSBj
b25zdDsgLy8gb21pdHMgZmlsZXMKICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7
IC8vIG9taXRzIGZpbGVzCiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28g
d2Ugb25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggZmJhMDIzM2JlZmEy
Y2Q0YzE2MTRmNzA1NmI0YjA3NTM3OTMxZWNlZi4uYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2
NjJiYzc3NTZiNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBs
b25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1Rv
QmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0
NjAzMTU5NGQzYWQ1NWU2Mjc0NzA5YmU4NmM1MjVlMjllYzJlY2Y3Li40YzA0MjEwYzVhNTEzYWMz
ZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEs
OSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAppbmRleCA4ODEwMzhjODdkMWJjOWY0MTZi
YTExNjM1ZTNiNDE0NWM4ZDg4MGE5Li42ODM4ZTlkOGNmNDM3OTZkMmYzOTRiYTFmNTRmMDlkMGI2
N2U4YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggYTZmMmI3M2MxN2RmY2Y4NjI4NGM4YzVkZTU2MjA2YTlhNTA4NzRjZC4uZjZi
MmExODU3OTJiOThlMjQ4ZDE1ZjA3NjA4ZDZkYmNjODcwZWYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCiAgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBs
b25nIGxvbmcgY3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSB9OwotICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERh
dGE7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBjdXJyZW50RGF0
YTsKICAgICBDRlJlYWRTdHJlYW1SZWYgZm9ybVN0cmVhbSB7IG51bGxwdHIgfTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc3RyZWFtTGVuZ3RoIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQgeyAwIH07CkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBzdGF0aWMgYm9vbCBhZHZh
bmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIEZvcm1EYXRhRWxl
bWVudCYgbmV4dElucHV0ID0gZm9ybS0+cmVtYWluaW5nRWxlbWVudHMubGFzdCgpOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gc3dpdGNoT24obmV4dElucHV0LmRhdGEsCi0gICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICBbZm9ybV0gKFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMpIHsKICAgICAgICAgICAgIHNpemVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwotICAgICAg
ICAgICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVs
ZWFzZUJ1ZmZlcigpOwotICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0Yo
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAg
ICAgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMu
cmVsZWFzZUJ1ZmZlcigpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIGRhdGEuZ2V0KCksIHNpemUs
IGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAgICAgICAgIGZvcm0tPmN1cnJlbnREYXRhID0gV1RG
TW92ZShkYXRhKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9ybV0g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAt
Mzk1LDggKzM5NSw4IEBAIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBGb3JtRGF0YSogZm9ybURhdGEpCiAgICAgLy8gSGFuZGxlIHRoZSBjb21tb24gc3Bl
Y2lhbCBjYXNlIG9mIG9uZSBwaWVjZSBvZiBmb3JtIGRhdGEsIHdpdGggbm8gZmlsZXMuCiAgICAg
YXV0byYgZWxlbWVudHMgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKTsKICAgICBpZiAoZWxlbWVudHMu
c2l6ZSgpID09IDEgJiYgIWZvcm1EYXRhLT5hbHdheXNTdHJlYW0oKSkgewotICAgICAgICBpZiAo
YXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihlbGVtZW50c1swXS5kYXRh
KSkgewotICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHZlY3Rvci0+ZGF0YSgpKSwgdmVjdG9y
LT5zaXplKCkpKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rv
cjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNp
emUoKSkpOwogICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3QsIGRhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2Yx
ZDVhZjdkZWU1Ni4uOWJlNTg2ODJjYWMzM2JiYWFhOWUxODZkMmEzNGM0NjQwYjQxNWM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IDlkMDA1NTgxYWRlYzBjYzRjNjU4ZDhjZWU3NGZhYjVkMGE3MmQ2YjYuLjA1
NzZlZDg4MTI0MTA4MjI0NDc2Y2I2YmI3NTU4Zjk1YzljNzg1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC0xNTUsNyArMTU1LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2ln
bmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25n
IGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxl
cjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25z
ZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0YSBsZW5ndGg6KGludClsZW5ndGg7CistICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBsZW5ndGg6KGludClsZW5n
dGg7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBkY2Fh
YjcwNTFjZGMyMmM5OTE5YTM1OWNmZmFlNjgxZjdjMWNhMzRmLi5hNmY3MWFmNDIwZGY4ZGJkM2Nk
MmUzNGZjMDI3OGQ0NjBhZDhiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01NzAs
NyArNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
IC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwpAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAg
cmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVz
cG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTg3Myw3ICs4NzMsNyBAQCAtIChCT09MKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0
YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCB1aW50OF90KilkYXRhIGxlbmd0aDoo
aW50KWxlbmd0aAogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDI4OTU4YTljZGJlZGJlZGUyMjJhZDdmN2I4ZWQ4
MGQ5OTI1ODNhNGQuLmVkN2MzN2E2N2UwNDNjNWFkMzI5N2YyNDFhNjc2NGU1YWRkNTljMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl
KQogICAgICAgICBjaGFyKiBidWZmZXJQb3NpdGlvbiA9IGJ1ZmZlciArIHRvdGFsUmVhZEJ5dGVz
OwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkQnl0ZXMgPSBzd2l0Y2hPbihl
bGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMp
IHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAg
ICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBi
dWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRG
cm9tRmlsZShmaWxlRGF0YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNpemUpOwpAQCAtMTczLDEw
ICsxNzMsMTAgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVh
ZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW4KICAgICByZXR1cm4gcmVhZEJ5dGVz
OwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJv
bURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl
KQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21EYXRh
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBzaXplX3QgZWxlbWVudFNpemUgPSBkYXRhLnNpemUoKSAtIG1fZGF0YU9mZnNldDsK
LSAgICBjb25zdCBjaGFyKiBlbGVtZW50QnVmZmVyID0gZGF0YS5kYXRhKCkgKyBtX2RhdGFPZmZz
ZXQ7CisgICAgY29uc3QgdWludDhfdCogZWxlbWVudEJ1ZmZlciA9IGRhdGEuZGF0YSgpICsgbV9k
YXRhT2Zmc2V0OwogCiAgICAgc2l6ZV90IHJlYWRCeXRlcyA9IGVsZW1lbnRTaXplID4gc2l6ZSA/
IHNpemUgOiBlbGVtZW50U2l6ZTsKICAgICBtZW1jcHkoYnVmZmVyLCBlbGVtZW50QnVmZmVyLCBy
ZWFkQnl0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCmluZGV4IGI5YTEwMGRjOGRmNWFkYTNmZWMxZDQ0
MTU5YTkxMmE5YTAzN2E0MDcuLmRkZWU4ZmU5ZjVmYTQxNmFjMjMwNGE1ODFhNjUzZjA5NWE2MjAx
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Rm9ybURhdGFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVDb250ZW50TGVuZ3RoKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
cmVhZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiwgY2hh
ciosIHNpemVfdCk7Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWRGcm9tRGF0YShjb25z
dCBWZWN0b3I8Y2hhcj4mLCBjaGFyKiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gcmVhZEZyb21EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNoYXIqLCBzaXplX3QpOwog
CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAppbmRleCBlNTY0YTBjZTY2NjE0YTQ5YTEwMzEzNjg4NTFjNGRhODgy
MzUyYTYxLi5hMzA5YzI1OGNkOWYxMTJkM2JiY2U2Y2FhNzE0ODE4MzZhMWZiMDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVj
ZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1
ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNpemUoKSk7CiAgICAgY2xpZW50KCktPmRp
ZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5k
ZXggMDVkMTc3MTc3NTFlMDBhNTJhNmEwNWViMDA2ZjdiNGMxN2YxZDRiYi4uZWJjZGIyZTBkZDli
NDI4MGYyNTE1NzNkYmE2YjViZDA2ZGZmZDViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRFbmNvZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJv
b2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKSBjb25zdDsKICAgICBTdHJpbmcgZGVjb2Rl
KGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVjb2RlKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGUoU3RyaW5nVmlldywgVW5lbmNvZGFibGVI
YW5kbGluZywgTkZDTm9ybWFsaXplID0gTkZDTm9ybWFsaXplOjpZZXMpIGNvbnN0OwogICAgIFZl
Y3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dCBmaW5hbCB7IHJldHVybiBlbmNvZGUoc3RyaW5nLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxF
bmNvZGVkRW50aXRpZXMsIE5GQ05vcm1hbGl6ZTo6Tm8pOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggNjI5MWI2NDI0NjRmMjc1
YjQ1M2JjYzllNDBlMWM5ZmM1MDk5YTk2MC4uODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1
YThhYWNmODcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJl
ZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAg
ICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIAogICAgIGlmIChieXRlc1RvUmVh
ZCAhPSBJTlZBTElEX0ZJTEVfU0laRSB8fCBsYXN0RXJyb3IgPT0gTk9fRVJST1IpIHsKLSAgICAg
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAg
ICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwg
JmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQogICAgICAgICAgICAg
cmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCAxZjMzYTNiNjEz
Y2IwM2ViNTgzZTg1OTRiYWEwMjkyNDBiZjhhYmFhLi44ZWE0NGRjZjI1NmFiMDA0MzEyOTBjYjRl
NjU1MWI4MzYzMmM1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBTVkdUb09URkZvbnRD
b252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKICAgICBib29sIGNvbnZlcnRTVkdUb09U
RkZvbnQoKTsKIAotICAgIFZlY3RvcjxjaGFyPiByZWxlYXNlUmVzdWx0KCkKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVsZWFzZVJlc3VsdCgpCiAgICAgewogICAgICAgICByZXR1cm4gV1RGTW92ZSht
X3Jlc3VsdCk7CiAgICAgfQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PEdseXBoRGF0YT4gbV9nbHlwaHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIEdseXBoPiBtX2dseXBo
TmFtZVRvSW5kZXhNYXA7IC8vIFNWRyAxLjE6ICJJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGdseXBo
IG5hbWVzIGJlIHVuaXF1ZSB3aXRoaW4gYSBmb250LiIKICAgICBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPEdseXBoLCAxPj4gbV9jb2RlcG9pbnRzVG9JbmRpY2VzTWFwOwotICAgIFZlY3RvcjxjaGFy
PiBtX3Jlc3VsdDsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9yZXN1bHQ7CiAgICAgVmVjdG9yPGNo
YXIsIDE3PiBtX2VtcHR5R2x5cGhDaGFyU3RyaW5nOwogICAgIEZsb2F0UmVjdCBtX2JvdW5kaW5n
Qm94OwogICAgIGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBtX2ZvbnRFbGVtZW50OwpAQCAtMTU1Myw3
ICsxNTUzLDcgQEAgYm9vbCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmNvbnZlcnRTVkdUb09URkZv
bnQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4g
Y29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0Zv
bnRFbGVtZW50JiBlbGVtZW50KQogewogICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciBjb252ZXJ0
ZXIoZWxlbWVudCk7CiAgICAgaWYgKGNvbnZlcnRlci5lcnJvcigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgKaW5kZXggODc1MTkxMzRiNzI2ODYzZDA5Y2Qx
M2NjMjg3YWJjMzg1NTJhNGE2Mi4uODhkNzI3MjY4MTg2Njc4YjZmZTZmOGU2YmIyYmM0MDBjMWM3
ZDA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCkBA
IC0zMSw2ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRm9udEVsZW1l
bnQ7CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXI+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNv
bnN0IFNWR0ZvbnRFbGVtZW50Jik7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29u
dmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAw
MDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDczOGMwZmU2Li5lY2I2YmFlMTY4OTU2MTY3
ZjYxZmFmM2RjYTI5MzY0NmNkY2FkNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFn
ZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2Fk
ZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZl
IGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAg
ICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgp
KTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5z
aXplKCkpOworICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
YWRkRGF0YShkYXRhKCktPmRhdGFBc0NoYXJQdHIoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAg
ICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IDJjOTNjZWMyNDgzNDcwZDkwMzU0ZTI0ZjRiYjI4NjJiNDcyMDU2NDMuLmZjMTI3YjdiNjdiZWE3
MzQ0NjNjZDJkNWIwNzU2YjU5YmViYTU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ29udGVu
dEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKICAgICBt
YXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlKTsKIH0KIAot
dm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiwgaW50KQordm9pZCBN
b2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiwgaW50KQogewogICAgIG1h
eWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggODU0NWYxOTlhNjRk
MjZkYTJjNTRhMDUzN2RhMDc1OTEyNThkNTI1ZS4uNDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5
MzI5MmU5ZmZiZTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IGExZjk0N2ViODcxMjFkOWNjMDA3ZDcyMzdiMGNk
N2UxMjgyNDBjMjYuLmZhYmJkMDNlYjBhZGMxMjA0ZTEwNDFhMTA4ZTA1Yjc2ZTQ1NDU1MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcAogICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5k
ZXggYmY5NGZkNDhjYWIxNGJkNTM0ODkyMTdmMjA0YmYyM2E4NjA0YzVlOC4uMTVjNDUxMzgwMDUw
NGFiMDNkNDkxNzliYjU0ZTgyMDBlMmQ0OTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1dvcmtlckZvbnRMb2FkUmVxdWVzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBmYjA3
MmNjMThjOTFmZTExMGU0YWRlZWE4MzMyODljMjgzYmI2ZGRlLi5kN2MxYWIyNmRjMWRlMjMyMzdk
YjQzZTk4YzEyMzU0M2QwMTk2NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc28KICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBy
ZXNwb25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiB7CiAgICAgaWYgKG1fZmFp
bGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBpZiAobGVuID09IC0xKQotICAgICAgICBsZW4gPSBzdHJs
ZW4oZGF0YSk7CisgICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSk7CiAKICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0
YSwgbGVuKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
aAppbmRleCBkMzM3YzUwMzZkYWMwZjY3NWExYzkyM2Q4ZGU2NDNmZjEzNTMzY2I4Li44ZDFhYTFi
YjE5MTg1ZDRmNzliYjZmYWQ0ZTllNzQxODIzZDZmMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDhmNzYwZDYyZjdkYjAwN2U1YzRhYmVkMzhhYTA4
Y2JlZmUwMTY1MTMuLmIyZTkxNzVhNzBlNjQwNzUxODY2YzRmNGFkZWViOTFiNzIzNWU3YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0
U3RvcmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmEKIAogICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEgPSBbJl0oY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIHdyaXRlRGF0YSkgewogICAg
ICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYnVmZmVyKCktPmJlZ2luKCk7IGl0ICE9IHNjcmlw
dC5idWZmZXIoKS0+ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICB3cml0ZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaXQtPnNlZ21lbnQtPmRhdGEoKSksIGl0LT5zZWdtZW50
LT5zaXplKCkpOworICAgICAgICAgICAgd3JpdGVEYXRhKGl0LT5zZWdtZW50LT5kYXRhKCksIGl0
LT5zZWdtZW50LT5zaXplKCkpOwogICAgIH07CiAKICAgICBpZiAoIXNob3VsZFVzZUZpbGVNYXBw
aW5nKHNjcmlwdC5idWZmZXIoKS0+c2l6ZSgpKSkgewpAQCAtOTgsNyArOTgsNyBAQCBTY3JpcHRC
dWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAg
ICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YShbJl0oY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhh
bmRsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBzaXplKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3
NzA0ZmU4MTM1MDYxNjUwOWEyODE3MTMyMmQ5ZWFlYTMwZTc1ZjczLi5lY2YwYTQ5YjMwMWRjZjkx
ODNjMWVhZjk4NTAwNjAwOTBhNDQwZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2RlcigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0
dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQordm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTAzOCw3ICsx
MDM4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGxlbiA9PSAtMSkKLSAg
ICAgICAgbGVuID0gc3RybGVuKGRhdGEpOworICAgICAgICBsZW4gPSBzdHJsZW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpOwogCiAgICAgaWYgKHVzZURlY29kZXIpCiAgICAg
ICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYzE4NTdjOTA1MTVmNmJlNzc3
MGJjMDRjOTU2NDM0MjM2YWI3NDRhOC4uNjNkNWIyNDAyOGVkZDdjMjllZTc1YjY0MDc4YWY5NjNi
NDJiMzgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRh
dGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJc0RvbmUo
Ym9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAppbmRleCA1N2VlNWRlZDI0YmRhMjc1ZTU4NmJkZjYxMzJhNTI0NTVhYmFjYzk2Li5kZjhhYmU0
MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgeG1s
RG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogCiAgICAgICAgIC8vIFdl
IGRvbid0IHNwZWNpZnkgYW4gZW5jb2RpbmcgaGVyZS4gTmVpdGhlciBHZWNrbyBub3IgV2luSUUg
cmVzcGVjdHMKICAgICAgICAgLy8gdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUgSFRUUCBo
ZWFkZXJzLgotICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRhID8gZGF0
YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25zdCBjaGFy
Kil1cmksIDAsIG9wdGlvbnMpOworICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVhZE1lbW9y
eShkYXRhID8gZGF0YS0+ZGF0YUFzQ2hhclB0cigpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOwogCiAgICAgICAgIHhtbFNl
dFN0cnVjdHVyZWRFcnJvckZ1bmMoMCwgMCk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1
bmMoMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMWQ4ZGFkYmU0Njc2MTkyZjY1YWU4ZTA4YzU2ODFj
NmIwY2NlOTc4Zi4uYTU0ZGMyODk5ODIwODgzNjZhZTc3YzA2YjQxZTU0NWI5Y2IwZTY4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcApAQCAtMzU5LDkgKzM1OSw4IEBAIHN0YXRpYyBpbnQgbWF0Y2hGdW5jKGNvbnN0
IGNoYXIqKQogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPGNoYXI+IGJ1ZmZlcikKKyAgICBP
ZmZzZXRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkKLSAgICAgICAgLCBtX2N1cnJlbnRPZmZzZXQoMCkKICAgICB7CiAg
ICAgfQogCkBAIC0zNzcsOCArMzc2LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRPZmZz
ZXQgeyAwIH07CiB9OwogCiBzdGF0aWMgYm9vbCBleHRlcm5hbEVudGl0eU1pbWVUeXBlQWxsb3dl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBkM2U2
MTYxYmQyYmRjZjhlYWYzMDEwN2M1MzZiZWQ0YjI3ZTA5YzA4Li4yMDg3MzczOWUwNTM0ZGRhNmE0
ODIyMjQxNGFhYzcxNjQ2NDA4ZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywg
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQ2NF90IGxlbmd0aCkKK3Zv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludDY0X3QgbGVuZ3RoKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDUyOWI2N2Qx
Nzc4MDkzNGU4MzU5YzAwMGE0MTM2YWU5OTA1MDI2NGMuLjliNDA3MDFjZjUzMjk4OTVlNDFiODQz
NGYwMTVmNjk5ZDQwZDM5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBk
YXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0
IGNoYXIqLCBpbnQ2NF90KTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90Kiwg
aW50NjRfdCk7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBmZWM2NWNm
NjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVlOTE1MTE0NDAwLi4xM2YxNzRlNDkzMTAwMWZlYmFlY2E2
YWNjMWRlZDkxZDFlMzE4Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlY2VpdmVkKFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkZW4KICAgICBpZiAoIXJlc291cmNlIHx8ICFy
ZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2UtPmRhdGFS
ZWNlaXZlZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKTsKKyAgICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5k
ZXggMzdiMjU0YjkwZTA0MWU3ZTAyMzI2NjUzZDA5Y2YwMmNhYWFkNGRlOS4uMWMwODZjYTBkMDZl
ODkxMjQ0MTYyMjYxMGUwN2RlOTI4ZTgyOWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKQEAgLTU3MCw3ICs1NzAsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25z
dCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgV1RGOjpz
d2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHku
CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
LSAgICAgICAgYm9keSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
LT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSB9OworICAgICAgICBib2R5ID0geyBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IHsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBmZmE5MTA0Y2Q1Y2Q2MWFmMTZkNGNj
MDgyMmEwN2Q3MzJiMjBmMDE2Li44YTU5YTM1NjZkNDZlZTMzMjVlNTcxYThhZTdkZDk3MDljNDE0
YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFN0b3JhZ2U6OlJlY29y
ZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBEYXRhIGhlYWRlcihl
bmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5Owog
ICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICAg
ICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OwogCiAgICAg
cmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJ
T0NoYW5uZWxDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAKaW5kZXggM2JmMTY2MzUxNDhiNGZjNDEwNGRlN2Ux
MGE1ZjM2YTkzMDUwZDVhMS4uZmE3NmFjNzYyZWFkYWEwN2IxNDM3NThhNTUyY2FiMGJjYmEzNDkz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgSU9DaGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3Jr
UXVldWUmIHF1ZXVlLCBGdW5jdGlvCiB7CiAgICAgcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2Zmc2V0LCBkYXRhLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIEZpbGVTeXN0ZW06OnNl
ZWtGaWxlKG1fZmlsZURlc2NyaXB0b3IsIG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmln
aW46OkJlZ2lubmluZyk7Ci0gICAgICAgIGludCBlcnIgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2ZpbGVEZXNjcmlwdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRh
dGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgaW50IGVyciA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKG1fZmlsZURlc2NyaXB0b3IsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAg
ICAgIGVyciA9IGVyciA8IDAgPyBlcnIgOiAwOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
cnIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKaW5kZXggNzYxYzA1Y2Y2ZDZlNjkyZjI3MTZmYWM2
YzM0Y2RjOTM2MWU4YzU4Yy4uODBiYWM0YjI4OWMwYjU3NDExMzE4NDVhNWQzMDZlNmFmOGY4MmZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oCkBAIC0xOTQsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgQ1N0cmluZyBtX3NuaWZmZWRDb250ZW50VHlw
ZTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9yZWFkQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBt
X3JlYWRCdWZmZXI7CiAgICAgdWludDY0X3QgbV9ib2R5RGF0YVRvdGFsQnl0ZXNTZW50IHsgMCB9
OwogICAgIEdSZWZQdHI8R0ZpbGU+IG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGU7CiAgICAgR1Jl
ZlB0cjxHRmlsZT4gbV9kb3dubG9hZEludGVybWVkaWF0ZUZpbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IDgzNDZlMzllODdhNGQw
NTgyNTNmZWNlYTY3MWMxMzJlNDc2OWUxYjkuLmRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNm
Y2Y0Y2IzM2VmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29weTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAg
ICByZXR1cm47CiAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKm1fYnVmZmVyKQotICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpLCAx
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50
LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApp
bmRleCBjM2YxODNiMmRiNWJiNTk0YzMwOWNkODliNzIwMjBlYTAxYWQyMWE3Li43ZTBkOGRiZTE5
MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKaW5kZXggNGIyMGM4NWFjNTM2MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNi4uY2Jk
MDRkOTliN2MyNzE2NzFjODc1MmIxOGE5MmU0MjE1ODU2YzllMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ4
MSw3ICs0ODEsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdAogCiB2b2lkIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVj
ZWl2ZURhdGEoc3RyZWFtSUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShz
dHJlYW1JRCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBA
IC01MDcsNyArNTA3LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYKICAgICBpZiAobV9wbHVn
aW5DYW5jZWxlZE1hbnVhbFN0cmVhbUxvYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGx1
Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCBkYTgyMDQ2NGY5M2M2MDRjZTg2OTc5YjY1
ZDZhZTY3NmYxZmMwMGIyLi5iZmYxZDE3ZmE2YTczZDllOWRjMDgwZWM5NTE5YTZkM2NjYzA0OGYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaApAQCAtNTksNyArNTksNyBAQCBzdHJ1
Y3QgSFRUUEJvZHkgewogICAgICAgICBUeXBlIHR5cGUgPSBUeXBlOjpEYXRhOwogCiAgICAgICAg
IC8vIERhdGEuCi0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKIAogICAgICAgICAvLyBGaWxlLgogICAgICAgICBTdHJpbmcgZmlsZVBhdGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCBmMGM4ZWVmNTNkMzU5N2UwZWE4YTExZGIxMDFlYTk0NjAxNDE5ZTE3Li4wODc4OGM4MmYyYTM2
NjZiZDE1NWRmYzNlNDU2YjBiYmU1MTAyZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgdm9p
ZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVy
KiBidWZmZXIpCiAgICAgLy8gb3ZlciB0aGUgSVBDLiBDb25uZWN0aW9uVW5peC5jcHAgYWxyZWFk
eSB1c2VzIHNoYXJlZCBtZW1vcnkgdG8gc2VuZCBhbnkgSVBDIG1lc3NhZ2UgdGhhdCBpcwogICAg
IC8vIHRvbyBsYXJnZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg1NzEuCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKmJ1ZmZlcikKLSAgICAg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZWxlbWVudC5zZWdtZW50LT5kYXRhKCkpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUo
KSwgMSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGVsZW1lbnQuc2Vn
bWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CiAjZWxzZQogICAgIFNo
YXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTMwNjEsNyArMzA2MSw3IEBA
IHN0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlKGNvbnN0IFNjcmlwCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlIHsgfTsKIAogICAgIGF1dG8mIHNlZ21lbnQgPSBzY3JpcHQuYnVmZmVyKCktPmJl
Z2luKCktPnNlZ21lbnQ7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Ondy
YXBNYXAoY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgp
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIHNoYXJlZE1l
bW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0PHVpbnQ4X3QqPihzZWdtZW50
LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IGZmZWUwNjExNDYwYmMx
ZWRiYWRhYWRhNzlkOGRlZjg2ZGYyOTk0N2YuLjVhMTgwYmVlZDEyZjVjZGNkZmJhZTY3MDJlNjkz
YjllYTZlMGE4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHRlbXBsYXRl
PD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxiCiB9CiB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCos
IHNpemVfdCk+JiBmdW5jdGlvbikKIHsKLSAgICBmdW5jdGlvbihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBmdW5jdGlvbihk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
NTc0LDcgKzU3NCw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250
ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpCiAgICAgaWYgKGZpbGUgPT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRS
dWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07Ci0gICAg
YXV0byBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CisgICAg
YXV0byBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShmaWxlLCAmaW52YWxpZEhlYWRlciwgc2l6
ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0
ZXNXcml0dGVuID09IHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgY2xvc2VGaWxlKGZpbGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRl
eCBlNzM1N2QxMTI1MGQ2MGVjOGM4MzhhODcwODE3MGUxZjJjNjhmNWRkLi4xZTE0OWNmMjM3MGE3
MTE1MTY5OTU0YTY1YjliYzllMjhiNzc5ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIGF1dG8gV2ViVVJMU2No
ZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2Vw
dGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5j
RGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAg
ICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAg
ICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RG
TW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCmluZGV4IGYyZWRjNWNmODdiZWFlY2ViODVmZWI2YzNlM2M5Y2U1MTgy
NWFjNjkuLjcwOGJiMjlmOGY3M2Q2ZWQ3ZmNmNjczOTBjNTgyYzFmZWJhZDU2OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyOjpEYXRhU2VudChtX2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2Vu
dCksIDApOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSksIDApOworICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFS
ZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgbGVuZ3RoKSksIDApOwogfQog
CiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKaW5kZXggNGQ2YTVhZmMzZTU5
NWU1Y2ZlYTM3MGIyMWY3ZWU4YTEzNzQxZTNlNC4uNDdlYTg2NjcxYjEzZDEzOTVjM2RhZDliZGE3
OWFiZjYxNmNiYTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkYXRhU2VudChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWw7
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
dm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4
YWYxZGM2YS4uNDg0YzBiZWQzNmIyZmVjYTFmZTgwZWI2ZGYyYzMwZDAzMGVkMjE4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
RGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBpbnQ2NF90IGUKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURh
dGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0g
ZGF0YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2Vp
dmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNv
dXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuY3BwCmluZGV4IGQwY2I3OWU1ZDFlNjVmOGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4
NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdkMWI1MTNlYjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01
OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVz
c2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1l
bnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewogICAgICAgICBjaGFubmVsLm5vdGlm
eVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5n
LmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3Nh
Z2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRh
UmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5k
YXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpIH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgfSwgWyZjaGFubmVsXShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewot
ICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpP
cENvZGVCaW5hcnksIGRhdGEsIGJ5dGVMZW5ndGgpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNz
YWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxl
bmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1l
c3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0
YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBb
JmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNv
ZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4Y2VwdGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZh
aWwobWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBj
b2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4
IDQ5OWRhMThkMTc0ZmU3ODkyOGI4NzNjYTcyY2I3ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJh
MGE4OTk0MzY3NDIyNGZkMWIyODAwNGNhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ciBzb3UKIHsKICAgICBpZiAoYXV0byogc291cmNlID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291
cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKGlzUmF3KQotICAgICAgICAgICAgc291cmNl
LT5zZW5kUmF3RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc291cmNlLT5zZW5k
U3RyaW5nRGF0YShDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCkpKTsKICAgICB9CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OmNoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGkKIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2Vp
dmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmll
ciwgYm9vbCBpc1JhdywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsK
ICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAoaXNSYXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEu
dmVjdG9yKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAg
ICAgcG9zdFRhc2tUb0hhbmRsZXIoaGFuZGxlcklkZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdU
Rk1vdmUodGV4dCkuaXNvbGF0ZWRDb3B5KCksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0
byYgaGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIGhh
bmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVm
ZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNl
aXZlUmF3RGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlU3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsK
ICAgICB9KTsKQEAgLTIzMCw5ICsyMzAsOSBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwg
dGV4dC5sZW5ndGgoKSB9IH0sIDApOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQordm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXpl
ICB9IH0sIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBD
OjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgc2l6ZSAgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVy
cm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdj
NTU0ZmRiMTVlZTIzOWRlNjJiMzUwY2UuLmY4YzA1ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFl
ZGEwYTczNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAg
LTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3Rh
dGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbFN0YXRlKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2
ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1v
dW50SXNEZWNyZWFzaW5nKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4
OTkwOTMyYzQzODJiYjYxZmYwMDQ5ODRjNGIzOTkwZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4
NDUzMzExY2YzMWNiZjJiODVjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgTlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9v
bCBpc0ZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZlciwgdWludDMyX3QgbGVuZ3RoLAogICAgICAgICBp
ZiAoIWZpbGVDb250ZW50cykKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VO
RDsKIAotICAgICAgICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAg
IHBvc3RCdWZmZXIgPSBmaWxlQ29udGVudHMtPmRhdGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9z
dEJ1ZmZlclNpemUgPSBmaWxlQ29udGVudHMtPnNpemUoKTsKIAogICAgICAgICAvLyBGSVhNRTog
VGhlIE5QQVBJIHNwZWMgc3RhdGVzIHRoYXQgdGhlIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThh
ODA2YmM2MDg2MjZmNDVjLi4wOTBkNWE0MGNlYmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmIHJlc3AKICAgICAgICAgcGx1Z2luU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhl
YWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5l
dHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVk
KTsKICAgICAKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludAogICAg
IG1fbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5l
dHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVCht
X2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKG1fc2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCmluZGV4IDI0NzQ5MTQ2ZDkwZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNj
ZjIuLmE1ODJiNjY1MmZhNTAxZDZlNzdkYzI0MjkwNmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaApAQCAtMTk1LDEyICsxOTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVh
bVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2
b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBv
dmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDJhNjAxY2MwOGI0MGU3NWY5YWUxOGE2MjVhODJjMjYxZmZkN2MyN2UuLmRiZmI4
YjZiODExYjM2NDc0YTVkZTZiYjZhN2YzOGM1YjAyNTIwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0
cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHMKICAgICBzdGFydChyZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9k
aWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9p
ZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gRGVsaXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVz
ZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRv
IGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNj
cmlwdFN0cmVhbShjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVz
dFVSTFN0cmluZywgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRlbGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgp
LCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHRDU3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcu
bGVuZ3RoKCkpOwogICAgIHN0b3AoTlBSRVNfRE9ORSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBA
QCBib29sIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzdGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNl
VVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAg
LTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRv
UGx1Z2luKCkKICAgICB9CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJE
YXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3Jl
YXRlIGEgdGVtcG9yYXJ5IGZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRl
eCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4N2Q0M2U1MjFmMDg5OTIzYWJlLi45YjA3MDk5ODg0NzIw
NDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYyOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNlVVJMLCBp
bnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsKIApAQCAt
NzMsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBub3Rp
ZnlBbmREZXN0cm95U3RyZWFtKE5QUmVhc29uKTsKIAotICAgIHZvaWQgZGVsaXZlckRhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGVsaXZlckRhdGFUb1BsdWdp
bigpOwotICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpOworICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpOwogCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKICAgICB1
aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDZjZGJlZGNkMDg1NzJlMGI2NTk5ODU0M2ZkZjQyZjI1
ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMwNmQwZmZkODJhY2M4MmYyOGIwOWNmZTAyMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAg
LTE3NiwxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CiAgICAg
dm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBm
aW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAg
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBm
aW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2Fz
Q2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFs
OwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFs
U3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
RmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50
KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBmaW5hbDsKQEAgLTM2Niw3ICszNjYsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQppbmRleCBjMDJmODQwYzQwNzQ4MDFiZDg3NGY2Y2Y4MzJlOTdiODg0MWY1YzQ5Li4xNTEz
ZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2NiYmQwNzExZjdkMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTcsNyArMTE1
Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291bnQpCit2
b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgY291bnQpCiB7CiAgICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAoIXJl
cXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlcXVlc3QtPmFkZERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGNvdW50KTsKKyAgICByZXF1ZXN0LT5hZGRE
YXRhKGRhdGEsIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJikKQEAgLTE2ODQsMTQgKzE2ODQsMTQgQEAgdm9pZCBQREZQbHVn
aW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJM
JiwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJl
cXVlc3RJRCk7CiAKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0
YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3RoKTsK
KyAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOwogICAg
IG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiB9CiAKQEAgLTE3MjksNyArMTcyOSw3IEBAIHZv
aWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExlbmd0
aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRMZW5n
dGggLSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVn
aW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaAppbmRleCBkM2M3YWM3MDUxMWZjNzJjODcwODRiOGEzNzRmOWQ2YzcyNjg1OWIw
Li4xMzU1Y2ZmNGViNzdmNmY3MTdkYjkyMGUyMTQwNThmYzE2YjJmZWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBm
aW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxs
cyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0g
ICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAgICAv
LyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4
IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYyMzg3MGE2MDllMzM5MzlhY2YuLjljZWQ3ZGEwNzUwMmY2
MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTMzMCw5ICszMzAsOSBAQCB2b2lkIFBs
dWdpblByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYgcmVzcG9ucwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShz
dHJlYW1JRCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVk
VGltZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotdm9pZCBQbHVnaW5Qcm94eTo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewotICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OlN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFSZWZlcmVu
Y2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgpKSwgbV9w
bHVnaW5JbnN0YW5jZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJl
YW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5j
ZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5ICszNTAsOSBAQCB2b2lkIFBsdWdpblByb3h5OjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMy
XwogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5D
b250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVS
TC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVh
ZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6Om1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9p
ZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2
ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgp
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaAppbmRleCAwMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEyZTU2MTJj
NmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgxNjhkZDNhNzM4ZmVkMmIwZGMwNzE0NGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg3LDEx
ICs4NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1J
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBi
b29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCBiNjRhY2FiZGY3NTNhYTg5ZTdiNzBlNGQ1NmU1NWQ3NzBlZDMyMDIxLi4zYTA5Njgz
ZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMwNzY4NDA3YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1l
VHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdp
bi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CiB9CkBA
IC00MDcsNyArNDA3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5t
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwg
bGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNl
LnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFp
bGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4MjhkMzBhMDZlOWQ4ZmRkNzhi
NTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40YTFmNWFjNTdhOWQ3NzU0ZTY0MDc4ZjdkYTQyYjU3NmEz
MzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdEZXN0cm95ZWQo
KSBjb25zdCB7IHJldHVybiAhbV9wbHVnaW4gfHwgbV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95ZWQo
KTsgfQogCiAgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CisgICAgdm9pZCBtYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQg
bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA4NTQxZGYzY2IyMjM5Y2FkOGFjN2Q1NmYzZTQ2MmQwZDVh
NzFlY2I1Li4wZTM0NjMxYWQ2ZmMyNDkxYjNkYjI3NmIzZjE0ZmQwNjFjZWU5NjAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtMTMwLDEyICsxMzAsMTIgQEAg
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsg
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CmluZGV4IDlkYWFiZTE0YTM0YjNjMDlmMjdkYzhkZjU0MzA0ZWU3NTMxNjk1ZTEuLmJlNDNjMGZk
ZGI1ZTE2MjcxYWVhOGU1Y2MyMDJkYzdlMTFhMjY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xl
YW51cCgpOwogICAgIAotICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwog
CiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVu
dCB7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJD
bGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2Vp
dmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2Vp
dmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmFpbChlcnJv
cik7IH0KICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBjbGllbnQtPmRpZEZpbmlz
aEJsb2JMb2FkaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmlu
ZGV4IDgzM2M4MmM1NGQzN2FlMDE1YTE4MWE3YjkzMjRmNzA1MzA3YzY4ZjQuLmM4ZjI0OGE2NDc2
NTc2YTI5MmM3NWQ1ZmFhNjhmNWFjNjNhNDc1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIEhUVFBCb2R5IHRvSFRUUEJvZHko
Y29uc3QgRm9ybURhdGEmIGZvcm1EYXRhKQogICAgICAgICBIVFRQQm9keTo6RWxlbWVudCBlbGVt
ZW50OwogCiAgICAgICAgIHN3aXRjaE9uKGZvcm1EYXRhRWxlbWVudC5kYXRhLAotICAgICAgICAg
ICAgWyZdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgICAgICBbJl0gKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50LnR5
cGUgPSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6RGF0YTsKICAgICAgICAgICAgICAgICBlbGVt
ZW50LmRhdGEgPSBieXRlczsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVt
ZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA1ZWQyMzFjODU1YzA1OWVkYWY3MzQ4MWQ1MGI5MzE4ZTRlZTYyMTAyLi41
ZGEyYmI5ZjRhMmQ3ZDQyM2JlZTg1NDQ3MWZlODUzZDNlNGEyNjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTExNDQsNyArMTE0NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICAgICB3ZWJQYWdlLT5kaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudChtX2ZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KQogICAgICAgICBsb2FkZXItPmNvbW1pdERh
dGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTExODEsNyArMTE4MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFp
blJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IDAp
LCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
ICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRh
ID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNv
bnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0
YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggOTM4NmVmYTU5YTU1NTU2NWUxYTQ2NGJiZDc4MmI3NTRjZWQ4MTk0My4uYWEzYTg2MDE3NTcy
NjU0MTM4NTJhNGI5ZTg5NTY0YmI0ZDFhM2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMDI4ZThjNmUzZTg4NjRjYzE2NTU5MGE0OWNiYWVlN2Q4
YmI2YTViYi4uMmFjMjVkY2QzOWU0ODBkZjkzNmM2YWViNzllYzIwYWZlYzJkNDQwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYgogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCi0gICAgVmVjdG9y
PGNoYXI+IG92ZXJyaWRlQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZl
cjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJy
aWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUs
IG92ZXJyaWRlQnVmZmVyKSkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKaW5kZXggNDdlM2Nh
OTZlOTNjNTE0MTg0MmE3MzNiYWQxMjY0Y2JmMTUyNDkyMS4uZGRjMDcxYjNhMjZhZjgyOGVjN2M0
NjNkNTFjNzEzODBlNTdlOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBz
aXplLCBjb25zdCB1aW50OF90KiBkYXRhKQogICAgIH0KIAogICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUsIDAsIERhdGFQYXlsb2FkVHlw
ZTo6RGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShk
YXRhLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHBy
b2Nlc3NOZXh0UGVuZGluZ1Rhc2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKaW5kZXggYzUzNjI1YTE4ODM4ZmQwZDI3M2Y2YjQ2NGU5NmMwM2FhY2MwMGMwOS4u
MTUyMDBlY2Q5MTkyNjhjMzQwN2Q5MTljMDY2NzE4YzkzMjQ2MTRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIAog
ICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUgbWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0KaW5kZXggNTdhYTRhODJkNmE2NzE4MTVlNDNiYTgwNTk0ODZiNzU2NWU1MGU2OS4u
MDg2MTVlNDlmNTEzMDNhNGY1OWNhZDA1MzljZmZlN2Q5YTA1YjBjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9z
dGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTExNSwxMiArMTE1LDEyIEBAIHZvaWQgSG9z
dGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0YXJ0U3RyZWFtKE5TVVJMICpyZXNwb25zZVVSTCwg
bG9uZyBsb25nIGV4cGVjCiAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihbaGVhZGVycyBieXRlc10pKSwgW2hlYWRlcnMg
bGVuZ3RoXSk7CiB9CiAgICAgICAgICAgICAgICAgICAgICAKLXZvaWQgSG9zdGVkTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIF9X
S1BIU3RyZWFtRGlkUmVjZWl2ZURhdGEobV9pbnN0YW5jZS0+aG9zdFByb3h5KCktPnBvcnQoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnBsdWdpbklEKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0cmVhbUlELAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4oYnl0ZXMpLCBsZW5ndGgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oYnl0ZXMpKSwgbGVuZ3RoKTsKIH0KICAgICAKIHZvaWQgSG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CmluZGV4IDc1NDI2OTM4MTJlNzhiN2Y4OWE4ZTM0NDAzNzMzMDA4YWZjM2YyOTUuLmVkMGUzMTQz
ZWY4YzA2YWNjOTg4YWEyNGFiODgyN2EzOThmNWJhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdp
blJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aDpbSlNEYXRhIGxlbmd0aF0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnRT
dHJlYW1XaXRoUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJl
Y2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtK
U0RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsK
ICAgICAgICAgc3RyZWFtLT5kaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA3NjExNzFjZWE3Y2E1ZmE2NzI4
YzlkYzAwZDJlYjdiMmQxOGY3NzgwLi42NGMyNzdiNWY0M2QxNTFiZGE0MTViZWM5YjU5ZDVmM2Nj
ZmMwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC01
MTksNyArNTE5LDcgQEAgLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJl
Y2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYg
KEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtKiBtYW51YWxTdHJlYW0gPSBfcHJveHktPm1hbnVh
bFN0cmVhbSgpKQotICAgICAgICBtYW51YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAg
ICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2lu
VmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaAppbmRleCAyYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzViODNl
YzEzMDZjLi4xOTM5MGI1YzAyYTc1Zjc5Zjk2NmY4MWE0MWEyZDcwNTY1NzhmMDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lT
dHJlYW1XaXRoRXJyb3IoTlNFcnJvciAqKTsKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUg
bWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGY4ODkw
ZDA1MTZiMjEyYWNmZTc2OTY2NDI1ZGU1NDQxMDRjOWE2OTQuLjRiNGRkYzAwNGEyNmEzZWE2NDlj
MjY5MTU4MTRlNTY2MjBjOTU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtNjExLDcgKzYx
MSw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQogICAgIGRlc3Ryb3lTdHJlYW1XaXRoUmVhc29uKE5Q
UkVTX0RPTkUpOwogfQogCi12b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQordm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzTm9Db3B5Oih2b2lkKilieXRlcyBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDMzYmE1N2MxNTVmMThhNzIwY2ZjNzlkNDZhZjM1NWQ3OGUw
OTVlOWMuLmE4YTJlZTgxNzFhMmRiOGQ4MmM4YmIwNWE5OWRkMDA0MTY5ZWFlZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmll
dyAqKXBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgfQogCiAgICAg
aWYgKF9tYW51YWxTdHJlYW0tPnBsdWdpbigpKQotICAgICAgICBfbWFudWFsU3RyZWFtLT5kaWRS
ZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtk
YXRhIGxlbmd0aF0pOworICAgICAgICBfbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7
CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZEVy
cm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTExMjcsNyArMTEyNyw3IEBAIC0gKHZvaWQpZXZhbHVh
dGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVx
dWVzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgCiAgICAg
ICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwotICAg
ICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
SlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHN0cmVhbS0+ZGlkUmVj
ZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtKU0RhdGEgYnl0ZXNdKSwg
W0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAgc3RyZWFtLT5kaWRGaW5pc2hMb2FkaW5nKDApOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJkNTIyM2EwY2UxNTBjZjM1
YTI4Yjc1NTA0ODAwNGMxZmNiNTRhYTYuLjE1MmZkYTFmNmVkNTdlMjk5YWRlMzRkMDdlZThkYmI0
ZTJjMWVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7
IH0KICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2
b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwg
aW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
ZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFs
SGlzdG9yeSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlu
a3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNjM0MjIwMDVmZWY0
ZmIwOWNmNjdjYTIzZGYxMDJjYTc0YzVmZjk1YS4uOGUxYjI0N2ZmN2EyMWVlN2RiMzgxYzY0MGUx
MDY1YWI4Y2FhZDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEwMDUsNyAr
MTAwNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0
ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpCiB7CiAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5P
XSk7CiAgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA0MTM5
YmI1YTkxNjgzZTY1YWNjMDgyNTNiZWNiM2ZkZDBhYmM2M2Q5Li5mZDMxMDAzNTAxZmZjYzNjMDFh
OTJmOTU3YmMzNGNkMmRiYTFmODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTk4Miw3ICs5ODIsNyBAQCAtICh2b2lkKV9jb21taXREYXRhOihO
U0RhdGEgKilkYXRhCiAgICAgYXV0byogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5k
b2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3ByaXZh
dGUtPnNob3VsZENyZWF0ZVJlbmRlcmVycyk7CiAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCBjaGFyICopW2RhdGEg
Ynl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCB1aW50OF90KilbZGF0YSBieXRl
c10sIFtkYXRhIGxlbmd0aF0pOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggNWIxYmZiMmQzNDE3NGM2OGEyYjQwYmQ0YzdkMWFkYjhkMzI5ZDVmOS4uNGQwNDBm
NTY0NmViODI0MWE5MmJjN2MyZGM3OGY2ZGZkOTZkYWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgbG9hZGVyLT5jb21taXREYXRhKGRh
dGEsIGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDhhYTdhYTMxZmU4
MjVlYzc5NWNmMWIzZTNmYjNlNTNiZmU2Yjg3OWYuLjZkYWMwYjA1MjE4MzkxNjYyMDg5NjQxZjY1
YWU5NDJjMjliODk2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzEx
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJy
aWRlOwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAxY2E4ZDM4ZDUzNTMzODQ3NDA5N2JiNDkwNjA0NTNlNjUyOWM5M2E5Li45MmI3YmQ0
YjAyMjljNGU0M2Y1MTQ1MzBkNGIyNTVkODBjNTFlNjU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMDMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVp
bnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1
ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2
NjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZl
Y3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBT
aGFyZWRCdWZmZXIuIEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1
cm4gYSBgY29uc3QgdWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBv
dXIgcHJlZmVycmVkIHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja0J1ZmZlcik6CisKIDIw
MjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkgZm9yIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcAppbmRleCBiZWM3ZDExOWVhODE5YjAxOTlhODczZjAyMDc2NmQ0MTkyMDFhYzJh
Li5lYTczMmE4ZTBlMGMyNmM5ZDkwYTEyMzU5NDBhY2RlNTdlMjE2M2E2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMTAz
LDkgKzEwMyw5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
cikKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VT
ZWdtZW50cykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMCgweDQwMDAsICdhJyk7Ci0gICAg
VmVjdG9yPGNoYXI+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0
b3IyKDB4NDAwMCwgJ2MnKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdh
Jyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOworICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwpAQCAtMTYwLDcg
KzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIo
Y29uc3QgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBl
Y3RlZCkKK3N0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCiB7CiAgICAgLy8gZXhwZWN0
ZWQgaXMgbnVsbCB0ZXJtaW5hdGVkLCBidWZmZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGgg
PSBzdHJsZW4oZXhwZWN0ZWQpOwpAQCAtMTcxLDkgKzE3MSw5IEBAIHN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
ciogZXhwCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBW
ZWN0b3I8Y2hhcj4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8Y2hhcj4g
czIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczMgPSB7J2knLCAn
aicsICdrJywgJ2wnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywg
J2QnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKICAgICAKICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMSkpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBnZXRTb21lRGF0YSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsK
LSAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3RvcjxjaGFyPj4mJiBjb250ZW50
cykgeworICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYm
IGNvbnRlbnRzKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCiAgICAgICAgICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0
KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3RvcjxjaGFyPih7
J2EnLCAnYicsICdjJywgJ2QnfSkpOworICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhf
dD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdl
dCgpKTsKICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7CiAg
ICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hl
eFN0cmluZykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0
MSkpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7Cg==
</data>
<flag name="commit-queue"
          id="452129"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430622</attachid>
            <date>2021-06-04 15:32:58 -0700</date>
            <delta_ts>2021-06-04 15:46:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604153257.patch</filename>
            <type>text/plain</type>
            <size>264847</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDI1ZDQ5NTZjODgzYzU4NzQxYjM4YmMwMDUwNmMwMzY0YTc1MmNhNjUu
LjU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlk
RmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDZjOWE5YTIxYTBjNjNm
MWM4YTY5NTE2YmU5YmUwODJlYzQyN2UzYTcuLjk0MzgzYTFjNzcyNjMyZjU3MThkN2RmMzdlNTc1
NGE2MzJiNTBmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJl
dmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCitib29sIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
aW5kZXggMGRhYzdmZjAzY2M4NDZkMTg5NmEwODhmNjI2MzAyODYxNmJkZmE2OS4uYjZlNjhmM2M3
MjlmYjQxYzkyOWE2ZDE3OGRhNjAzOTlmZGM5MWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVy
cm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4p
OwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKaW5kZXggMGYyZjA0MTU0MzEzMjM1MjIzY2RmZmI3YzVjNGMzNjk0YzRlOTAzNC4uZTEwZDhk
OTE2ZmIwZjI1ZmJlYTNmN2FjMmFmNTVmNTcwYjIwZGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggZWU0ZjM2MWRkMDgz
ZGU3M2M5YzRkZTg4MTQxMjQwYWYxNWZiMjkwMy4uM2I5NjAyMTA5NTk2MzI1YTBkNDc0MzJlNDY2
ZjQ1ZjgyZDE2MTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBpbnQgRmlsZUhhbmRsZTo6d3JpdGUoY29uc3Qgdm9pZCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAg
IHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5k
bGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggNThjZjE0MDQ4ZDM1NTMwMjA3
N2YxYzRlZDUxNDkyNWE1YzdkOTE0Yy4uM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDcz
M2U5ZDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50
RmlsdGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
Q29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7
CiAgICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9
IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggODI1ODY1M2YyNTUxODJmNzRlY2ZkNGQ4N2FhZTk5YWEx
NjYzZDExMS4uMDA0MGE4YTYxMTg3ZmIwZTQ5ZTg2ZjMzNzBiYjhmODIzNzc1YWZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCkBAIC01Miw3ICs1Miw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCiAgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZl
Y3RvcjxjaGFyPiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTgxLDE1
ICs4MSw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPGNoYXI+JiYgdmVjdG9yKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQot
Ly8gRklYTUU6IE1vdmUgdGhlIHdob2xlIGNsYXNzIGZyb20gVmVjdG9yPGNoYXI+IHRvIFZlY3Rv
cjx1aW50OF90PiBhbmQgbWFrZSB0aGlzIGVmZmljaWVudCwgcmVwbGFjaW5nIHRoZSBWZWN0b3I8
Y2hhcj4gdmVyc2lvbiBhYm92ZS4KIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIgeyB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpIH0pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CkBAIC0xMDIs
NyArOTYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3QKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmVjdG9yPGNoYXI+IGNvbWJpbmVkRGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2l6ZSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKICAgICAgICAgY29t
YmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50
LT5zaXplKCkpOwpAQCAtMTEzLDcgKzEwNyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdAogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2NvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjIsMTEgKzExNiw2IEBAIGNv
bnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGFBc1VJbnQ4UHRyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSgpKTsKLX0KLQogU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVk
QnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAtMTUwLDcgKzEzOSw3IEBAIFN0cmluZyBT
aGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGFy
cmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3Jl
YXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICV6dVxuIiwgc2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNTgsNyArMTQ3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogICAgIHNpemVfdCBw
b3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykg
ewotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
ICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNp
emUoKSk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKICAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudC5zZWdtZW50LT5zaXpl
KCk7CiAgICAgfQogCkBAIC0xNzgsMjIgKzE2NywxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3I7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7Ci19Ci0KLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
VmVjdG9yPGNoYXI+JiYgZGF0YSkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKQEAgLTI0MCwyMCArMjI0
LDIwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRh
dGEuZGF0YSgpOyB9LAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsg
cmV0dXJuIGRhdGEuZGF0YSgpOyB9LAogI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0
YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkpOyB9LAorICAgICAgICBbXShjb25z
dCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBH
UmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorICAgICAgICBb
XShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKICNlbmRpZgotICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1cm4g
V1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzI2LDcgKzMxMCw3
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29u
c3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAg
W10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwK
ICNpZiBVU0UoQ0YpCiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRh
KSB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKQEAgLTM1
Myw3ICszMzcsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owog
fQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Citjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CkBAIC0z
NjcsMTAgKzM1MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGxlbmd0aCAqIDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJh
Y3RlcnMuCi0gICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpOwogICAgIGlmIChsZW5ndGgpIHsKICAg
ICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENoYXIqIGQg
PSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3ICszNjcsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7CisgICAgYnVmZmVyLnNo
cmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDhhYzY5ZDU5MTAzNmYxZjYwMGZlODM4
NGY2ZmIyOWQ5OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdlOTA5M2RmOGVkYjYxZWFlYWRkZDAwZWI4
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02NiwxNCArNjYs
MTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAKICAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAjaWYgVVNF
KEZPVU5EQVRJT04pCkBAIC05OSw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIGRh
dGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBz
ZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgogICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21l
bnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IEF1ZGl0
IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0
ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAg
Y29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAogICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTExLDkgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTEyMywxMCArMTIyLDExIEBAIHB1
YmxpYzoKICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBu
ZXcgRGF0YVNlZ21lbnQuCiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRh
KQorICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OwpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjaWYgVVNFKENGKQogICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2VnbWVudChG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFy
PiwKKyAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQogICAgICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKQEAgLTIwNCw5ICsyMDQsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIzNSw4IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNmZWU2MTQyNTEzY2MyMmU2Zjg5ZGM0Yzgy
NGZhMDcwMmUwOWQuLjVlNDQ2NmNkM2YxNzE4OGEyN2MwY2RlMWVhOGE4MDFiMDJhMjQ3ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKQEAgLTQyLDI0ICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZm
ZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAs
IG1fc2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVh
Y2hlZEVuZE9mRmlsZShmYWxzZSkKICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKIH0KIAogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9u
KDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVudExlbmd0aCgwKQotICAgICwg
bV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKICAgICBzZXRTZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0K
QEAgLTc1LDcgKzYzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6c2V0U2VwYXJh
dG9yKGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICBtX3NlcGFyYXRvci5hcHBlbmQoc2VwYXJh
dG9yLCBzdHJsZW4oc2VwYXJhdG9yKSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0b3Ip
Citib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+
JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewogICAgIGlmIChtX3JlYWNoZWRFbmRP
ZkZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzLDcgKzcxLDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXQKICAgICBjaHVuay5jbGVhcigpOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIHdoaWxlIChtX3NlZ21lbnRJbmRleCA8IG1fc2VnbWVudExlbmd0aCkgewotICAgICAg
ICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4Kytd
OworICAgICAgICAgICAgYXV0byBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVu
dEluZGV4KytdOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0
b3JbbV9zZXBhcmF0b3JJbmRleF0pIHsKICAgICAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJ
bmRleCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04obV9zZXBhcmF0b3JJbmRleCA8PSBtX3NlcGFyYXRvci5zaXplKCkpOwpAQCAtMTEy
LDcgKzEwMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0
b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgIGlmICghbV9zZWdt
ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkZpbGUgPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKQotICAgICAgICAgICAgICAgIGNodW5r
LmFwcGVuZChtX3NlcGFyYXRvci5kYXRhKCksIG1fc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAg
ICAgICAgIGNodW5rLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3Nl
cGFyYXRvci5kYXRhKCkpLCBtX3NlcGFyYXRvckluZGV4KTsKICAgICAgICAgICAgIHJldHVybiAh
Y2h1bmsuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIyLDE0ICsxMTAsMTQgQEAg
Ym9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1
bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKIAogU3RyaW5nIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpuZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soYm9vbCBpbmNsdWRlU2Vw
YXJhdG9yKQogewotICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGlmICghbmV4dENodW5rKGRhdGEsIGluY2x1ZGVTZXBhcmF0b3IpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gZGF0YS5zaXplKCkgPyBTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgOiBlbXB0
eVN0cmluZygpOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVj
dG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKK3NpemVfdCBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0
ZWRTaXplKQogewogICAgIGRhdGEuY2xlYXIoKTsKICAgICBpZiAocmVxdWVzdGVkU2l6ZSA8PSBt
X3NlZ21lbnRMZW5ndGggLSBtX3NlZ21lbnRJbmRleCkgewpAQCAtMTQxLDcgKzEyOSw3IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8Y2hhcj4mIGRhdGEsIHNp
emVfdCByZXF1ZXN0ZWRTaXplKQogICAgIGRhdGEuYXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVu
dEluZGV4LCByZWFkQnl0ZXNDb3VudCk7CiAKICAgICBzaXplX3QgYnVmZmVyUG9zaXRpb24gPSBt
X2J1ZmZlclBvc2l0aW9uICsgbV9zZWdtZW50TGVuZ3RoOwotICAgIGNvbnN0IGNoYXIqIHNlZ21l
bnQgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBudWxscHRyOwogCiAgICAgLy8g
TGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgogICAgIC8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIGp1c3QgaXRlcmF0aW5n
IHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNzU2ZWVlMjQ2YjBlMmNh
ZTIwYzdlZTc3NzllNjVjMGY4ZDczNDYzYy4uYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQx
ZTI1ZmQ0Yzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCkBAIC00OCwyNCArNDgsMjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2Ugd2hlbiB0aGUg
ZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9y
PGNoYXI+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CisgICAgYm9vbCBu
ZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBm
YWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRo
ZSBidWZmZXIgaGFzIGJlZW4gcmVhY2hlZC4KICAgICBTdHJpbmcgbmV4dENodW5rQXNVVEY4U3Ry
aW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKTsKIAog
ICAgIC8vIFJlYWRzIHNpemUgYnl0ZXMgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gdGhlIGJ1
ZmZlciwgd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVmZmVyIHBvc2l0aW9uLgogICAgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBUaGF0IG51bWJlciBtaWdodCBiZSBsZXNzIHRo
YW4gdGhlIHNwZWNpZmllZCBzaXplIGlmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB3YXMgcmVhY2hl
ZC4KLSAgICBzaXplX3QgcGVlayhWZWN0b3I8Y2hhcj4mLCBzaXplX3QpOworICAgIHNpemVfdCBw
ZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6CiAgICAgU2hhcmVkQnVm
ZmVyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbjsKLSAgICBjb25zdCBj
aGFyKiBtX3NlZ21lbnQ7Ci0gICAgc2l6ZV90IG1fc2VnbWVudExlbmd0aDsKLSAgICBzaXplX3Qg
bV9zZWdtZW50SW5kZXg7CisgICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CisgICAg
Y29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NlZ21l
bnRMZW5ndGggeyAwIH07CisgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIGJv
b2wgbV9yZWFjaGVkRW5kT2ZGaWxlOwotICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvcjsKLSAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleDsKKyAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3Ig
eyBmYWxzZSB9OworICAgIHNpemVfdCBtX3NlcGFyYXRvckluZGV4IHsgMCB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMGJmMGM0YWZiMDFiNWExYjk5ZWE3YzlmNjZh
MzFjMDYyY2UzYWFhMi4uMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXgg
Mzg3MTczOGU1ZDVjMDUzY2JkYjJkNGJiOWI3MzAzODJmYmNhYzQyZS4uNDI5MGRiMTI4ZDAwMGE0
MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFwaG9y
ZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CmluZGV4IDU2YTc4OGNkNzUwNDhlZmRlY2FlZTY2ZWNmYWYwZjk2NTBkYzc4NmIuLjA2OGNkY2Iz
ODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRl
eCA0OWY4ZmE0YmNlMGQwZjg4MGJhNDM3NTEzYTMyNjZmNTZmNWEwMDYxLi45ZDBjZTkwYzBiMDE5
MjgwNjU4ZTg3MTM4YzFjNTFkMTc2NDY3ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVwZGF0ZUZp
bHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFk
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YS5nZXQoKSBsZW5ndGhdKTsKICAgICBt
X3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9u
ZTpOT11dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE1ZTYwZjIwNWNlZDJh
NTY0ODlhNDc0ZjAxMTQ3MmI3OThhNmMzNWMuLjQ1ZDE0YWQ5MDAzNzNhMjdiZjNiMmYzMzIzODIy
ZmU4ZjM0MTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5
KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgY29uc3QgY2hhciogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwogICAg
IHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkK
ICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0
YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggZTFlNWMzMDQzNTZjMGFhOWQ5YzA1
NDVkOTZhMzVhNjYzY2RiNzgzZS4uNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4
MTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXI7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAg
IHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpOwogCiAg
ICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKSkKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwog
ICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhf
dCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAg
bV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFy
KCk7CkBAIC0yMDUsOSArMjA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3ByZW11bHRpcGx5
QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwotICAgICAgICBWZWN0b3I8
Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNp
emUoKSB9OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMt
PmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwogICAgICAgICBtX3BpeGVscyA9IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNo
YXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkp
KTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRzKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMz
ZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3MTkuLjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2My
ZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2Rl
bDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaAppbmRleCAzZWQ0ZTA1YzQzOTRkZmY2M2FlNWZjNmJhMWVmMWE4MDQyNTQz
Y2I3Li5hMjhlNjFjMDJhNzJjYTkzODlhNjg2MzI1YjU0NmUzMWM0YzA0OTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgY2hhciosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCAxZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1
MTk4ZjgzNTA2ZGUzOTM3Li5iMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPGNoYXI+JiB2
ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQorc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPHVp
bnQ4X3Q+JiB2ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQogewogICAgIHVpbnQzMl90IGJpZ0VuZGlh
blZhbHVlID0gaHRvbmwodmFsdWUpOwotICAgIHJldHVybiB2ZWN0b3IudHJ5QXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPigmYmlnRW5kaWFuVmFsdWUpLCBzaXplb2YoYmlnRW5kaWFu
VmFsdWUpKTsKKyAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjx1aW50OF90Kj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MTZf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MTZfdCB2YWx1ZSkKIHsKICAgICB1aW50MTZfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25z
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCiBzdGF0aWMgY29u
c3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwpAQCAt
OTMsNyArOTMsNyBAQCBib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICNpZiBVU0Uo
V09GRjIpCiBjbGFzcyBXT0ZGMlZlY3Rvck91dCA6IHB1YmxpYyB3b2ZmMjo6V09GRjJPdXQgewog
cHVibGljOgotICAgIFdPRkYyVmVjdG9yT3V0KFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorICAgIFdP
RkYyVmVjdG9yT3V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQogICAgICAgICA6IG1fdmVjdG9y
KHZlY3RvcikKICAgICB7IH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmICghbV92ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fdmVjdG9yLnNpemUoKSAr
IG4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX3ZlY3Rvci5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBuKTsKKyAgICAgICAgbV92ZWN0b3IuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG9mZnNldCArIG4gPiBtX3ZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICBtX3ZlY3Rvci5ncm93
KG9mZnNldCArIG4pOwogICAgICAgICBtX3ZlY3Rvci5yZW1vdmUob2Zmc2V0LCBuKTsKLSAgICAg
ICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBuKTsKKyAgICAgICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBuKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MjIsMTEgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3Rvcjxj
aGFyPiYgbV92ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX3ZlY3RvcjsKIH07CiAjZW5k
aWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjxj
aGFyPiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBW
ZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1w
dHkoKSk7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogCiAjaWYgVVNFKFdPRkYyKQogICAg
IGlmIChzaWduYXR1cmUgPT0ga1dvZmYyU2lnbmF0dXJlKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHdvZmZEYXRhID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDhfdCo+KHdvZmYu
ZGF0YSgpKTsKKyAgICAgICAgYXV0byogd29mZkRhdGEgPSB3b2ZmLmRhdGEoKTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IHdvZmZTaXplID0gd29mZi5zaXplKCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBzZm50U2l6ZSA9IHdvZmYyOjpDb21wdXRlV09GRjJGaW5hbFNpemUod29mZkRhdGEsIHdvZmZT
aXplKTsKIApAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyIHx8ICFp
c1dPRkYoKmJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb252ZXJ0ZWRGb250OworICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKICAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKaW5kZXggNWMwY2E0ZmMyMDdkMjEwZmQwODA1NGM0ZmZhN2VmY2EzM2EwYjEyZC4u
M2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQg
dG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5
KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50
byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjxjaGFyPiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0
IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYg
dGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IDMwY2Y3OWVjZmRmMjU4MmY1NDUyYWJmMjEyOTYxMjg1NjMzZjc4MzAuLjI0NzcyOGU2Y2Jj
MDdmMjgyZmE1OGY1MTdiOGE2ZmUwNmU1YjA2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgog
ICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNo
YXIqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCiB7CiAgICAgQVNT
RVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
IHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwog
fQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQordm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCmluZGV4IGVmNWU1ZmI5ZTEzNjRhZjY3NTdlNTBmOGI4ZWYxNzJiZmMwZDYxNzku
LmEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAgICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIGNvbnN0IGNo
YXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247CisgICAgYXV0byog
c291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKICAgICBzaXplX3QgYW1v
dW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKICAg
ICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7CiAgICAgcmV0dXJuIGFtb3VudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0
aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGls
aXRpZXNDRy5jcHAKaW5kZXggM2Y4ZGUyNGVjMTQyNmJiNzdkNzdiODk3YzEzNGZmYWI5YzY2MDhl
ZC4uYTFlNWI3MzJmYjBiZjRlNTQyZDQxYmE5ZTg2OWRmMDFkNjU5ZTM1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXND
Ry5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGMKICAgICBDR0Rh
dGFDb25zdW1lckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIFtdKHZvaWQqIGluZm8s
IGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgewogICAgICAgICAg
ICAgYXV0byBoYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlKj4oaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
aGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgYnVmZmVyLCBjb3Vu
dCk7CiAgICAgICAgIH0sCiAgICAgICAgIG51bGxwdHIKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCAzYmE0YjhjOTBlYjBmMjE5MDdhNDI4
ZTMzN2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVk
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
Nzc0LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgdGVtcG9yYXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAg
ICAgbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0
aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1lbWNweShsb2NhdGlvbiwg
b3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEo
YWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNDUwY2RhMDM3Nzdh
ODJlNTQyNWI4ZmE4MWQyODcwZDVjM2I2MGQxYS4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoRlRfTG9h
ZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFibGVTaXplKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YSh0YWJsZVNpemUpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHRhYmxlU2l6ZSk7CiAgICAgRlRfVUxvbmcgZXhwZWN0
ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1Nm
bnRfVGFibGUoZnJlZVR5cGVGYWNlLCB0YWcsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8RlRfQnl0ZSo+
KGRhdGEuZGF0YSgpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAh
PSBleHBlY3RlZFRhYmxlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggYTE2MWM0N2M1MGRiODI4NDdlNmZmMmQ2ODUyOGJkOGNjYzcyMmQ1MS4uMGRlYTgw
ZTJiY2E0NzhlZDRjMDJhZTFhMGIwNTY1NGI4NGQyOWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBk
YXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0
YSA9IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAg
ICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4o
KTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDBiODc5NmFiN2I0N2Q5ZjgxMTNiZTk0ZWNkYTk2
M2ZlM2MwMGJmNWUuLjlkNDljOWYzN2JlMmU1NGNkYTc2MGE0ZGYyNmE0YjNlZGUzODc3ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmly
dHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDg3LDcg
KzEwODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDQ0OTgzNzM2NjFhN2ViMDk5ZmI5ODQ1NmU5NGE0MWQ4
NGFkYjFjMTYuLjE3MTM1YTE0MWNkNmZhMmNlNmE4NzJjNzczMTllNDMzYjM4NzYwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhCiAKIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3Nl
cnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGNlcnRpZmljYXRlLT5kYXRhQXNVSW50OFB0cigpKSwKKyAgICBPcGVuQ0RNRXJyb3IgZXJy
b3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3Rl
bS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAg
ICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwogICAgIGNhbGxiYWNrKCFlcnJvciA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZCk7CiB9CkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIEdTVF9ERUJVRygicGFyc2luZyBidWZmZXIgb2Ygc2l6ZSAlenUi
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXIt
PmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAo
ImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICAgICAgU3Ry
aW5nVmlldyBwYXlsb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXItPmRh
dGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZ1ZpZXc+IHR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCI6VHlwZToiKSwg
Nik7CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpr
ZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NU
X0VSUk9SKCJDRE0gZXJyb3IiKTsKLSAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3Nh
Z2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAo
ImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjaGFsbGVuZ2VDYWxsYmFjayA6IG1fY2hhbGxlbmdlQ2FsbGJhY2tzKQog
ICAgICAgICBjaGFsbGVuZ2VDYWxsYmFjaygpOwogICAgIG1fY2hhbGxlbmdlQ2FsbGJhY2tzLmNs
ZWFyKCk7CkBAIC01MDcsMTEgKzUwNywxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAg
IG1faW5pdERhdGEgPSBJbml0RGF0YShpbnN0YW5jZS0+a2V5U3lzdGVtKCksIFdURk1vdmUoaW5p
dERhdGFTaGFyZWRCdWZmZXIpKTsKIAogICAgIEdTVF9UUkFDRSgiR29pbmcgdG8gcmVxdWVzdCBh
IG5ldyBzZXNzaW9uIGlkLCBpbml0IGRhdGEgc2l6ZSAlenUiLCBtX2luaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKLSAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwor
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgp
LCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKIAogICAgIE9wZW5DRE1TZXNzaW9uKiBz
ZXNzaW9uID0gbnVsbHB0cjsKICAgICBvcGVuY2RtX2NvbnN0cnVjdF9zZXNzaW9uKCZpbnN0YW5j
ZS0+dGh1bmRlclN5c3RlbSgpLCB0aHVuZGVyTGljZW5zZVR5cGUobGljZW5zZVR5cGUpLCBpbml0
RGF0YVR5cGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51
bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7Cisg
ICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAm
c2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBzZXNzaW9uIik7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXRE
YXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdl
Lmhhc1BheWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3Nh
Z2UtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwg
bWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2Ut
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5z
ZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUobWVzc2FnZSkp
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBpZiAoIW1fc2Vzc2lvbiB8fCBtX3Nlc3Npb25JRC5pc0VtcHR5
KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Npb24uZ2V0KCksIHJlc3BvbnNlLT5k
YXRhQXNVSW50OFB0cigpLCByZXNwb25zZS0+c2l6ZSgpKSkKKyAgICBpZiAoIW1fc2Vzc2lvbiB8
fCBtX3Nlc3Npb25JRC5pc0VtcHR5KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Np
b24uZ2V0KCksIHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpKQogICAgICAgICBz
ZXNzaW9uRmFpbHVyZSgpOwogfQogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2Fn
ZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIFdU
Rk1vdmUobWVzc2FnZSkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmlu
ZGV4IGU4OWZiNTk5ODYyMTViOWQ1ZGFlMTc5ZDJkNzU5Y2VmNzQxODE0NzYuLmM4NjRiMmMzYThm
YjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVm
ZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBvc2l0aW9uKSAtIGJ1ZmZlci5k
YXRhKCk7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggYTAzZTcxYWIxYmMzYjFj
YTUwN2NmMzhlMjc0MTg3YmVjMGE5ZDE5MS4uNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYy
M2FlMjRkNDBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRl
ciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAgICAgb3ZlcmxheUxlbmd0aCA9IDA7CiAK
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGZvbnREYXRhLT5zaXplKCk7Ci0gICAgY29uc3QgY2hh
ciogZGF0YSA9IGZvbnREYXRhLT5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGZvbnREYXRhLT5k
YXRhKCk7CiAKICAgICBFT1RQcmVmaXgqIHByZWZpeCA9IGVvdEhlYWRlci5wcmVmaXgoKTsKIApA
QCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERh
dGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKICAgICAvLyBJZiBw
b3NzaWJsZSwgZW5zdXJlIHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9mIHRoZSBm
dWxsIG5hbWUuCiAgICAgaWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5ndGggJiYg
bWVtY21wKGZhbWlseU5hbWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewotICAgICAg
ICBvdmVybGF5U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnVsbE5hbWUpIC0g
ZGF0YTsKLSAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGZhbWlseU5hbWUpIC0gZGF0YTsKKyAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGZ1bGxOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJsYXlEc3Qg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmYW1pbHlOYW1lKSAtIGRhdGE7CiAg
ICAgICAgIG92ZXJsYXlMZW5ndGggPSBmYW1pbHlOYW1lTGVuZ3RoOwogICAgIH0KICAgICBlb3RI
ZWFkZXIuYXBwZW5kQmlnRW5kaWFuU3RyaW5nKGZ1bGxOYW1lLCBmdWxsTmFtZUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggMGMwYzEzNzIwM2RmMzZjZjU3NTVmMTJmNDliOTU2
MjM2MmYyNGM1Mi4uNzMzNmEyMzUxY2E3ODhlYjY4OWEwMmVkZGUzMDc5ODAxY2EyYWU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbgogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAw
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJ
X0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhKHNpemUpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERh
dGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKICAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHAKaW5kZXggNjc1YTE3MjFkNzU0NjY4ZjI2NjAzNzY0YjhhMDE0M2NjZTIzNzg4My4uN2M2
MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1h
Z2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRl
cihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKLSAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKKyAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9y
eShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZf
UkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5z
ZXRGYWlsZWQoKSA6IGZhbHNlOwogCiAgICAgaWYgKGF2aWZEZWNvZGVyUGFyc2UobV9hdmlmRGVj
b2Rlci5nZXQoKSkgIT0gQVZJRl9SRVNVTFRfT0sKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBBVklG
SW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGF0YVBhcnNlZCkg
ewotICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykgeworICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01l
bW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFW
SUZfUkVTVUxUX09LKSB7CiAgICAgICAgICAgICBtX2RlY29kZXItPnNldEZhaWxlZCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMuLmM3MTdjNDVkMzA1
N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJbWFnZVR5cGUgSUNPSW1h
Z2VEZWNvZGVyOjppbWFnZVR5cGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBjb25zdCB1aW50
MzJfdCBpbWFnZU9mZnNldCA9IG1fZGlyRW50cmllc1tpbmRleF0ubV9pbWFnZU9mZnNldDsKICAg
ICBpZiAoKGltYWdlT2Zmc2V0ID4gbV9kYXRhLT5zaXplKCkpIHx8ICgobV9kYXRhLT5zaXplKCkg
LSBpbWFnZU9mZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247Ci0gICAgcmV0dXJu
IHN0cm5jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0KSA/IEJN
UCA6IFBORzsKKyAgICByZXR1cm4gbWVtY21wKCZtX2RhdGEtPmRhdGEoKVtpbWFnZU9mZnNldF0s
ICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggOWE0NzBlYmFhMTFhMTI4ODViNjAzZTUzZmU4YTg0ZjEzYzc2MzlkZS4uYzEy
YzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYnl0
ZXNUb1VzZSA9IGRhdGEuc2l6ZSgpIC0gYnl0ZXNUb1NraXA7CiAgICAgICAgIG1fcmVhZE9mZnNl
dCArPSBieXRlc1RvVXNlOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXJTaXplID0gbV9yZWFkT2Zm
c2V0OwotICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2luZm8sIHJlaW50ZXJwcmV0
X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PGNoYXIqPihkYXRhLmRhdGEoKSArIGJ5dGVzVG9T
a2lwKSksIGJ5dGVzVG9Vc2UpOworICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2lu
Zm8sIHJlaW50ZXJwcmV0X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRh
LmRhdGEoKSArIGJ5dGVzVG9Ta2lwKSksIGJ5dGVzVG9Vc2UpOwogICAgICAgICAvLyBXZSBleHBs
aWNpdGx5IHNwZWNpZnkgdGhlIHN1cGVyY2xhc3MgZW5jb2RlZERhdGFTdGF0dXMoKSBiZWNhdXNl
IHdlCiAgICAgICAgIC8vIG1lcmVseSB3YW50IHRvIGNoZWNrIGlmIHdlJ3ZlIG1hbmFnZWQgdG8g
c2V0IHRoZSBzaXplLCBub3QKICAgICAgICAgLy8gKHJlY3Vyc2l2ZWx5KSB0cmlnZ2VyIGFkZGl0
aW9uYWwgZGVjb2RpbmcgaWYgd2UgaGF2ZW4ndC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGJhMzU1ZjBjZWZhYjU3ZDIzNzgxZTFiYjZlZjE3MzcxNWIxYTM5ODUuLjAyZjFi
MDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBX
aGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQ
RGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNv
IHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwotICAgIFdlYlBEYXRhIGlucHV0RGF0
YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkRGF0YS0+ZGF0
YSgpKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CisgICAgV2ViUERhdGEgaW5wdXREYXRhID0g
eyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdl
YlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdl
YlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CiAgICAgaWYgKCFkZW11
eGVyKSB7CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpwYXJzZUhl
YWRlcigpCiAgICAgaWYgKG1fZGF0YS0+c2l6ZSgpIDwgd2VicEhlYWRlclNpemUpCiAgICAgICAg
IHJldHVybjsgLy8gQXdhaXQgVlA4WCBoZWFkZXIgc28gV2ViUERlbXV4UGFydGlhbCBzdWNjZWVk
cy4KIAotICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSB9OworICAgIFdlYlBEYXRh
IGlucHV0RGF0YSA9IHsgbV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpIH07CiAgICAgV2Vi
UERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2Vi
UERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKICAgICBpZiAoIWRlbXV4
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNjAzNzVkZTViY2RjYjQ3NmFlMGVmNDE3
NWNlNzFiMWUxZDYxNTVmZi4uMDU0NDI4ZDUwZGM2MWFhYWQ1MTg4NzlkMjJjYmMyZjk3NzkxNTAz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBib29s
IHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNl
bmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXgg
OWY2ZGQ4MGYyNWExZTA2NzU1ZGExYWM5ODdlYWU4ODlkZjlmMjc0Mi4uZGQwNWVmMGZiZDNlNzMw
OTc0MzUwNWFjY2MwMTAxNGVmNGQ5YzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVT
b3VyY2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAppbmRleCA0MTI0N2Y2ODRmNzYw
OTBhNmQyYmUyNTBhNTU4ODY0Y2NmMDQyMTU3Li5jOWM5M2JhNjAxMThmOTE5ZDExNjAyOTMyZGFl
ODNkNzk5NDY3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNv
bm5lY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIFJUQ0RhdGFDaGFu
bmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoUlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hh
ciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciwgc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKaW5kZXgg
ZDAzMDA1MzZlZDkzMGZiZjljMjAyYmI5NzI2MTBkNGM1Zjg5YThjNC4uOTNiZDk2MmQ0ZGVhZDQw
MzllNWQwMTU0N2I1NTgyMDhkOWVlZWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC01NCw3
ICs1NCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZVJhd0RhdGEoZGF0YSwgc2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmlu
ZGV4IDRhNTEwOTJiYzQxZjJjZjlmN2YzZDA0ZjI3N2E3NWMyOTRlMWNhYTUuLmUwNzBiZGIxM2U4
NzI1ODdjNTNlMDRmNDk2MTdmZWQ1NTlhMGE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC00MSw3
ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogCiAg
ICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5h
bDsKIAogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAppbmRleCBkMmVlYmRlZDk1ZGU3NWNjMDk0NTllM2IxYjA2MTk2ZGI2ZTYxM2Zi
Li4zMmRkOGMwOGUyMTkwNmY0YTJkOGYyYThjMzBjN2VhNWFhOTUyNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAg
LTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNU
b0ZpbGUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocgogICAgIGZvciAoYXV0byYg
cGFydCA6IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vjb25kLmRhdGEoKS0+
c2l6ZSgpOwotICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwg
bGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSwgbGVuZ3RoKSAhPSBsZW5ndGgp
IHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0
ZW1wb3JhcnkgZmlsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uM2U3NGE2YTA0ZWYw
NWE3OWQyY2IxNDFhYThjM2FlZGZkMmY0MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogICAgIHJldHVybiBj
cmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CiB9CiAKLVJlZjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCitSZWY8Rm9ybURhdGE+IEZv
cm1EYXRhOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewogICAgIGF1dG8gZGF0
YSA9IGNyZWF0ZSgpOwogICAgIGRhdGEtPm1fZWxlbWVudHMuYXBwZW5kKFdURk1vdmUodmVjdG9y
KSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZp
bGVzQ291bnQoKSBjb25zdAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVz
KGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNpemUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hh
cj4mIGJ5dGVzKSB7CisgICAgICAgIFtdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVzLnNpemUoKSk7
CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYg
ZmlsZURhdGEpIHsKICAgICAgICAgICAgIGlmIChmaWxlRGF0YS5maWxlTGVuZ3RoICE9IEJsb2JE
YXRhSXRlbTo6dG9FbmRPZkZpbGUpCkBAIC0xNjQsNyArMTY0LDcgQEAgdWludDY0X3QgRm9ybURh
dGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0
YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRh
dGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgIFtd
IChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9y
bURhdGFFbGVtZW50KFZlY3RvciB7IGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpIH0pOwogICAg
ICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVE
YXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KGZpbGVEYXRhLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9sZW5ndGhJbkJ5dGVz
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9lbGVtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4obV9lbGVtZW50
cy5sYXN0KCkuZGF0YSkpIHsKLSAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3Rv
ciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9lbGVtZW50cy5sYXN0KCkuZGF0YSkp
IHsKKyAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUgfSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0pOwogfQogCiB2b2lkIEZvcm1EYXRh
OjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCkBAIC0yODQsMTIgKzI4NCwxMiBA
QCB2b2lkIEZvcm1EYXRhOjphcHBlbmROb25NdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBET01Gb3JtRGF0YSYgZm9ybURhdGEsCiAgICAgYXBwZW5kRGF0YShlbmNvZGVkRGF0YS5kYXRh
KCksIGVuY29kZWREYXRhLnNpemUoKSk7CiB9CiAKLVZlY3RvcjxjaGFyPiBGb3JtRGF0YTo6Zmxh
dHRlbigpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAog
ewogICAgIC8vIENvbmNhdGVuYXRlIGFsbCB0aGUgYnl0ZSBhcnJheXMsIGJ1dCBvbWl0IGFueSBm
aWxlcy4KLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRv
KiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCisgICAg
ICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KGVsZW1l
bnQuZGF0YSkpCiAgICAgICAgICAgICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9y
LT5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBW
ZWN0b3I8Y2hhcj4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAogU3RyaW5nIEZvcm1EYXRhOjpm
bGF0dGVuVG9TdHJpbmcoKSBjb25zdAogewogICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7Ci0g
ICAgcmV0dXJuIExhdGluMUVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CisgICAgcmV0dXJuIExhdGluMUVu
Y29kaW5nKCkuZGVjb2RlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwg
Rm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKQEAgLTM0Nyw3ICszNDcsNyBAQCBS
ZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5
SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbAogCiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewogICAgICAgICBzd2l0Y2hPbihlbGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0g
KGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBl
bmREYXRhKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAo
Y29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAg
ICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0YS5maWxlbmFt
ZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxlRGF0YS5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB1aW50NjRfdCBG
b3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjxjaGFyPj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA4ZjIy
MTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUxMDViYmRjNjRkLi41YmZmNjVhNjM2YzMxNzU1Mjll
MjRkYzEzNjUxMDhjZjJiNmFmNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCkBAIC0zOCwxMiArMzgsMTIgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKICAgICBz
dHJ1Y3QgRW5jb2RlZEJsb2JEYXRhOwotICAgIHVzaW5nIERhdGEgPSBWYXJpYW50PFZlY3Rvcjxj
aGFyPiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRhdGE+OworICAgIHVzaW5nIERhdGEg
PSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRh
dGE+OwogCiAgICAgRm9ybURhdGFFbGVtZW50KCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IEZv
cm1EYXRhRWxlbWVudChEYXRhJiYgZGF0YSkKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQotICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4mJiBhcnJheSkK
KyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgYXJyYXkpCiAg
ICAgICAgIDogZGF0YShXVEZNb3ZlKGFycmF5KSkgeyB9CiAgICAgRm9ybURhdGFFbGVtZW50KGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmlsZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5n
dGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUp
CiAgICAgICAgIDogZGF0YShFbmNvZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBm
aWxlTGVuZ3RoLCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lIH0pIHsgfQpAQCAtMTkzLDcg
KzE5Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVh
dGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOworICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29u
c3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJh
bmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxl
bmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxjaGFyPiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9t
aXRzIGZpbGVzCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGZsYXR0ZW4oKSBj
b25zdDsgLy8gb21pdHMgZmlsZXMKICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7
IC8vIG9taXRzIGZpbGVzCiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28g
d2Ugb25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggZmJhMDIzM2JlZmEy
Y2Q0YzE2MTRmNzA1NmI0YjA3NTM3OTMxZWNlZi4uYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2
NjJiYzc3NTZiNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBs
b25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1Rv
QmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0
NjAzMTU5NGQzYWQ1NWU2Mjc0NzA5YmU4NmM1MjVlMjllYzJlY2Y3Li40YzA0MjEwYzVhNTEzYWMz
ZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEs
OSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAppbmRleCA4ODEwMzhjODdkMWJjOWY0MTZi
YTExNjM1ZTNiNDE0NWM4ZDg4MGE5Li42ODM4ZTlkOGNmNDM3OTZkMmYzOTRiYTFmNTRmMDlkMGI2
N2U4YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggYTZmMmI3M2MxN2RmY2Y4NjI4NGM4YzVkZTU2MjA2YTlhNTA4NzRjZC4uZjZi
MmExODU3OTJiOThlMjQ4ZDE1ZjA3NjA4ZDZkYmNjODcwZWYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCiAgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBs
b25nIGxvbmcgY3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSB9OwotICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERh
dGE7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBjdXJyZW50RGF0
YTsKICAgICBDRlJlYWRTdHJlYW1SZWYgZm9ybVN0cmVhbSB7IG51bGxwdHIgfTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc3RyZWFtTGVuZ3RoIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQgeyAwIH07CkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBzdGF0aWMgYm9vbCBhZHZh
bmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIEZvcm1EYXRhRWxl
bWVudCYgbmV4dElucHV0ID0gZm9ybS0+cmVtYWluaW5nRWxlbWVudHMubGFzdCgpOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gc3dpdGNoT24obmV4dElucHV0LmRhdGEsCi0gICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICBbZm9ybV0gKFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMpIHsKICAgICAgICAgICAgIHNpemVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwotICAgICAg
ICAgICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVs
ZWFzZUJ1ZmZlcigpOwotICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0Yo
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAg
ICAgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMu
cmVsZWFzZUJ1ZmZlcigpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIGRhdGEuZ2V0KCksIHNpemUs
IGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAgICAgICAgIGZvcm0tPmN1cnJlbnREYXRhID0gV1RG
TW92ZShkYXRhKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9ybV0g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAt
Mzk1LDggKzM5NSw4IEBAIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBGb3JtRGF0YSogZm9ybURhdGEpCiAgICAgLy8gSGFuZGxlIHRoZSBjb21tb24gc3Bl
Y2lhbCBjYXNlIG9mIG9uZSBwaWVjZSBvZiBmb3JtIGRhdGEsIHdpdGggbm8gZmlsZXMuCiAgICAg
YXV0byYgZWxlbWVudHMgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKTsKICAgICBpZiAoZWxlbWVudHMu
c2l6ZSgpID09IDEgJiYgIWZvcm1EYXRhLT5hbHdheXNTdHJlYW0oKSkgewotICAgICAgICBpZiAo
YXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihlbGVtZW50c1swXS5kYXRh
KSkgewotICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHZlY3Rvci0+ZGF0YSgpKSwgdmVjdG9y
LT5zaXplKCkpKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rv
cjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNp
emUoKSkpOwogICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3QsIGRhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2Yx
ZDVhZjdkZWU1Ni4uOWJlNTg2ODJjYWMzM2JiYWFhOWUxODZkMmEzNGM0NjQwYjQxNWM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IDlkMDA1NTgxYWRlYzBjYzRjNjU4ZDhjZWU3NGZhYjVkMGE3MmQ2YjYuLjA1
NzZlZDg4MTI0MTA4MjI0NDc2Y2I2YmI3NTU4Zjk1YzljNzg1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC0xNTUsNyArMTU1LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2ln
bmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25n
IGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxl
cjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25z
ZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0YSBsZW5ndGg6KGludClsZW5ndGg7CistICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBsZW5ndGg6KGludClsZW5n
dGg7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBkY2Fh
YjcwNTFjZGMyMmM5OTE5YTM1OWNmZmFlNjgxZjdjMWNhMzRmLi5hNmY3MWFmNDIwZGY4ZGJkM2Nk
MmUzNGZjMDI3OGQ0NjBhZDhiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01NzAs
NyArNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
IC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwpAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAg
cmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVz
cG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTg3Myw3ICs4NzMsNyBAQCAtIChCT09MKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0
YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCB1aW50OF90KilkYXRhIGxlbmd0aDoo
aW50KWxlbmd0aAogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDI4OTU4YTljZGJlZGJlZGUyMjJhZDdmN2I4ZWQ4
MGQ5OTI1ODNhNGQuLmVkN2MzN2E2N2UwNDNjNWFkMzI5N2YyNDFhNjc2NGU1YWRkNTljMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl
KQogICAgICAgICBjaGFyKiBidWZmZXJQb3NpdGlvbiA9IGJ1ZmZlciArIHRvdGFsUmVhZEJ5dGVz
OwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkQnl0ZXMgPSBzd2l0Y2hPbihl
bGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMp
IHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAg
ICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBi
dWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRG
cm9tRmlsZShmaWxlRGF0YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNpemUpOwpAQCAtMTczLDEw
ICsxNzMsMTAgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVh
ZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW4KICAgICByZXR1cm4gcmVhZEJ5dGVz
OwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJv
bURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl
KQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21EYXRh
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBzaXplX3QgZWxlbWVudFNpemUgPSBkYXRhLnNpemUoKSAtIG1fZGF0YU9mZnNldDsK
LSAgICBjb25zdCBjaGFyKiBlbGVtZW50QnVmZmVyID0gZGF0YS5kYXRhKCkgKyBtX2RhdGFPZmZz
ZXQ7CisgICAgY29uc3QgdWludDhfdCogZWxlbWVudEJ1ZmZlciA9IGRhdGEuZGF0YSgpICsgbV9k
YXRhT2Zmc2V0OwogCiAgICAgc2l6ZV90IHJlYWRCeXRlcyA9IGVsZW1lbnRTaXplID4gc2l6ZSA/
IHNpemUgOiBlbGVtZW50U2l6ZTsKICAgICBtZW1jcHkoYnVmZmVyLCBlbGVtZW50QnVmZmVyLCBy
ZWFkQnl0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCmluZGV4IGI5YTEwMGRjOGRmNWFkYTNmZWMxZDQ0
MTU5YTkxMmE5YTAzN2E0MDcuLmRkZWU4ZmU5ZjVmYTQxNmFjMjMwNGE1ODFhNjUzZjA5NWE2MjAx
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Rm9ybURhdGFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVDb250ZW50TGVuZ3RoKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
cmVhZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiwgY2hh
ciosIHNpemVfdCk7Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWRGcm9tRGF0YShjb25z
dCBWZWN0b3I8Y2hhcj4mLCBjaGFyKiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gcmVhZEZyb21EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNoYXIqLCBzaXplX3QpOwog
CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAppbmRleCBlNTY0YTBjZTY2NjE0YTQ5YTEwMzEzNjg4NTFjNGRhODgy
MzUyYTYxLi5hMzA5YzI1OGNkOWYxMTJkM2JiY2U2Y2FhNzE0ODE4MzZhMWZiMDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVj
ZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1
ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNpemUoKSk7CiAgICAgY2xpZW50KCktPmRp
ZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1dlYktpdEZvcm1EYXRhSW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1dlYktpdEZvcm1EYXRhSW5wdXRTdHJlYW0uY3BwCmluZGV4IDhhMzVjNjE2
NDA5MTcyZjVkNzdiYWNhNTExODI4Y2VjODI3MWRkN2IuLjQ5M2IxMzhjMjZkMzA2NjM0ZWNiMjU1
NTdiZTIyNjBjYWExMzY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9XZWJLaXRGb3JtRGF0YUlucHV0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvV2ViS2l0Rm9ybURhdGFJbnB1dFN0cmVhbS5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGJvb2wgd2Via2l0Rm9ybURhdGFJbnB1dFN0cmVhbUNy
ZWF0ZU5leHRTdHJlYW0oV2ViS2l0Rm9ybURhdGFJbnB1dFN0cmVhbSoKIAogICAgIGNvbnN0IGF1
dG8mIGVsZW1lbnQgPSBlbGVtZW50c1twcml2LT5uZXh0SW5kZXgrK107CiAgICAgc3dpdGNoT24o
ZWxlbWVudC5kYXRhLAotICAgICAgICBbcHJpdl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkg
eworICAgICAgICBbcHJpdl0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgewogICAgICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3N0YXRp
YyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKICAgICAgICAgICAgIHByaXYtPmN1cnJlbnRT
dHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5
dGVzLmdldCgpKSk7CiAgICAgICAgIH0sIFtwcml2LCBjYW5jZWxsYWJsZV0gKGNvbnN0IEZvcm1E
YXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggMDVkMTc3MTc3NTFlMDBhNTJhNmEw
NWViMDA2ZjdiNGMxN2YxZDRiYi4uZWJjZGIyZTBkZDliNDI4MGYyNTE1NzNkYmE2YjViZDA2ZGZm
ZDViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCkBA
IC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNv
ZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNh
d0Vycm9yKSBjb25zdDsKICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgbGVuZ3RoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGUoU3RyaW5nVmlldywgVW5lbmNvZGFibGVIYW5kbGluZywgTkZDTm9ybWFsaXplID0g
TkZDTm9ybWFsaXplOjpZZXMpIGNvbnN0OwogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JV
UkxQYXJzaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbmNvZGUo
c3RyaW5nLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVkRW50aXRpZXMsIE5GQ05vcm1h
bGl6ZTo6Tm8pOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAKaW5kZXggNjI5MWI2NDI0NjRmMjc1YjQ1M2JjYzllNDBlMWM5ZmM1MDk5YTk2
MC4uODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRM
YXN0RXJyb3IoKTsKIAogICAgIGlmIChieXRlc1RvUmVhZCAhPSBJTlZBTElEX0ZJTEVfU0laRSB8
fCBsYXN0RXJyb3IgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihi
eXRlc1RvUmVhZCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQp
OwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNU
b1JlYWQgPT0gYnl0ZXNSZWFkKQogICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZv
bnRDb252ZXJzaW9uLmNwcAppbmRleCAxZjMzYTNiNjEzY2IwM2ViNTgzZTg1OTRiYWEwMjkyNDBi
ZjhhYmFhLi44ZWE0NGRjZjI1NmFiMDA0MzEyOTBjYjRlNjU1MWI4MzYzMmM1OWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVs
ZW1lbnQmKTsKICAgICBib29sIGNvbnZlcnRTVkdUb09URkZvbnQoKTsKIAotICAgIFZlY3Rvcjxj
aGFyPiByZWxlYXNlUmVzdWx0KCkKKyAgICBWZWN0b3I8dWludDhfdD4gcmVsZWFzZVJlc3VsdCgp
CiAgICAgewogICAgICAgICByZXR1cm4gV1RGTW92ZShtX3Jlc3VsdCk7CiAgICAgfQpAQCAtMjQ2
LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEdseXBoRGF0YT4gbV9nbHlwaHM7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIEdseXBoPiBtX2dseXBoTmFtZVRvSW5kZXhNYXA7IC8vIFNWRyAx
LjE6ICJJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGdseXBoIG5hbWVzIGJlIHVuaXF1ZSB3aXRoaW4g
YSBmb250LiIKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEdseXBoLCAxPj4gbV9jb2RlcG9p
bnRzVG9JbmRpY2VzTWFwOwotICAgIFZlY3RvcjxjaGFyPiBtX3Jlc3VsdDsKKyAgICBWZWN0b3I8
dWludDhfdD4gbV9yZXN1bHQ7CiAgICAgVmVjdG9yPGNoYXIsIDE3PiBtX2VtcHR5R2x5cGhDaGFy
U3RyaW5nOwogICAgIEZsb2F0UmVjdCBtX2JvdW5kaW5nQm94OwogICAgIGNvbnN0IFNWR0ZvbnRF
bGVtZW50JiBtX2ZvbnRFbGVtZW50OwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgYm9vbCBTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OmNvbnZlcnRTVkdUb09URkZvbnQoKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25z
dCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciBjb252ZXJ0ZXIoZWxlbWVudCk7CiAgICAgaWYgKGNv
bnZlcnRlci5lcnJvcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RG
Rm9udENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJz
aW9uLmgKaW5kZXggODc1MTkxMzRiNzI2ODYzZDA5Y2QxM2NjMjg3YWJjMzg1NTJhNGE2Mi4uODhk
NzI3MjY4MTg2Njc4YjZmZTZmOGU2YmIyYmM0MDBjMWM3ZDA5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCkBAIC0zMSw2ICszMSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRm9udEVsZW1lbnQ7CiAKLXN0ZDo6b3B0aW9uYWw8VmVj
dG9yPGNoYXI+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRFbGVtZW50Jik7Citz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBT
VkdGb250RWxlbWVudCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1
NDNkYTYyZDczOGMwZmU2Li5lY2I2YmFlMTY4OTU2MTY3ZjYxZmFmM2RjYTI5MzY0NmNkY2FkNDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0
NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+
aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
c2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBk
b2N1bWVudAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
YWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGFBc0No
YXJQdHIoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDJjOTNjZWMyNDgzNDcwZDkwMzU0ZTI0
ZjRiYjI4NjJiNDcyMDU2NDMuLmZjMTI3YjdiNjdiZWE3MzQ0NjNjZDJkNWIwNzU2YjU5YmViYTU4
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNp
c2lvblBvaW50OjpBZnRlclJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6
YWRkRGF0YShjb25zdCBjaGFyKiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0
YShjb25zdCB1aW50OF90KiwgaW50KQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lz
aW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmgKaW5kZXggODU0NWYxOTlhNjRkMjZkYTJjNTRhMDUzN2RhMDc1OTEyNThk
NTI1ZS4uNDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmlu
ZGV4IGExZjk0N2ViODcxMjFkOWNjMDA3ZDcyMzdiMGNkN2UxMjgyNDBjMjYuLmZhYmJkMDNlYjBh
ZGMxMjA0ZTEwNDFhMTA4ZTA1Yjc2ZTQ1NDU1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcs
IGNvbnN0IFJlc291cmNlUmVzcAogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQog
Ci12b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYmY5NGZkNDhjYWIxNGJkNTM0ODky
MTdmMjA0YmYyM2E4NjA0YzVlOC4uMTVjNDUxMzgwMDUwNGFiMDNkNDkxNzliYjU0ZTgyMDBlMmQ0
OTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1dvcmtlckZvbnRMb2Fk
UmVxdWVzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBmYjA3MmNjMThjOTFmZTExMGU0YWRlZWE4MzMy
ODljMjgzYmI2ZGRlLi5kN2MxYWIyNmRjMWRlMjMyMzdkYjQzZTk4YzEyMzU0M2QwMTk2NjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
KQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW4pCiB7CiAgICAgaWYgKG1fZmFpbGVkKQogICAgICAgICByZXR1cm47CkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBp
ZiAobGVuID09IC0xKQotICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisgICAgICAgIGxlbiA9
IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICBtX3Nj
cmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBkMzM3YzUwMzZkYWMwZjY3
NWExYzkyM2Q4ZGU2NDNmZjEzNTMzY2I4Li44ZDFhYTFiYjE5MTg1ZDRmNzliYjZmYWQ0ZTllNzQx
ODIzZDZmMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmlu
ZGV4IDhmNzYwZDYyZjdkYjAwN2U1YzRhYmVkMzhhYTA4Y2JlZmUwMTY1MTMuLmIyZTkxNzVhNzBl
NjQwNzUxODY2YzRmNGFkZWViOTFiNzIzNWU3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTg4
LDcgKzg4LDcgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmEKIAogICAgIGF1dG8gaXRlcmF0ZU92
ZXJCdWZmZXJBbmRXcml0ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50
OF90Kiwgc2l6ZV90KT4mIHdyaXRlRGF0YSkgewogICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3Jp
cHQuYnVmZmVyKCktPmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5idWZmZXIoKS0+ZW5kKCk7ICsraXQp
Ci0gICAgICAgICAgICB3cml0ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aXQtPnNlZ21lbnQtPmRhdGEoKSksIGl0LT5zZWdtZW50LT5zaXplKCkpOworICAgICAgICAgICAg
d3JpdGVEYXRhKGl0LT5zZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpOwogICAg
IH07CiAKICAgICBpZiAoIXNob3VsZFVzZUZpbGVNYXBwaW5nKHNjcmlwdC5idWZmZXIoKS0+c2l6
ZSgpKSkgewpAQCAtOTgsNyArOTgsNyBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpz
dG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYQogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFu
ZFdyaXRlRGF0YShbJl0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoaGFuZGxlLCBkYXRhLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3NzA0ZmU4MTM1MDYxNjUwOWEyODE3MTMy
MmQ5ZWFlYTMwZTc1ZjczLi5lY2YwYTQ5YjMwMWRjZjkxODNjMWVhZjk4NTAwNjAwOTBhNDQwZjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2Rl
cigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9w
bGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKIHsKICAgICBpZiAobV9lcnJv
cikKICAgICAgICAgcmV0dXJuOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKGRhdGEp
OworICAgICAgICBsZW4gPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSkpOwogCiAgICAgaWYgKHVzZURlY29kZXIpCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKaW5kZXggYzE4NTdjOTA1MTVmNmJlNzc3MGJjMDRjOTU2NDM0MjM2YWI3NDRhOC4u
NjNkNWIyNDAyOGVkZDdjMjllZTc1YjY0MDc4YWY5NjNiNDJiMzgxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJc0RvbmUoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCA1N2VlNWRlZDI0YmRhMjc1
ZTU4NmJkZjYxMzJhNTI0NTVhYmFjYzk2Li5kZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1
OWYzMzEwMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29u
c3QgeG1sQ2hhciogdXJpLAogCiAgICAgICAgIC8vIFdlIGRvbid0IHNwZWNpZnkgYW4gZW5jb2Rp
bmcgaGVyZS4gTmVpdGhlciBHZWNrbyBub3IgV2luSUUgcmVzcGVjdHMKICAgICAgICAgLy8gdGhl
IGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUgSFRUUCBoZWFkZXJzLgotICAgICAgICB4bWxEb2NQ
dHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1cmksIDAsIG9wdGlvbnMpOworICAg
ICAgICB4bWxEb2NQdHIgZG9jID0geG1sUmVhZE1lbW9yeShkYXRhID8gZGF0YS0+ZGF0YUFzQ2hh
clB0cigpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIChjb25zdCBjaGFyKil1
cmksIDAsIG9wdGlvbnMpOwogCiAgICAgICAgIHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoMCwg
MCk7CiAgICAgICAgIHhtbFNldEdlbmVyaWNFcnJvckZ1bmMoMCwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5k
ZXggMWQ4ZGFkYmU0Njc2MTkyZjY1YWU4ZTA4YzU2ODFjNmIwY2NlOTc4Zi4uYTU0ZGMyODk5ODIw
ODgzNjZhZTc3YzA2YjQxZTU0NWI5Y2IwZTY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMzU5LDkgKzM1
OSw4IEBAIHN0YXRpYyBpbnQgbWF0Y2hGdW5jKGNvbnN0IGNoYXIqKQogY2xhc3MgT2Zmc2V0QnVm
ZmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPZmZzZXRC
dWZmZXIoVmVjdG9yPGNoYXI+IGJ1ZmZlcikKKyAgICBPZmZzZXRCdWZmZXIoVmVjdG9yPHVpbnQ4
X3Q+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLSAgICAg
ICAgLCBtX2N1cnJlbnRPZmZzZXQoMCkKICAgICB7CiAgICAgfQogCkBAIC0zNzcsOCArMzc2LDgg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7
Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1
ZmZlcjsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRPZmZzZXQgeyAwIH07CiB9OwogCiBzdGF0aWMg
Ym9vbCBleHRlcm5hbEVudGl0eU1pbWVUeXBlQWxsb3dlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBkM2U2MTYxYmQyYmRjZjhlYWYzMDEwN2M1MzZi
ZWQ0YjI3ZTA5YzA4Li4yMDg3MzczOWUwNTM0ZGRhNmE0ODIyMjQxNGFhYzcxNjQ2NDA4ZDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAg
ICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9C
ZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludDY0X3QgbGVuZ3RoKQogewogICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0
YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDUyOWI2N2QxNzc4MDkzNGU4MzU5YzAwMGE0MTM2YWU5
OTA1MDI2NGMuLjliNDA3MDFjZjUzMjk4OTVlNDFiODQzNGYwMTVmNjk5ZDQwZDM5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0
X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBpbnQ2NF90KTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50NjRfdCk7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBmZWM2NWNmNjJiNjY3NGI4MzAwYzUwY2Q0MzM0MTVl
OTE1MTE0NDAwLi4xM2YxNzRlNDkzMTAwMWZlYmFlY2E2YWNjMWRlZDkxZDFlMzE4Y2E0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlm
aWVyIGlkZW4KICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZlZChyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICByZXNvdXJjZS0+
ZGF0YVJlY2VpdmVkKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggMzdiMjU0YjkwZTA0MWU3ZTAyMzI2
NjUzZDA5Y2YwMmNhYWFkNGRlOS4uMWMwODZjYTBkMDZlODkxMjQ0MTYyMjYxMGUwN2RlOTI4ZTgy
OWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCBT
dG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVj
b3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VC
b2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAg
ICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCiAgICAgfSwgWyZdKGNvbnN0IFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgYm9keSA9IHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSB9OworICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAppbmRleCBmZmE5MTA0Y2Q1Y2Q2MWFmMTZkNGNjMDgyMmEwN2Q3MzJiMjBmMDE2Li44YTU5
YTM1NjZkNDZlZTMzMjVlNTcxYThhZTdkZDk3MDljNDE0YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApA
QCAtMTAyLDcgKzEwMiw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdl
UmVjb3JkKCkgY29uc3QKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwogICAgIGlmIChtX2J1ZmZlcikKLSAgICAg
ICAgYm9keSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9idWZmZXItPmRh
dGEoKSksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSB9OwogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0
YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5j
cHAKaW5kZXggM2JmMTY2MzUxNDhiNGZjNDEwNGRlN2UxMGE1ZjM2YTkzMDUwZDVhMS4uZmE3NmFj
NzYyZWFkYWEwN2IxNDM3NThhNTUyY2FiMGJjYmEzNDkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbEN1cmwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSU9DaGFubmVsOjp3cml0ZShzaXpl
X3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUmIHF1ZXVlLCBGdW5jdGlvCiB7
CiAgICAgcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgb2Zmc2V0LCBkYXRhLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSB7CiAgICAgICAgIEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZURlc2NyaXB0b3Is
IG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7Ci0gICAgICAg
IGludCBlcnIgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVEZXNjcmlwdG9yLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAg
ICAgICAgaW50IGVyciA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZURlc2NyaXB0b3Is
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVyciA9IGVyciA8IDAgPyBlcnIg
OiAwOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnIpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmgKaW5kZXggNzYxYzA1Y2Y2ZDZlNjkyZjI3MTZmYWM2YzM0Y2RjOTM2MWU4YzU4Yy4uODBiYWM0
YjI4OWMwYjU3NDExMzE4NDVhNWQzMDZlNmFmOGY4MmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCkBAIC0x
OTQsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9j
dXJyZW50UmVxdWVzdDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAgICAgQ1N0cmluZyBtX3NuaWZmZWRDb250ZW50VHlwZTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9y
ZWFkQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlYWRCdWZmZXI7CiAgICAgdWludDY0
X3QgbV9ib2R5RGF0YVRvdGFsQnl0ZXNTZW50IHsgMCB9OwogICAgIEdSZWZQdHI8R0ZpbGU+IG1f
ZG93bmxvYWREZXN0aW5hdGlvbkZpbGU7CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9kb3dubG9hZElu
dGVybWVkaWF0ZUZpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IDgzNDZlMzllODdhNGQwNTgyNTNmZWNlYTY3MWMxMzJlNDc2OWUx
YjkuLmRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChhdXRv
JiBzZWdtZW50IDogKm1fYnVmZmVyKQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzZWdtZW50LnNlZ21lbnQtPmRh
dGEoKSksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKKyAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVu
dC0+c2l6ZSgpLCAxKTsKIH0KIAogc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFy
ZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBjM2YxODNiMmRiNWJiNTk0YzMw
OWNkODliNzIwMjBlYTAxYWQyMWE3Li43ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYx
ODMyZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7
IH0KIAotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNGIyMGM4NWFjNTM2
MjM2NDAzYTgzZWE5NzNjZGNjZDEwZmRmNzJmNi4uY2JkMDRkOTliN2MyNzE2NzFjODc1MmIxOGE5
MmU0MjE1ODU2YzllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBTdAogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSkKIHsKLSAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAg
IG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZEZp
bmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYKICAgICBpZiAobV9wbHVnaW5DYW5jZWxlZE1hbnVhbFN0cmVhbUxv
YWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1h
bnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUu
aAppbmRleCBkYTgyMDQ2NGY5M2M2MDRjZTg2OTc5YjY1ZDZhZTY3NmYxZmMwMGIyLi5iZmYxZDE3
ZmE2YTczZDllOWRjMDgwZWM5NTE5YTZkM2NjYzA0OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNz
aW9uU3RhdGUuaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgSFRUUEJvZHkgewogICAgICAgICBU
eXBlIHR5cGUgPSBUeXBlOjpEYXRhOwogCiAgICAgICAgIC8vIERhdGEuCi0gICAgICAgIFZlY3Rv
cjxjaGFyPiBkYXRhOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKIAogICAgICAgICAv
LyBGaWxlLgogICAgICAgICBTdHJpbmcgZmlsZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmMGM4ZWVmNTNkMzU5N2UwZWE4YTEx
ZGIxMDFlYTk0NjAxNDE5ZTE3Li4wODc4OGM4MmYyYTM2NjZiZDE1NWRmYzNlNDU2YjBiYmU1MTAy
ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgLy8gb3ZlciB0
aGUgSVBDLiBDb25uZWN0aW9uVW5peC5jcHAgYWxyZWFkeSB1c2VzIHNoYXJlZCBtZW1vcnkgdG8g
c2VuZCBhbnkgSVBDIG1lc3NhZ2UgdGhhdCBpcwogICAgIC8vIHRvbyBsYXJnZS4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NzEuCiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogKmJ1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZWxlbWVudC5zZWdtZW50
LT5kYXRhKCkpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CisgICAgICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNl
Z21lbnQtPnNpemUoKSwgMSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZl
cigqYnVmZmVyKTsKQEAgLTMwNjEsNyArMzA2MSw3IEBAIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlw
CiAgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHsgfTsKIAogICAgIGF1
dG8mIHNlZ21lbnQgPSBzY3JpcHQuYnVmZmVyKCktPmJlZ2luKCktPnNlZ21lbnQ7Ci0gICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDxjaGFyKj4o
c2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6d3Jh
cE1hcChjb25zdF9jYXN0PHVpbnQ4X3QqPihzZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXpl
KCksIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVk
TWVtb3J5KQogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCmluZGV4IGZmZWUwNjExNDYwYmMxZWRiYWRhYWRhNzlkOGRlZjg2ZGYyOTk0
N2YuLjVhMTgwYmVlZDEyZjVjZGNkZmJhZTY3MDJlNjkzYjllYTZlMGE4NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdl
YktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB9CiB0ZW1w
bGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBmdW5jdGlvbikKIHsK
LSAgICBmdW5jdGlvbihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpKTsKKyAgICBmdW5jdGlvbihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgQ29u
dGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBpCiAgICAgaWYgKGZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRI
ZWFkZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSB3cml0
ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52YWxpZEhlYWRl
ciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CisgICAgYXV0byBieXRlc1dyaXR0ZW4gPSB3cml0
ZVRvRmlsZShmaWxlLCAmaW52YWxpZEhlYWRlciwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemVvZihpbnZh
bGlkSGVhZGVyKSk7CiAgICAgY2xvc2VGaWxlKGZpbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlNzM1N2QxMTI1MGQ2MGVjOGM4Mzhh
ODcwODE3MGUxZjJjNjhmNWRkLi4xZTE0OWNmMjM3MGE3MTE1MTY5OTU0YTY1YjliYzllMjhiNzc5
ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApA
QCAtMjIxLDcgKzIyMSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5j
KCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNE
YXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YUFzVUludDhQdHIoKSwg
bV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5k
YXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1f
c3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmluZGV4IGYy
ZWRjNWNmODdiZWFlY2ViODVmZWI2YzNlM2M5Y2U1MTgyNWFjNjkuLjcwOGJiMjlmOGY3M2Q2ZWQ3
ZmNmNjczOTBjNTgyYzFmZWJhZDU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAK
QEAgLTcxLDkgKzcxLDkgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhU2VudCht
X2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIDApOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVk
KG1faWQsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKSksIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFS
ZWZlcmVuY2UoZGF0YSwgbGVuZ3RoKSksIDApOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eTo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmgKaW5kZXggNGQ2YTVhZmMzZTU5NWU1Y2ZlYTM3MGIyMWY3ZWU4YTEzNzQx
ZTNlNC4uNDdlYTg2NjcxYjEzZDEzOTVjM2RhZDliZGE3OWFiZjYxNmNiYTE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFs
OwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9p
ZCBkYXRhU2VudChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25n
IGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgZmluYWw7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZhaWxlZChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
Njk0ODk2Yzk5N2E0OTQwZGJhYjJkYTc2NTc4MjBhMjc4YWYxZGM2YS4uNDg0YzBiZWQzNmIyZmVj
YTFmZTgwZWI2ZGYyYzMwZDAzMGVkMjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRl
cmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxv
YWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YUFzVUlu
dDhQdHIoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0s
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRh
dGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKLSAgICBtX2Nv
cmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5
dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGQwY2I3OWU1ZDFl
NjVmOGUxYmQxOTljNTQzZGVkMDkxOGU4NGY1MWEuLjc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdk
MWI1MTNlYjlhYzY5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5k
UXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1
bWVudCwgV2ViU29jCiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRm
OFN0cmluZykgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0
aCgpIH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfSwgWyZjaGFubmVsXShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIGRhdGEsIGJ5dGVM
ZW5ndGgpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29j
a2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwor
ICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgp
IHsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZTo6T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0
ZUxlbmd0aCk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtT
b2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVM
ZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUg
ZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4
Y2VwdGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0cmluZygiRmFpbGVkIHRv
IGxvYWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDQ5OWRhMThkMTc0ZmU3ODkyOGI4NzNj
YTcyY2I3ZWUxYWUwYTVkOWYuLjdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIyNGZkMWIyODAwNGNh
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9S
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRh
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKIHsKICAgICBpZiAoYXV0byog
c291cmNlID0gc291cmNlRnJvbUlkZW50aWZpZXIoc291cmNlSWRlbnRpZmllcikpIHsKICAgICAg
ICAgaWYgKGlzUmF3KQotICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKICAg
ICB9CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6
OmNoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGkKIAogdm9pZCBS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgYm9vbCBpc1JhdywgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZm
ZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBp
ZiAoaXNSYXcpCiAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CkBAIC0xNTEsNyArMTUx
LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnJlY2VpdmVEYXRhKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcgogCiAgICAgcG9zdFRhc2tUb0hhbmRsZXIoaGFu
ZGxlcklkZW50aWZpZXIsIFtpc1JhdywgdGV4dCA9IFdURk1vdmUodGV4dCkuaXNvbGF0ZWRDb3B5
KCksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oYXV0byYgaGFuZGxlcikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXpl
KCkpOworICAgICAgICAgICAgaGFuZGxlci5kaWRSZWNlaXZlUmF3RGF0YShidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaGFuZGxlci5kaWRS
ZWNlaXZlU3RyaW5nRGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICB9KTsKQEAgLTIzMCw5ICsyMzAs
OSBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoVwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRl
bnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOwog
fQogCi12b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVS
YXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7
IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplICB9IH0sIDApOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJl
Y2VpdmVEYXRhIHsgaWRlbnRpZmllciwgdHJ1ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwg
c2l6ZSAgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJl
bW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZERldGVjdEVycm9yKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlci5oCmluZGV4IDZkMTJiN2MzNWYwMDRhNDdjNTU0ZmRiMTVlZTIzOWRlNjJiMzUwY2Uu
LmY4YzA1ZTUzNzQxN2Q3OTRkNWE2MTVlNzg4ZTFlNmFlZGEwYTczNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFN0YXRlKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIp
IGZpbmFsOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDAwNjc4OTkwOTMyYzQzODJiYjYxZmYwMDQ5ODRj
NGIzOTkwZmI0ZTcuLjNkYzkyOGRjNTdhOTdkMDJjOTI4NDUzMzExY2YzMWNiZjJiODVjMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBz
dGF0aWMgTlBFcnJvciBwYXJzZVBvc3RCdWZmZXIoYm9vbCBpc0ZpbGUsIGNvbnN0IGNoYXIgKmJ1
ZmZlciwgdWludDMyX3QgbGVuZ3RoLAogICAgICAgICBpZiAoIWZpbGVDb250ZW50cykKICAgICAg
ICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgICAgICBwb3N0QnVmZmVy
ID0gZmlsZUNvbnRlbnRzLT5kYXRhKCk7CisgICAgICAgIHBvc3RCdWZmZXIgPSBmaWxlQ29udGVu
dHMtPmRhdGFBc0NoYXJQdHIoKTsKICAgICAgICAgcG9zdEJ1ZmZlclNpemUgPSBmaWxlQ29udGVu
dHMtPnNpemUoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIE5QQVBJIHNwZWMgc3RhdGVzIHRo
YXQgdGhlIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAppbmRleCA2MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjLi4wOTBkNWE0
MGNlYmQ3OGMxZWQ3MmJhYmE3YmY2ZTA3MjMzYjI1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3AKICAgICAgICAg
cGx1Z2luU3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAKQEAgLTkwMSw3ICs5MDEs
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludAogICAgIG1fbWFudWFsU3RyZWFtLT5kaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwg
bWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0
c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJU
KG1fc2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDI0NzQ5
MTQ2ZDkwZjQ1NWY2OWY1NDM1OTY0ZTBiM2JjYTMxZGNjZjIuLmE1ODJiNjY1MmZhNTAxZDZlNzdk
YzI0MjkwNmI0MWRlYTJiMDVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTk1LDEyICsx
OTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJM
LCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVp
bnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0
X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVh
bFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDJhNjAxY2MwOGI0MGU3
NWY5YWUxOGE2MjVhODJjMjYxZmZkN2MyN2UuLmRiZmI4YjZiODExYjM2NDc0YTVkZTZiYjZhN2Yz
OGM1YjAyNTIwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHMKICAgICBzdGFydChyZXNwb25zZVVS
TC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVh
ZGVycyk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
Ly8gRGVsaXZlcmluZyB0aGUgZGF0YSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8g
Z28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNj
YXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBTdHJpbmcm
IHJlc3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0cmlu
Zy5sZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGRlbGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuZGF0YSgpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgp
KTsKKyAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1
bHRDU3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwogICAgIHN0b3AoTlBS
RVNfRE9ORSk7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpzdGFydChjb25zdCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJl
YQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQog
ewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKCkKICAgICB9CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFU
b0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fZmls
ZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmls
ZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAxMGM3ZjJkOWU4NzQ2M2FjYmU3OGY4
N2Q0M2U1MjFmMDg5OTIzYWJlLi45YjA3MDk5ODg0NzIwNDMxYTNiMTNlNDAxZWU0ODg4MzhiYTYy
OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwg
Y29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1
cyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBk
aWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsKIApAQCAtNzMsOSArNzMsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBub3RpZnlBbmREZXN0cm95U3RyZWFtKE5QUmVh
c29uKTsKIAotICAgIHZvaWQgZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpOworICAgIHZvaWQgZGVsaXZlckRhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpOwogICAgIHZvaWQgZGVsaXZlckRhdGFUb1BsdWdpbigpOwotICAgIHZvaWQgZGVsaXZlckRh
dGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGVsaXZl
ckRhdGFUb0ZpbGUoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogCiAgICAgUmVm
PE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKICAgICB1aW50NjRfdCBtX3N0cmVhbUlEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4
IDZjZGJlZGNkMDg1NzJlMGI2NTk5ODU0M2ZkZjQyZjI1ODQwMjIwNWEuLmE2NTMxYjY0Yjk3NzMw
NmQwZmZkODJhY2M4MmYyOGIwOWNmZTAyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTE3NiwxMSArMTc2LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVl
c3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBy
ZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25z
ZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5h
bDsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURp
ZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJM
LCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGlu
dCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygp
IGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkg
ZmluYWw7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBm
aW5hbDsKQEAgLTM2Niw3ICszNjYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBjMDJmODQwYzQwNzQ4
MDFiZDg3NGY2Y2Y4MzJlOTdiODg0MWY1YzQ5Li4xNTEzZTA0ZWY0ZTg1NmZhODcyYzU1MjhhN2Ni
YmQwNzExZjdkMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpQ
REZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBs
dWdJblN0CiAgICAgfQogfQogCi12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291bnQpCit2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2lu
U3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgY291bnQpCiB7CiAgICAgaWYg
KCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9p
ZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
TmV0c2NhcGVQbHVnSW5TdHJlYW0KICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHJlcXVlc3QtPmFkZERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGNvdW50KTsKKyAgICByZXF1ZXN0LT5hZGREYXRhKGRhdGEsIGNvdW50KTsKIH0KIAog
dm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkRmFpbChOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKQEAg
LTE2ODQsMTQgKzE2ODQsMTQgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QKICAgICAgICAgbV9p
c1Bvc3RTY3JpcHQgPSB0cnVlOwogfQogCi12b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0
cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKICAgICBpZiAoIW1f
ZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDAp
KTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyht
X2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOwogICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5n
dGg7CiB9CiAKQEAgLTE3MjksNyArMTcyOSw3IEBAIHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRh
QnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExlbmd0aCkKICAgICAgICAgQ0ZEYXRhSW5jcmVh
c2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRMZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKIH0K
IAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghbV9k
YXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBkM2M3YWM3
MDUxMWZjNzJjODcwODRiOGEzNzRmOWQ2YzcyNjg1OWIwLi4xMzU1Y2ZmNGViNzdmNmY3MTdkYjky
MGUyMTQwNThmYzE2YjJmZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0
cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxs
cyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSA9IDA7
CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBt
YW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0
IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGJmZjgwNGIzODg1YWE1OGJhNDZjMWYy
Mzg3MGE2MDllMzM5MzlhY2YuLjljZWQ3ZGEwNzUwMmY2MmJhYzZhZjY3OWUxNjEwZDRlNjU5ZTA3
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKQEAgLTMzMCw5ICszMzAsOSBAQCB2b2lkIFBsdWdpblByb3h5OjpzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9ucwogICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVy
UHJveHk6OlN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShzdHJlYW1JRCwgcmVzcG9uc2VVUkwuc3Ry
aW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMp
LCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVn
aW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlN0cmVhbURpZFJlY2Vp
dmVEYXRhKHN0cmVhbUlELCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnl0ZXMpLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxl
clByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNl
KGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAogdm9pZCBQbHVnaW5Q
cm94eTo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTM1MCw5
ICszNTAsOSBAQCB2b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyXwogICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3Ro
LCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJ
RCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0g
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
SVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsK
IH0KIAogdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAw
MDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEyZTU2MTJjNmZkZTQwLi4zZjFiMzllYWI3ZGFlMDgx
NjhkZDNhNzM4ZmVkMmIwZGMwNzE0NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg3LDExICs4NywxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3Ry
aW5nJiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFt
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiBy
ZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRU
aW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZh
aWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiNjRhY2FiZGY3NTNhYTg5
ZTdiNzBlNGQ1NmU1NWQ3NzBlZDMyMDIxLi4zYTA5NjgzZWVjN2FhMjFlNjFkZWExMGM4ODI5YzMw
NzY4NDA3YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQ
bHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lk
IFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBs
YXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uu
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpCiB7CiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEo
bV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CiB9CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3Bv
bnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIFRoZSBw
bHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAg
aWYgKCFtX3BsdWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCA4MjhkMzBhMDZlOWQ4ZmRkNzhiNTk4ZGY5MGE2NjM5MzFkYTBlOGQzLi40
YTFmNWFjNTdhOWQ3NzU0ZTY0MDc4ZjdkYTQyYjU3NmEzMzQzOWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wbHVn
aW4gfHwgbV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95ZWQoKTsgfQogCiAgICAgdm9pZCBtYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
LSAgICB2b2lkIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCk7CisgICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRp
bmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA4
NTQxZGYzY2IyMjM5Y2FkOGFjN2Q1NmYzZTQ2MmQwZDVhNzFlY2I1Li4wZTM0NjMxYWQ2ZmMyNDkx
YjNkYjI3NmIzZjE0ZmQwNjFjZWU5NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IDlkYWFiZTE0YTM0YjNjMDlm
MjdkYzhkZjU0MzA0ZWU3NTMxNjk1ZTEuLmJlNDNjMGZkZGI1ZTE2MjcxYWVhOGU1Y2MyMDJkYzdl
MTFhMjY5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTU5LDcg
KzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYW51cCgpOwogICAgIAotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSk7CisgICAg
dm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIg
ZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02Nyw3ICs2Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7
IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7
IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmFpbChlcnJvcik7IH0KICAgICAgICAgdm9pZCBkaWRT
dWNjZWVkKCkgZmluYWwgeyBjbGllbnQtPmRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDgzM2M4MmM1NGQzN2FlMDE1YTE4
MWE3YjkzMjRmNzA1MzA3YzY4ZjQuLmM4ZjI0OGE2NDc2NTc2YTI5MmM3NWQ1ZmFhNjhmNWFjNjNh
NDc1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgc3RhdGljIEhUVFBCb2R5IHRvSFRUUEJvZHkoY29uc3QgRm9ybURhdGEmIGZvcm1EYXRh
KQogICAgICAgICBIVFRQQm9keTo6RWxlbWVudCBlbGVtZW50OwogCiAgICAgICAgIHN3aXRjaE9u
KGZvcm1EYXRhRWxlbWVudC5kYXRhLAotICAgICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8Y2hh
cj4mIGJ5dGVzKSB7CisgICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0
ZXMpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50LnR5cGUgPSBIVFRQQm9keTo6RWxlbWVudDo6
VHlwZTo6RGF0YTsKICAgICAgICAgICAgICAgICBlbGVtZW50LmRhdGEgPSBieXRlczsKICAgICAg
ICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZp
bGVEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1ZWQyMzFjODU1
YzA1OWVkYWY3MzQ4MWQ1MGI5MzE4ZTRlZTYyMTAyLi41ZGEyYmI5ZjRhMmQ3ZDQyM2JlZTg1NDQ3
MWZlODUzZDNlNGEyNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEx
NDQsNyArMTE0NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCkKICAgICB3ZWJQYWdlLT5kaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCht
X2ZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghbV9wbHVn
aW5WaWV3KQogICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTEx
ODEsNyArMTE4MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IDApLCBtYWluUmVzb3VyY2VEYXRhID8gbWFp
blJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0
YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUo
KSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJl
c3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTM4NmVmYTU5YTU1NTU2NWUxYTQ2
NGJiZDc4MmI3NTRjZWQ4MTk0My4uYWEzYTg2MDE3NTcyNjU0MTM4NTJhNGI5ZTg5NTY0YmI0ZDFh
M2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkg
ZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnkoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXgg
MDI4ZThjNmUzZTg4NjRjYzE2NTU5MGE0OWNiYWVlN2Q4YmI2YTViYi4uMmFjMjVkY2QzOWU0ODBk
ZjkzNmM2YWViNzllYzIwYWZlYzJkNDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0
IGNoZWNrIHRoZSBvdmVycmlkZXMuCi0gICAgVmVjdG9yPGNoYXI+IG92ZXJyaWRlQnVmZmVyOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlk
ZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZVRhc2tQcm94eS5jcHAKaW5kZXggNDdlM2NhOTZlOTNjNTE0MTg0MmE3MzNiYWQxMjY0
Y2JmMTUyNDkyMS4uZGRjMDcxYjNhMjZhZjgyOGVjN2M0NjNkNTFjNzEzODBlNTdlOTA1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFz
a1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVUYXNrUHJveHkuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVU
YXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRh
KQogICAgIH0KIAogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7Cisg
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCBzaXplLCAwLCBEYXRhUGF5bG9h
ZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOwogICAgIHByb2Nlc3NOZXh0UGVuZGluZ1Rhc2soKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggYzUzNjI1YTE4
ODM4ZmQwZDI3M2Y2YjQ2NGU5NmMwM2FhY2MwMGMwOS4uMTUyMDBlY2Q5MTkyNjhjMzQwN2Q5MTlj
MDY2NzE4YzkzMjQ2MTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0U3RyZWFtV2l0aFJlc3Bv
bnNlKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2Ug
YmUgbWFkZSBwcml2YXRlPwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KaW5kZXggNTdhYTRhODJk
NmE2NzE4MTVlNDNiYTgwNTk0ODZiNzU2NWU1MGU2OS4uMDg2MTVlNDlmNTEzMDNhNGY1OWNhZDA1
MzljZmZlN2Q5YTA1YjBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW0KQEAgLTExNSwxMiArMTE1LDEyIEBAIHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06
OnN0YXJ0U3RyZWFtKE5TVVJMICpyZXNwb25zZVVSTCwgbG9uZyBsb25nIGV4cGVjCiAgICAgICAg
ICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihbaGVhZGVycyBieXRlc10pKSwgW2hlYWRlcnMgbGVuZ3RoXSk7CiB9CiAgICAgICAgICAg
ICAgICAgICAgICAKLXZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpCit2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIF9XS1BIU3RyZWFtRGlkUmVjZWl2ZURhdGEo
bV9pbnN0YW5jZS0+aG9zdFByb3h5KCktPnBvcnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zdGFuY2UtPnBsdWdpbklEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3N0cmVhbUlELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2Fz
dDxjaGFyKj4oYnl0ZXMpLCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMpKSwg
bGVuZ3RoKTsKIH0KICAgICAKIHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZEZp
bmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDc1NDI2OTM4MTJlNzhiN2Y4
OWE4ZTM0NDAzNzMzMDA4YWZjM2YyOTUuLmVkMGUzMTQzZWY4YzA2YWNjOTg4YWEyNGFiODgyN2Ez
OThmNWJhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAg
LTcyNSw3ICs3MjUsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVh
dGVKYXZhU2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
Q29udGVudExlbmd0aDpbSlNEYXRhIGxlbmd0aF0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1XaXRoUmVzcG9uc2UocmVzcG9u
c2UuZ2V0KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CisgICAgICAg
IHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtK
U0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAgICAgc3RyZWFtLT5kaWRGaW5p
c2hMb2FkaW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQppbmRleCA3NjExNzFjZWE3Y2E1ZmE2NzI4YzlkYzAwZDJlYjdiMmQxOGY3NzgwLi42
NGMyNzdiNWY0M2QxNTFiZGE0MTViZWM5YjU5ZDVmM2NjZmMwODVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC01MTksNyArNTE5LDcgQEAgLSAodm9pZClw
bHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0
YQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKEhvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtKiBtYW51YWxTdHJlYW0gPSBfcHJveHktPm1hbnVhbFN0cmVhbSgpKQotICAgICAgICBtYW51
YWxTdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0
YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNl
aXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2Rh
dGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmll
dyByZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAy
YmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzViODNlYzEzMDZjLi4xOTM5MGI1YzAyYTc1Zjc5
Zjk2NmY4MWE0MWEyZDcwNTY1NzhmMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lTdHJlYW1XaXRoRXJyb3IoTlNFcnJvciAq
KTsKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UgYmUgbWFkZSBwcml2YXRlPwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGY4ODkwZDA1MTZiMjEyYWNmZTc2OTY2NDI1ZGU1
NDQxMDRjOWE2OTQuLjRiNGRkYzAwNGEyNmEzZWE2NDljMjY5MTU4MTRlNTY2MjBjOTU1MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
KQogICAgIGRlc3Ryb3lTdHJlYW1XaXRoUmVhc29uKE5QUkVTX0RPTkUpOwogfQogCi12b2lkIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBhdXRvIGRhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilieXRlcyBs
ZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDMz
YmE1N2MxNTVmMThhNzIwY2ZjNzlkNDZhZjM1NWQ3OGUwOTVlOWMuLmE4YTJlZTgxNzFhMmRiOGQ4
MmM4YmIwNWE5OWRkMDA0MTY5ZWFlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xMDUxLDcgKzEw
NTEsNyBAQCAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRE
YXRhOihOU0RhdGEgKilkYXRhCiAgICAgfQogCiAgICAgaWYgKF9tYW51YWxTdHJlYW0tPnBsdWdp
bigpKQotICAgICAgICBfbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICBf
bWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpcGx1Z2luVmll
dzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZlZEVycm9yOihOU0Vycm9yICopZXJyb3IKQEAg
LTExMjcsNyArMTEyNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVz
dDooV2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgCiAgICAgICAgIHN0cmVhbS0+c3RhcnRTdHJlYW1X
aXRoUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVE
YXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEg
bGVuZ3RoXSk7CisgICAgICAgIHN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtKU0RhdGEgYnl0ZXNdKSwgW0pTRGF0YSBsZW5ndGhdKTsKICAgICAg
ICAgc3RyZWFtLT5kaWRGaW5pc2hMb2FkaW5nKDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGJkNTIyM2EwY2UxNTBjZjM1YTI4Yjc1NTA0ODAwNGMxZmNiNTRhYTYu
LjE1MmZkYTFmNmVkNTdlMjk5YWRlMzRkMDdlZThkYmI0ZTJjMWVlYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFJlcGxhY2VN
dWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNv
bW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50
KSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwogICAgIHZv
aWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggNjM0MjIwMDVmZWY0ZmIwOWNmNjdjYTIzZGYxMDJjYTc0YzVm
Zjk1YS4uOGUxYjI0N2ZmN2EyMWVlN2RiMzgxYzY0MGUxMDY1YWI4Y2FhZDIxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRpZgogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgYXV0byBuc0Rh
dGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilk
YXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgW2RhdGFTb3VyY2UobG9h
ZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA0MTM5YmI1YTkxNjgzZTY1YWNjMDgyNTNiZWNi
M2ZkZDBhYmM2M2Q5Li5mZDMxMDAzNTAxZmZjYzNjMDFhOTJmOTU3YmMzNGNkMmRiYTFmODAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk4Miw3
ICs5ODIsNyBAQCAtICh2b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilkYXRhCiAgICAgYXV0byog
ZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50
LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRlcmVy
cyk7CiAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5jb21taXREYXRhKChjb25zdCBjaGFyICopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsK
KyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21t
aXREYXRhKChjb25zdCB1aW50OF90KilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWIxYmZiMmQzNDE3NGM2
OGEyYjQwYmQ0YzdkMWFkYjhkMzI5ZDVmOS4uNGQwNDBmNTY0NmViODI0MWE5MmJjN2MyZGM3OGY2
ZGZkOTZkYWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNjQxLDcgKzY0
MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCiB7CiAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDhhYTdhYTMxZmU4MjVlYzc5NWNmMWIzZTNmYjNlNTNiZmU2
Yjg3OWYuLjZkYWMwYjA1MjE4MzkxNjYyMDg5NjQxZjY1YWU5NDJjMjliODk2ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNv
bW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
ZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxY2E4ZDM4ZDUzNTMzODQ3
NDA5N2JiNDkwNjA0NTNlNjUyOWM5M2E5Li45MmI3YmQ0YjAyMjljNGU0M2Y1MTQ1MzBkNGIyNTVk
ODBjNTFlNjU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9y
PGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9m
IFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIuIEFsc28gaGF2ZSBT
aGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3QgdWludDhfdCpgIGlu
c3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVkIHR5cGUgdG8gc3Rv
cmUgYnl0ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjaGVja0J1ZmZlcik6CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRC
dW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkgZm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5z
dGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiZWM3ZDEx
OWVhODE5YjAxOTlhODczZjAyMDc2NmQ0MTkyMDFhYzJhLi5lYTczMmE4ZTBlMGMyNmM5ZDkwYTEy
MzU5NDBhY2RlNTdlMjE2M2E2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKLSAgICBWZWN0b3I8
Y2hhcj4gdmVjdG9yMCgweDQwMDAsICdhJyk7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjEoMHg0
MDAwLCAnYicpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHZlY3RvcjEoMHg0MDAwLCAnYicpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAw
MCwgJ2MnKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUodmVjdG9yMSkpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgp
KTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKK3N0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3Qg
Y2hhciogZXhwZWN0ZWQpCiB7CiAgICAgLy8gZXhwZWN0ZWQgaXMgbnVsbCB0ZXJtaW5hdGVkLCBi
dWZmZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oZXhwZWN0ZWQpOwpAQCAt
MTcxLDkgKzE3MSw5IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwCiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gczEgPSB7J2EnLCAn
YicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8Y2hhcj4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gn
fTsKLSAgICBWZWN0b3I8Y2hhcj4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKKyAgICBWZWN0
b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7
J2knLCAnaicsICdrJywgJ2wnfTsKICAgICAKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwpAQCAtMjAwLDcg
KzIwMCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKLSAgICBhdXRvIG1ha2VCdWZmZXIgPSBb
XSAoVmVjdG9yPFZlY3RvcjxjaGFyPj4mJiBjb250ZW50cykgeworICAgIGF1dG8gbWFrZUJ1ZmZl
ciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7CiAgICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvJiBj
b250ZW50IDogY29udGVudHMpCiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNv
bnRlbnQpKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNF
cXVhbFRvKQogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAn
ZCd9fSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0g
ICAgYnVmZmVyMS0+YXBwZW5kKFZlY3RvcjxjaGFyPih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwor
ICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30p
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAn
YycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKICAgICBFWFBFQ1RfRVEobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3sn
YScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
e3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkp
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8p
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKLSAgICBWZWN0b3I8
Y2hhcj4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKKyAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7
MHgxMSwgMHg1LCAweDEyfTsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOwogICAgIFN0cmluZyByZXN1bHQg
PSBidWZmZXItPnRvSGV4U3RyaW5nKCk7Cg==
</data>
<flag name="commit-queue"
          id="452130"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430624</attachid>
            <date>2021-06-04 15:43:44 -0700</date>
            <delta_ts>2021-06-04 16:50:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604154343.patch</filename>
            <type>text/plain</type>
            <size>265799</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDI1ZDQ5NTZjODgzYzU4NzQxYjM4YmMwMDUwNmMwMzY0YTc1MmNhNjUu
LjU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlk
RmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDZjOWE5YTIxYTBjNjNm
MWM4YTY5NTE2YmU5YmUwODJlYzQyN2UzYTcuLjk0MzgzYTFjNzcyNjMyZjU3MThkN2RmMzdlNTc1
NGE2MzJiNTBmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJl
dmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCitib29sIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
aW5kZXggMGRhYzdmZjAzY2M4NDZkMTg5NmEwODhmNjI2MzAyODYxNmJkZmE2OS4uYjZlNjhmM2M3
MjlmYjQxYzkyOWE2ZDE3OGRhNjAzOTlmZGM5MWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVy
cm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4p
OwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKaW5kZXggMGYyZjA0MTU0MzEzMjM1MjIzY2RmZmI3YzVjNGMzNjk0YzRlOTAzNC4uZTEwZDhk
OTE2ZmIwZjI1ZmJlYTNmN2FjMmFmNTVmNTcwYjIwZGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggZWU0ZjM2MWRkMDgz
ZGU3M2M5YzRkZTg4MTQxMjQwYWYxNWZiMjkwMy4uM2I5NjAyMTA5NTk2MzI1YTBkNDc0MzJlNDY2
ZjQ1ZjgyZDE2MTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBpbnQgRmlsZUhhbmRsZTo6d3JpdGUoY29uc3Qgdm9pZCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAg
IHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5k
bGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggNThjZjE0MDQ4ZDM1NTMwMjA3
N2YxYzRlZDUxNDkyNWE1YzdkOTE0Yy4uM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDcz
M2U5ZDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50
RmlsdGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
Q29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7
CiAgICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9
IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggODI1ODY1M2YyNTUxODJmNzRlY2ZkNGQ4N2FhZTk5YWEx
NjYzZDExMS4uMDA0MGE4YTYxMTg3ZmIwZTQ5ZTg2ZjMzNzBiYjhmODIzNzc1YWZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCkBAIC01Miw3ICs1Miw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCiAgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZl
Y3RvcjxjaGFyPiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTgxLDE1
ICs4MSw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPGNoYXI+JiYgdmVjdG9yKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQot
Ly8gRklYTUU6IE1vdmUgdGhlIHdob2xlIGNsYXNzIGZyb20gVmVjdG9yPGNoYXI+IHRvIFZlY3Rv
cjx1aW50OF90PiBhbmQgbWFrZSB0aGlzIGVmZmljaWVudCwgcmVwbGFjaW5nIHRoZSBWZWN0b3I8
Y2hhcj4gdmVyc2lvbiBhYm92ZS4KIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIgeyB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpIH0pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CkBAIC0xMDIs
NyArOTYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3QKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmVjdG9yPGNoYXI+IGNvbWJpbmVkRGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2l6ZSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKICAgICAgICAgY29t
YmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50
LT5zaXplKCkpOwpAQCAtMTEzLDcgKzEwNyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdAogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2NvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjIsMTEgKzExNiw2IEBAIGNv
bnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGFBc1VJbnQ4UHRyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSgpKTsKLX0KLQogU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVk
QnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAtMTUwLDcgKzEzOSw3IEBAIFN0cmluZyBT
aGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGFy
cmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3Jl
YXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICV6dVxuIiwgc2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNTgsNyArMTQ3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogICAgIHNpemVfdCBw
b3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykg
ewotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
ICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNp
emUoKSk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKICAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudC5zZWdtZW50LT5zaXpl
KCk7CiAgICAgfQogCkBAIC0xNzgsMjIgKzE2NywxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3I7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7Ci19Ci0KLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
VmVjdG9yPGNoYXI+JiYgZGF0YSkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKQEAgLTI0MCwyMCArMjI0
LDIwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRh
dGEuZGF0YSgpOyB9LAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsg
cmV0dXJuIGRhdGEuZGF0YSgpOyB9LAogI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0
YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkpOyB9LAorICAgICAgICBbXShjb25z
dCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBH
UmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorICAgICAgICBb
XShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKICNlbmRpZgotICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1cm4g
V1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzI2LDcgKzMxMCw3
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29u
c3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAg
W10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwK
ICNpZiBVU0UoQ0YpCiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRh
KSB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKQEAgLTM1
Myw3ICszMzcsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owog
fQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Citjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CkBAIC0z
NjcsMTAgKzM1MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGxlbmd0aCAqIDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJh
Y3RlcnMuCi0gICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpOwogICAgIGlmIChsZW5ndGgpIHsKICAg
ICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENoYXIqIGQg
PSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3ICszNjcsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7CisgICAgYnVmZmVyLnNo
cmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDhhYzY5ZDU5MTAzNmYxZjYwMGZlODM4
NGY2ZmIyOWQ5OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdlOTA5M2RmOGVkYjYxZWFlYWRkZDAwZWI4
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02NiwxNCArNjYs
MTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAKICAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAjaWYgVVNF
KEZPVU5EQVRJT04pCkBAIC05OSw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIGRh
dGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBz
ZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgogICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21l
bnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IEF1ZGl0
IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0
ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAg
Y29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAogICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTExLDkgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTEyMywxMCArMTIyLDExIEBAIHB1
YmxpYzoKICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBu
ZXcgRGF0YVNlZ21lbnQuCiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRh
KQorICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OwpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjaWYgVVNFKENGKQogICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2VnbWVudChG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFy
PiwKKyAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQogICAgICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKQEAgLTIwNCw5ICsyMDQsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIzNSw4IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNmZWU2MTQyNTEzY2MyMmU2Zjg5ZGM0Yzgy
NGZhMDcwMmUwOWQuLjVlNDQ2NmNkM2YxNzE4OGEyN2MwY2RlMWVhOGE4MDFiMDJhMjQ3ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKQEAgLTQyLDI0ICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZm
ZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAs
IG1fc2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVh
Y2hlZEVuZE9mRmlsZShmYWxzZSkKICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKIH0KIAogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9u
KDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVudExlbmd0aCgwKQotICAgICwg
bV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKICAgICBzZXRTZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0K
QEAgLTc1LDcgKzYzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6c2V0U2VwYXJh
dG9yKGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICBtX3NlcGFyYXRvci5hcHBlbmQoc2VwYXJh
dG9yLCBzdHJsZW4oc2VwYXJhdG9yKSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0b3Ip
Citib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+
JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewogICAgIGlmIChtX3JlYWNoZWRFbmRP
ZkZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzLDcgKzcxLDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXQKICAgICBjaHVuay5jbGVhcigpOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIHdoaWxlIChtX3NlZ21lbnRJbmRleCA8IG1fc2VnbWVudExlbmd0aCkgewotICAgICAg
ICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4Kytd
OworICAgICAgICAgICAgYXV0byBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVu
dEluZGV4KytdOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0
b3JbbV9zZXBhcmF0b3JJbmRleF0pIHsKICAgICAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJ
bmRleCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04obV9zZXBhcmF0b3JJbmRleCA8PSBtX3NlcGFyYXRvci5zaXplKCkpOwpAQCAtMTEy
LDcgKzEwMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0
b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgIGlmICghbV9zZWdt
ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkZpbGUgPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKQotICAgICAgICAgICAgICAgIGNodW5r
LmFwcGVuZChtX3NlcGFyYXRvci5kYXRhKCksIG1fc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAg
ICAgICAgIGNodW5rLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3Nl
cGFyYXRvci5kYXRhKCkpLCBtX3NlcGFyYXRvckluZGV4KTsKICAgICAgICAgICAgIHJldHVybiAh
Y2h1bmsuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIyLDE0ICsxMTAsMTQgQEAg
Ym9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1
bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKIAogU3RyaW5nIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpuZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soYm9vbCBpbmNsdWRlU2Vw
YXJhdG9yKQogewotICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGlmICghbmV4dENodW5rKGRhdGEsIGluY2x1ZGVTZXBhcmF0b3IpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gZGF0YS5zaXplKCkgPyBTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgOiBlbXB0
eVN0cmluZygpOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVj
dG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKK3NpemVfdCBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0
ZWRTaXplKQogewogICAgIGRhdGEuY2xlYXIoKTsKICAgICBpZiAocmVxdWVzdGVkU2l6ZSA8PSBt
X3NlZ21lbnRMZW5ndGggLSBtX3NlZ21lbnRJbmRleCkgewpAQCAtMTQxLDcgKzEyOSw3IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8Y2hhcj4mIGRhdGEsIHNp
emVfdCByZXF1ZXN0ZWRTaXplKQogICAgIGRhdGEuYXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVu
dEluZGV4LCByZWFkQnl0ZXNDb3VudCk7CiAKICAgICBzaXplX3QgYnVmZmVyUG9zaXRpb24gPSBt
X2J1ZmZlclBvc2l0aW9uICsgbV9zZWdtZW50TGVuZ3RoOwotICAgIGNvbnN0IGNoYXIqIHNlZ21l
bnQgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBudWxscHRyOwogCiAgICAgLy8g
TGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgogICAgIC8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIGp1c3QgaXRlcmF0aW5n
IHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNzU2ZWVlMjQ2YjBlMmNh
ZTIwYzdlZTc3NzllNjVjMGY4ZDczNDYzYy4uYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQx
ZTI1ZmQ0Yzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCkBAIC00OCwyNCArNDgsMjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2Ugd2hlbiB0aGUg
ZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9y
PGNoYXI+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CisgICAgYm9vbCBu
ZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBm
YWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRo
ZSBidWZmZXIgaGFzIGJlZW4gcmVhY2hlZC4KICAgICBTdHJpbmcgbmV4dENodW5rQXNVVEY4U3Ry
aW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKTsKIAog
ICAgIC8vIFJlYWRzIHNpemUgYnl0ZXMgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gdGhlIGJ1
ZmZlciwgd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVmZmVyIHBvc2l0aW9uLgogICAgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBUaGF0IG51bWJlciBtaWdodCBiZSBsZXNzIHRo
YW4gdGhlIHNwZWNpZmllZCBzaXplIGlmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB3YXMgcmVhY2hl
ZC4KLSAgICBzaXplX3QgcGVlayhWZWN0b3I8Y2hhcj4mLCBzaXplX3QpOworICAgIHNpemVfdCBw
ZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6CiAgICAgU2hhcmVkQnVm
ZmVyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbjsKLSAgICBjb25zdCBj
aGFyKiBtX3NlZ21lbnQ7Ci0gICAgc2l6ZV90IG1fc2VnbWVudExlbmd0aDsKLSAgICBzaXplX3Qg
bV9zZWdtZW50SW5kZXg7CisgICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CisgICAg
Y29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NlZ21l
bnRMZW5ndGggeyAwIH07CisgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIGJv
b2wgbV9yZWFjaGVkRW5kT2ZGaWxlOwotICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvcjsKLSAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleDsKKyAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3Ig
eyBmYWxzZSB9OworICAgIHNpemVfdCBtX3NlcGFyYXRvckluZGV4IHsgMCB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMGJmMGM0YWZiMDFiNWExYjk5ZWE3YzlmNjZh
MzFjMDYyY2UzYWFhMi4uMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXgg
Mzg3MTczOGU1ZDVjMDUzY2JkYjJkNGJiOWI3MzAzODJmYmNhYzQyZS4uNDI5MGRiMTI4ZDAwMGE0
MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFwaG9y
ZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CmluZGV4IDU2YTc4OGNkNzUwNDhlZmRlY2FlZTY2ZWNmYWYwZjk2NTBkYzc4NmIuLjA2OGNkY2Iz
ODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRl
eCA0OWY4ZmE0YmNlMGQwZjg4MGJhNDM3NTEzYTMyNjZmNTZmNWEwMDYxLi45ZDBjZTkwYzBiMDE5
MjgwNjU4ZTg3MTM4YzFjNTFkMTc2NDY3ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVwZGF0ZUZp
bHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFk
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YS5nZXQoKSBsZW5ndGhdKTsKICAgICBt
X3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9u
ZTpOT11dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE1ZTYwZjIwNWNlZDJh
NTY0ODlhNDc0ZjAxMTQ3MmI3OThhNmMzNWMuLjQ1ZDE0YWQ5MDAzNzNhMjdiZjNiMmYzMzIzODIy
ZmU4ZjM0MTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5
KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgY29uc3QgY2hhciogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwogICAg
IHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkK
ICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0
YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggZTFlNWMzMDQzNTZjMGFhOWQ5YzA1
NDVkOTZhMzVhNjYzY2RiNzgzZS4uNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4
MTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXI7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAg
IHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpOwogCiAg
ICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKSkKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwog
ICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhf
dCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAg
bV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFy
KCk7CkBAIC0yMDUsOSArMjA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3ByZW11bHRpcGx5
QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwotICAgICAgICBWZWN0b3I8
Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNp
emUoKSB9OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMt
PmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwogICAgICAgICBtX3BpeGVscyA9IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNo
YXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkp
KTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRzKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMz
ZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3MTkuLjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2My
ZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2Rl
bDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaAppbmRleCAzZWQ0ZTA1YzQzOTRkZmY2M2FlNWZjNmJhMWVmMWE4MDQyNTQz
Y2I3Li5hMjhlNjFjMDJhNzJjYTkzODlhNjg2MzI1YjU0NmUzMWM0YzA0OTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgY2hhciosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCAxZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1
MTk4ZjgzNTA2ZGUzOTM3Li5iMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPGNoYXI+JiB2
ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQorc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPHVp
bnQ4X3Q+JiB2ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQogewogICAgIHVpbnQzMl90IGJpZ0VuZGlh
blZhbHVlID0gaHRvbmwodmFsdWUpOwotICAgIHJldHVybiB2ZWN0b3IudHJ5QXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPigmYmlnRW5kaWFuVmFsdWUpLCBzaXplb2YoYmlnRW5kaWFu
VmFsdWUpKTsKKyAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjx1aW50OF90Kj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MTZf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MTZfdCB2YWx1ZSkKIHsKICAgICB1aW50MTZfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25z
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCiBzdGF0aWMgY29u
c3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwpAQCAt
OTMsNyArOTMsNyBAQCBib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICNpZiBVU0Uo
V09GRjIpCiBjbGFzcyBXT0ZGMlZlY3Rvck91dCA6IHB1YmxpYyB3b2ZmMjo6V09GRjJPdXQgewog
cHVibGljOgotICAgIFdPRkYyVmVjdG9yT3V0KFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorICAgIFdP
RkYyVmVjdG9yT3V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQogICAgICAgICA6IG1fdmVjdG9y
KHZlY3RvcikKICAgICB7IH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmICghbV92ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fdmVjdG9yLnNpemUoKSAr
IG4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX3ZlY3Rvci5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBuKTsKKyAgICAgICAgbV92ZWN0b3IuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG9mZnNldCArIG4gPiBtX3ZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICBtX3ZlY3Rvci5ncm93
KG9mZnNldCArIG4pOwogICAgICAgICBtX3ZlY3Rvci5yZW1vdmUob2Zmc2V0LCBuKTsKLSAgICAg
ICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBuKTsKKyAgICAgICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBuKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MjIsMTEgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3Rvcjxj
aGFyPiYgbV92ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX3ZlY3RvcjsKIH07CiAjZW5k
aWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjxj
aGFyPiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBW
ZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1w
dHkoKSk7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogCiAjaWYgVVNFKFdPRkYyKQogICAg
IGlmIChzaWduYXR1cmUgPT0ga1dvZmYyU2lnbmF0dXJlKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHdvZmZEYXRhID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDhfdCo+KHdvZmYu
ZGF0YSgpKTsKKyAgICAgICAgYXV0byogd29mZkRhdGEgPSB3b2ZmLmRhdGEoKTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IHdvZmZTaXplID0gd29mZi5zaXplKCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBzZm50U2l6ZSA9IHdvZmYyOjpDb21wdXRlV09GRjJGaW5hbFNpemUod29mZkRhdGEsIHdvZmZT
aXplKTsKIApAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyIHx8ICFp
c1dPRkYoKmJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb252ZXJ0ZWRGb250OworICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKICAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKaW5kZXggNWMwY2E0ZmMyMDdkMjEwZmQwODA1NGM0ZmZhN2VmY2EzM2EwYjEyZC4u
M2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQg
dG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5
KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50
byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjxjaGFyPiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0
IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYg
dGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IDMwY2Y3OWVjZmRmMjU4MmY1NDUyYWJmMjEyOTYxMjg1NjMzZjc4MzAuLjI0NzcyOGU2Y2Jj
MDdmMjgyZmE1OGY1MTdiOGE2ZmUwNmU1YjA2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgog
ICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNo
YXIqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCiB7CiAgICAgQVNT
RVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
IHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwog
fQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQordm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCmluZGV4IGVmNWU1ZmI5ZTEzNjRhZjY3NTdlNTBmOGI4ZWYxNzJiZmMwZDYxNzku
LmEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAgICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIGNvbnN0IGNo
YXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247CisgICAgYXV0byog
c291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKICAgICBzaXplX3QgYW1v
dW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKICAg
ICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7CiAgICAgcmV0dXJuIGFtb3VudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0
aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGls
aXRpZXNDRy5jcHAKaW5kZXggM2Y4ZGUyNGVjMTQyNmJiNzdkNzdiODk3YzEzNGZmYWI5YzY2MDhl
ZC4uYTFlNWI3MzJmYjBiZjRlNTQyZDQxYmE5ZTg2OWRmMDFkNjU5ZTM1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXND
Ry5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGMKICAgICBDR0Rh
dGFDb25zdW1lckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIFtdKHZvaWQqIGluZm8s
IGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgewogICAgICAgICAg
ICAgYXV0byBoYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlKj4oaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
aGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgYnVmZmVyLCBjb3Vu
dCk7CiAgICAgICAgIH0sCiAgICAgICAgIG51bGxwdHIKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCAzYmE0YjhjOTBlYjBmMjE5MDdhNDI4
ZTMzN2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVk
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
Nzc0LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgdGVtcG9yYXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAg
ICAgbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0
aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1lbWNweShsb2NhdGlvbiwg
b3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEo
YWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNDUwY2RhMDM3Nzdh
ODJlNTQyNWI4ZmE4MWQyODcwZDVjM2I2MGQxYS4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoRlRfTG9h
ZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFibGVTaXplKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YSh0YWJsZVNpemUpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHRhYmxlU2l6ZSk7CiAgICAgRlRfVUxvbmcgZXhwZWN0
ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1Nm
bnRfVGFibGUoZnJlZVR5cGVGYWNlLCB0YWcsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8RlRfQnl0ZSo+
KGRhdGEuZGF0YSgpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAh
PSBleHBlY3RlZFRhYmxlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggYTE2MWM0N2M1MGRiODI4NDdlNmZmMmQ2ODUyOGJkOGNjYzcyMmQ1MS4uMGRlYTgw
ZTJiY2E0NzhlZDRjMDJhZTFhMGIwNTY1NGI4NGQyOWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBk
YXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0
YSA9IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAg
ICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4o
KTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDBiODc5NmFiN2I0N2Q5ZjgxMTNiZTk0ZWNkYTk2
M2ZlM2MwMGJmNWUuLjlkNDljOWYzN2JlMmU1NGNkYTc2MGE0ZGYyNmE0YjNlZGUzODc3ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmly
dHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDg3LDcg
KzEwODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDQ0OTgzNzM2NjFhN2ViMDk5ZmI5ODQ1NmU5NGE0MWQ4
NGFkYjFjMTYuLjE3MTM1YTE0MWNkNmZhMmNlNmE4NzJjNzczMTllNDMzYjM4NzYwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhCiAKIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3Nl
cnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGNlcnRpZmljYXRlLT5kYXRhQXNVSW50OFB0cigpKSwKKyAgICBPcGVuQ0RNRXJyb3IgZXJy
b3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3Rl
bS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAg
ICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwogICAgIGNhbGxiYWNrKCFlcnJvciA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZCk7CiB9CkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIEdTVF9ERUJVRygicGFyc2luZyBidWZmZXIgb2Ygc2l6ZSAlenUi
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXIt
PmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAo
ImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICAgICAgU3Ry
aW5nVmlldyBwYXlsb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXItPmRh
dGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZ1ZpZXc+IHR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCI6VHlwZToiKSwg
Nik7CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpr
ZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NU
X0VSUk9SKCJDRE0gZXJyb3IiKTsKLSAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3Nh
Z2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAo
ImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjaGFsbGVuZ2VDYWxsYmFjayA6IG1fY2hhbGxlbmdlQ2FsbGJhY2tzKQog
ICAgICAgICBjaGFsbGVuZ2VDYWxsYmFjaygpOwogICAgIG1fY2hhbGxlbmdlQ2FsbGJhY2tzLmNs
ZWFyKCk7CkBAIC01MDcsMTEgKzUwNywxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAg
IG1faW5pdERhdGEgPSBJbml0RGF0YShpbnN0YW5jZS0+a2V5U3lzdGVtKCksIFdURk1vdmUoaW5p
dERhdGFTaGFyZWRCdWZmZXIpKTsKIAogICAgIEdTVF9UUkFDRSgiR29pbmcgdG8gcmVxdWVzdCBh
IG5ldyBzZXNzaW9uIGlkLCBpbml0IGRhdGEgc2l6ZSAlenUiLCBtX2luaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKLSAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwor
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgp
LCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKIAogICAgIE9wZW5DRE1TZXNzaW9uKiBz
ZXNzaW9uID0gbnVsbHB0cjsKICAgICBvcGVuY2RtX2NvbnN0cnVjdF9zZXNzaW9uKCZpbnN0YW5j
ZS0+dGh1bmRlclN5c3RlbSgpLCB0aHVuZGVyTGljZW5zZVR5cGUobGljZW5zZVR5cGUpLCBpbml0
RGF0YVR5cGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51
bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7Cisg
ICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAm
c2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBzZXNzaW9uIik7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXRE
YXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdl
Lmhhc1BheWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3Nh
Z2UtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwg
bWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2Ut
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5z
ZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUobWVzc2FnZSkp
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBpZiAoIW1fc2Vzc2lvbiB8fCBtX3Nlc3Npb25JRC5pc0VtcHR5
KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Npb24uZ2V0KCksIHJlc3BvbnNlLT5k
YXRhQXNVSW50OFB0cigpLCByZXNwb25zZS0+c2l6ZSgpKSkKKyAgICBpZiAoIW1fc2Vzc2lvbiB8
fCBtX3Nlc3Npb25JRC5pc0VtcHR5KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Np
b24uZ2V0KCksIHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpKQogICAgICAgICBz
ZXNzaW9uRmFpbHVyZSgpOwogfQogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2Fn
ZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIFdU
Rk1vdmUobWVzc2FnZSkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmlu
ZGV4IGU4OWZiNTk5ODYyMTViOWQ1ZGFlMTc5ZDJkNzU5Y2VmNzQxODE0NzYuLmM4NjRiMmMzYThm
YjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVm
ZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBvc2l0aW9uKSAtIGJ1ZmZlci5k
YXRhKCk7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggYTAzZTcxYWIxYmMzYjFj
YTUwN2NmMzhlMjc0MTg3YmVjMGE5ZDE5MS4uNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYy
M2FlMjRkNDBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRl
ciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAgICAgb3ZlcmxheUxlbmd0aCA9IDA7CiAK
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGZvbnREYXRhLT5zaXplKCk7Ci0gICAgY29uc3QgY2hh
ciogZGF0YSA9IGZvbnREYXRhLT5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGZvbnREYXRhLT5k
YXRhKCk7CiAKICAgICBFT1RQcmVmaXgqIHByZWZpeCA9IGVvdEhlYWRlci5wcmVmaXgoKTsKIApA
QCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERh
dGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKICAgICAvLyBJZiBw
b3NzaWJsZSwgZW5zdXJlIHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9mIHRoZSBm
dWxsIG5hbWUuCiAgICAgaWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5ndGggJiYg
bWVtY21wKGZhbWlseU5hbWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewotICAgICAg
ICBvdmVybGF5U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnVsbE5hbWUpIC0g
ZGF0YTsKLSAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGZhbWlseU5hbWUpIC0gZGF0YTsKKyAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGZ1bGxOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJsYXlEc3Qg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmYW1pbHlOYW1lKSAtIGRhdGE7CiAg
ICAgICAgIG92ZXJsYXlMZW5ndGggPSBmYW1pbHlOYW1lTGVuZ3RoOwogICAgIH0KICAgICBlb3RI
ZWFkZXIuYXBwZW5kQmlnRW5kaWFuU3RyaW5nKGZ1bGxOYW1lLCBmdWxsTmFtZUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggMGMwYzEzNzIwM2RmMzZjZjU3NTVmMTJmNDliOTU2
MjM2MmYyNGM1Mi4uNzMzNmEyMzUxY2E3ODhlYjY4OWEwMmVkZGUzMDc5ODAxY2EyYWU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbgogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAw
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJ
X0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhKHNpemUpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERh
dGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKICAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHAKaW5kZXggNjc1YTE3MjFkNzU0NjY4ZjI2NjAzNzY0YjhhMDE0M2NjZTIzNzg4My4uN2M2
MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1h
Z2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRl
cihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKLSAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKKyAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9y
eShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZf
UkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5z
ZXRGYWlsZWQoKSA6IGZhbHNlOwogCiAgICAgaWYgKGF2aWZEZWNvZGVyUGFyc2UobV9hdmlmRGVj
b2Rlci5nZXQoKSkgIT0gQVZJRl9SRVNVTFRfT0sKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBBVklG
SW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGF0YVBhcnNlZCkg
ewotICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykgeworICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01l
bW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFW
SUZfUkVTVUxUX09LKSB7CiAgICAgICAgICAgICBtX2RlY29kZXItPnNldEZhaWxlZCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMuLmM3MTdjNDVkMzA1
N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJbWFnZVR5cGUgSUNPSW1h
Z2VEZWNvZGVyOjppbWFnZVR5cGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBjb25zdCB1aW50
MzJfdCBpbWFnZU9mZnNldCA9IG1fZGlyRW50cmllc1tpbmRleF0ubV9pbWFnZU9mZnNldDsKICAg
ICBpZiAoKGltYWdlT2Zmc2V0ID4gbV9kYXRhLT5zaXplKCkpIHx8ICgobV9kYXRhLT5zaXplKCkg
LSBpbWFnZU9mZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247Ci0gICAgcmV0dXJu
IHN0cm5jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0KSA/IEJN
UCA6IFBORzsKKyAgICByZXR1cm4gbWVtY21wKCZtX2RhdGEtPmRhdGEoKVtpbWFnZU9mZnNldF0s
ICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggOWE0NzBlYmFhMTFhMTI4ODViNjAzZTUzZmU4YTg0ZjEzYzc2MzlkZS4uYzEy
YzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYnl0
ZXNUb1VzZSA9IGRhdGEuc2l6ZSgpIC0gYnl0ZXNUb1NraXA7CiAgICAgICAgIG1fcmVhZE9mZnNl
dCArPSBieXRlc1RvVXNlOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXJTaXplID0gbV9yZWFkT2Zm
c2V0OwotICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2luZm8sIHJlaW50ZXJwcmV0
X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PGNoYXIqPihkYXRhLmRhdGEoKSArIGJ5dGVzVG9T
a2lwKSksIGJ5dGVzVG9Vc2UpOworICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2lu
Zm8sIHJlaW50ZXJwcmV0X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRh
LmRhdGEoKSArIGJ5dGVzVG9Ta2lwKSksIGJ5dGVzVG9Vc2UpOwogICAgICAgICAvLyBXZSBleHBs
aWNpdGx5IHNwZWNpZnkgdGhlIHN1cGVyY2xhc3MgZW5jb2RlZERhdGFTdGF0dXMoKSBiZWNhdXNl
IHdlCiAgICAgICAgIC8vIG1lcmVseSB3YW50IHRvIGNoZWNrIGlmIHdlJ3ZlIG1hbmFnZWQgdG8g
c2V0IHRoZSBzaXplLCBub3QKICAgICAgICAgLy8gKHJlY3Vyc2l2ZWx5KSB0cmlnZ2VyIGFkZGl0
aW9uYWwgZGVjb2RpbmcgaWYgd2UgaGF2ZW4ndC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGJhMzU1ZjBjZWZhYjU3ZDIzNzgxZTFiYjZlZjE3MzcxNWIxYTM5ODUuLjAyZjFi
MDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBX
aGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQ
RGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNv
IHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwotICAgIFdlYlBEYXRhIGlucHV0RGF0
YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkRGF0YS0+ZGF0
YSgpKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CisgICAgV2ViUERhdGEgaW5wdXREYXRhID0g
eyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdl
YlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdl
YlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CiAgICAgaWYgKCFkZW11
eGVyKSB7CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpwYXJzZUhl
YWRlcigpCiAgICAgaWYgKG1fZGF0YS0+c2l6ZSgpIDwgd2VicEhlYWRlclNpemUpCiAgICAgICAg
IHJldHVybjsgLy8gQXdhaXQgVlA4WCBoZWFkZXIgc28gV2ViUERlbXV4UGFydGlhbCBzdWNjZWVk
cy4KIAotICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSB9OworICAgIFdlYlBEYXRh
IGlucHV0RGF0YSA9IHsgbV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpIH07CiAgICAgV2Vi
UERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2Vi
UERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKICAgICBpZiAoIWRlbXV4
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNjAzNzVkZTViY2RjYjQ3NmFlMGVmNDE3
NWNlNzFiMWUxZDYxNTVmZi4uMDU0NDI4ZDUwZGM2MWFhYWQ1MTg4NzlkMjJjYmMyZjk3NzkxNTAz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBib29s
IHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNl
bmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXgg
OWY2ZGQ4MGYyNWExZTA2NzU1ZGExYWM5ODdlYWU4ODlkZjlmMjc0Mi4uZGQwNWVmMGZiZDNlNzMw
OTc0MzUwNWFjY2MwMTAxNGVmNGQ5YzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVT
b3VyY2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAppbmRleCA0MTI0N2Y2ODRmNzYw
OTBhNmQyYmUyNTBhNTU4ODY0Y2NmMDQyMTU3Li5jOWM5M2JhNjAxMThmOTE5ZDExNjAyOTMyZGFl
ODNkNzk5NDY3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNv
bm5lY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIFJUQ0RhdGFDaGFu
bmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoUlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hh
ciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciwgc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKaW5kZXgg
ZDAzMDA1MzZlZDkzMGZiZjljMjAyYmI5NzI2MTBkNGM1Zjg5YThjNC4uOTNiZDk2MmQ0ZGVhZDQw
MzllNWQwMTU0N2I1NTgyMDhkOWVlZWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC01NCw3
ICs1NCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZVJhd0RhdGEoZGF0YSwgc2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmlu
ZGV4IDRhNTEwOTJiYzQxZjJjZjlmN2YzZDA0ZjI3N2E3NWMyOTRlMWNhYTUuLmUwNzBiZGIxM2U4
NzI1ODdjNTNlMDRmNDk2MTdmZWQ1NTlhMGE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC00MSw3
ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogCiAg
ICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5h
bDsKIAogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAppbmRleCBkMmVlYmRlZDk1ZGU3NWNjMDk0NTllM2IxYjA2MTk2ZGI2ZTYxM2Zi
Li4zMmRkOGMwOGUyMTkwNmY0YTJkOGYyYThjMzBjN2VhNWFhOTUyNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAg
LTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNU
b0ZpbGUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocgogICAgIGZvciAoYXV0byYg
cGFydCA6IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vjb25kLmRhdGEoKS0+
c2l6ZSgpOwotICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwg
bGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSwgbGVuZ3RoKSAhPSBsZW5ndGgp
IHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0
ZW1wb3JhcnkgZmlsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uM2U3NGE2YTA0ZWYw
NWE3OWQyY2IxNDFhYThjM2FlZGZkMmY0MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogICAgIHJldHVybiBj
cmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CiB9CiAKLVJlZjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCitSZWY8Rm9ybURhdGE+IEZv
cm1EYXRhOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewogICAgIGF1dG8gZGF0
YSA9IGNyZWF0ZSgpOwogICAgIGRhdGEtPm1fZWxlbWVudHMuYXBwZW5kKFdURk1vdmUodmVjdG9y
KSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZp
bGVzQ291bnQoKSBjb25zdAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVz
KGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNpemUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hh
cj4mIGJ5dGVzKSB7CisgICAgICAgIFtdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVzLnNpemUoKSk7
CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYg
ZmlsZURhdGEpIHsKICAgICAgICAgICAgIGlmIChmaWxlRGF0YS5maWxlTGVuZ3RoICE9IEJsb2JE
YXRhSXRlbTo6dG9FbmRPZkZpbGUpCkBAIC0xNjQsNyArMTY0LDcgQEAgdWludDY0X3QgRm9ybURh
dGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0
YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRh
dGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgIFtd
IChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9y
bURhdGFFbGVtZW50KFZlY3RvciB7IGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpIH0pOwogICAg
ICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVE
YXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KGZpbGVEYXRhLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9sZW5ndGhJbkJ5dGVz
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9lbGVtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4obV9lbGVtZW50
cy5sYXN0KCkuZGF0YSkpIHsKLSAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3Rv
ciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9lbGVtZW50cy5sYXN0KCkuZGF0YSkp
IHsKKyAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUgfSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0pOwogfQogCiB2b2lkIEZvcm1EYXRh
OjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCkBAIC0yODQsMTIgKzI4NCwxMiBA
QCB2b2lkIEZvcm1EYXRhOjphcHBlbmROb25NdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBET01Gb3JtRGF0YSYgZm9ybURhdGEsCiAgICAgYXBwZW5kRGF0YShlbmNvZGVkRGF0YS5kYXRh
KCksIGVuY29kZWREYXRhLnNpemUoKSk7CiB9CiAKLVZlY3RvcjxjaGFyPiBGb3JtRGF0YTo6Zmxh
dHRlbigpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAog
ewogICAgIC8vIENvbmNhdGVuYXRlIGFsbCB0aGUgYnl0ZSBhcnJheXMsIGJ1dCBvbWl0IGFueSBm
aWxlcy4KLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRv
KiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCisgICAg
ICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KGVsZW1l
bnQuZGF0YSkpCiAgICAgICAgICAgICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9y
LT5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBW
ZWN0b3I8Y2hhcj4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAogU3RyaW5nIEZvcm1EYXRhOjpm
bGF0dGVuVG9TdHJpbmcoKSBjb25zdAogewogICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7Ci0g
ICAgcmV0dXJuIExhdGluMUVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CisgICAgcmV0dXJuIExhdGluMUVu
Y29kaW5nKCkuZGVjb2RlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwg
Rm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKQEAgLTM0Nyw3ICszNDcsNyBAQCBS
ZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5
SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbAogCiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewogICAgICAgICBzd2l0Y2hPbihlbGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0g
KGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBl
bmREYXRhKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAo
Y29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAg
ICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0YS5maWxlbmFt
ZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxlRGF0YS5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB1aW50NjRfdCBG
b3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjxjaGFyPj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA4ZjIy
MTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUxMDViYmRjNjRkLi41YmZmNjVhNjM2YzMxNzU1Mjll
MjRkYzEzNjUxMDhjZjJiNmFmNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCkBAIC0zOCwxMiArMzgsMTIgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKICAgICBz
dHJ1Y3QgRW5jb2RlZEJsb2JEYXRhOwotICAgIHVzaW5nIERhdGEgPSBWYXJpYW50PFZlY3Rvcjxj
aGFyPiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRhdGE+OworICAgIHVzaW5nIERhdGEg
PSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRh
dGE+OwogCiAgICAgRm9ybURhdGFFbGVtZW50KCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IEZv
cm1EYXRhRWxlbWVudChEYXRhJiYgZGF0YSkKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQotICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4mJiBhcnJheSkK
KyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgYXJyYXkpCiAg
ICAgICAgIDogZGF0YShXVEZNb3ZlKGFycmF5KSkgeyB9CiAgICAgRm9ybURhdGFFbGVtZW50KGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmlsZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5n
dGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUp
CiAgICAgICAgIDogZGF0YShFbmNvZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBm
aWxlTGVuZ3RoLCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lIH0pIHsgfQpAQCAtMTkzLDcg
KzE5Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVh
dGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOworICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29u
c3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJh
bmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxl
bmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxjaGFyPiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9t
aXRzIGZpbGVzCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGZsYXR0ZW4oKSBj
b25zdDsgLy8gb21pdHMgZmlsZXMKICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7
IC8vIG9taXRzIGZpbGVzCiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28g
d2Ugb25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggZmJhMDIzM2JlZmEy
Y2Q0YzE2MTRmNzA1NmI0YjA3NTM3OTMxZWNlZi4uYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2
NjJiYzc3NTZiNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBs
b25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1Rv
QmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0
NjAzMTU5NGQzYWQ1NWU2Mjc0NzA5YmU4NmM1MjVlMjllYzJlY2Y3Li40YzA0MjEwYzVhNTEzYWMz
ZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEs
OSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAppbmRleCA4ODEwMzhjODdkMWJjOWY0MTZi
YTExNjM1ZTNiNDE0NWM4ZDg4MGE5Li42ODM4ZTlkOGNmNDM3OTZkMmYzOTRiYTFmNTRmMDlkMGI2
N2U4YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggYTZmMmI3M2MxN2RmY2Y4NjI4NGM4YzVkZTU2MjA2YTlhNTA4NzRjZC4uZjZi
MmExODU3OTJiOThlMjQ4ZDE1ZjA3NjA4ZDZkYmNjODcwZWYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCiAgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBs
b25nIGxvbmcgY3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSB9OwotICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERh
dGE7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBjdXJyZW50RGF0
YTsKICAgICBDRlJlYWRTdHJlYW1SZWYgZm9ybVN0cmVhbSB7IG51bGxwdHIgfTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc3RyZWFtTGVuZ3RoIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQgeyAwIH07CkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBzdGF0aWMgYm9vbCBhZHZh
bmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIEZvcm1EYXRhRWxl
bWVudCYgbmV4dElucHV0ID0gZm9ybS0+cmVtYWluaW5nRWxlbWVudHMubGFzdCgpOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gc3dpdGNoT24obmV4dElucHV0LmRhdGEsCi0gICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICBbZm9ybV0gKFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMpIHsKICAgICAgICAgICAgIHNpemVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwotICAgICAg
ICAgICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVs
ZWFzZUJ1ZmZlcigpOwotICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0Yo
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAg
ICAgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMu
cmVsZWFzZUJ1ZmZlcigpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIGRhdGEuZ2V0KCksIHNpemUs
IGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAgICAgICAgIGZvcm0tPmN1cnJlbnREYXRhID0gV1RG
TW92ZShkYXRhKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9ybV0g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAt
Mzk1LDggKzM5NSw4IEBAIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBGb3JtRGF0YSogZm9ybURhdGEpCiAgICAgLy8gSGFuZGxlIHRoZSBjb21tb24gc3Bl
Y2lhbCBjYXNlIG9mIG9uZSBwaWVjZSBvZiBmb3JtIGRhdGEsIHdpdGggbm8gZmlsZXMuCiAgICAg
YXV0byYgZWxlbWVudHMgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKTsKICAgICBpZiAoZWxlbWVudHMu
c2l6ZSgpID09IDEgJiYgIWZvcm1EYXRhLT5hbHdheXNTdHJlYW0oKSkgewotICAgICAgICBpZiAo
YXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihlbGVtZW50c1swXS5kYXRh
KSkgewotICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHZlY3Rvci0+ZGF0YSgpKSwgdmVjdG9y
LT5zaXplKCkpKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rv
cjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNp
emUoKSkpOwogICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3QsIGRhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2Yx
ZDVhZjdkZWU1Ni4uOWJlNTg2ODJjYWMzM2JiYWFhOWUxODZkMmEzNGM0NjQwYjQxNWM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IDlkMDA1NTgxYWRlYzBjYzRjNjU4ZDhjZWU3NGZhYjVkMGE3MmQ2YjYuLjA1
NzZlZDg4MTI0MTA4MjI0NDc2Y2I2YmI3NTU4Zjk1YzljNzg1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC0xNTUsNyArMTU1LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2ln
bmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25n
IGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxl
cjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25z
ZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0YSBsZW5ndGg6KGludClsZW5ndGg7CistICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBsZW5ndGg6KGludClsZW5n
dGg7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBkY2Fh
YjcwNTFjZGMyMmM5OTE5YTM1OWNmZmFlNjgxZjdjMWNhMzRmLi5hNmY3MWFmNDIwZGY4ZGJkM2Nk
MmUzNGZjMDI3OGQ0NjBhZDhiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01NzAs
NyArNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
IC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwpAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAg
cmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVz
cG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTg3Myw3ICs4NzMsNyBAQCAtIChCT09MKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0
YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCB1aW50OF90KilkYXRhIGxlbmd0aDoo
aW50KWxlbmd0aAogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDI4OTU4YTljZGJlZGJlZGUyMjJhZDdmN2I4ZWQ4
MGQ5OTI1ODNhNGQuLmVkN2MzN2E2N2UwNDNjNWFkMzI5N2YyNDFhNjc2NGU1YWRkNTljMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl
KQogICAgICAgICBjaGFyKiBidWZmZXJQb3NpdGlvbiA9IGJ1ZmZlciArIHRvdGFsUmVhZEJ5dGVz
OwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkQnl0ZXMgPSBzd2l0Y2hPbihl
bGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMp
IHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAg
ICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBi
dWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRG
cm9tRmlsZShmaWxlRGF0YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNpemUpOwpAQCAtMTczLDEw
ICsxNzMsMTAgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVh
ZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW4KICAgICByZXR1cm4gcmVhZEJ5dGVz
OwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJv
bURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl
KQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21EYXRh
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBzaXplX3QgZWxlbWVudFNpemUgPSBkYXRhLnNpemUoKSAtIG1fZGF0YU9mZnNldDsK
LSAgICBjb25zdCBjaGFyKiBlbGVtZW50QnVmZmVyID0gZGF0YS5kYXRhKCkgKyBtX2RhdGFPZmZz
ZXQ7CisgICAgY29uc3QgdWludDhfdCogZWxlbWVudEJ1ZmZlciA9IGRhdGEuZGF0YSgpICsgbV9k
YXRhT2Zmc2V0OwogCiAgICAgc2l6ZV90IHJlYWRCeXRlcyA9IGVsZW1lbnRTaXplID4gc2l6ZSA/
IHNpemUgOiBlbGVtZW50U2l6ZTsKICAgICBtZW1jcHkoYnVmZmVyLCBlbGVtZW50QnVmZmVyLCBy
ZWFkQnl0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCmluZGV4IGI5YTEwMGRjOGRmNWFkYTNmZWMxZDQ0
MTU5YTkxMmE5YTAzN2E0MDcuLmRkZWU4ZmU5ZjVmYTQxNmFjMjMwNGE1ODFhNjUzZjA5NWE2MjAx
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Rm9ybURhdGFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVDb250ZW50TGVuZ3RoKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
cmVhZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiwgY2hh
ciosIHNpemVfdCk7Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWRGcm9tRGF0YShjb25z
dCBWZWN0b3I8Y2hhcj4mLCBjaGFyKiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gcmVhZEZyb21EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNoYXIqLCBzaXplX3QpOwog
CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAppbmRleCBlNTY0YTBjZTY2NjE0YTQ5YTEwMzEzNjg4NTFjNGRhODgy
MzUyYTYxLi5hMzA5YzI1OGNkOWYxMTJkM2JiY2U2Y2FhNzE0ODE4MzZhMWZiMDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVj
ZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1
ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNpemUoKSk7CiAgICAgY2xpZW50KCktPmRp
ZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDFmN2U5MTQ4Y2NhOTY0ZTAxY2Nk
ZjJhNmJhYWUzNzc3ZWI1ZTBkODAuLjUyM2QwZDIxODU3ZDkwNDhjNTZiYjhjMTAzZDhhYTAwYmMx
MGU2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3Vw
TWVzc2FnZSwgQmxvYlJlZ2lzdAogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2Fz
ZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVs
ZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9
PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZl
Y3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudHNbMF0uZGF0YSkpIHsKICNpZiBVU0UoU09VUDIpCiAgICAgICAgICAgICBzb3VwX21lc3Nh
Z2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVN
UE9SQVJZLCB2ZWN0b3ItPmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRGb3JtRGF0YUlu
cHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9XZWJL
aXRGb3JtRGF0YUlucHV0U3RyZWFtLmNwcAppbmRleCA4YTM1YzYxNjQwOTE3MmY1ZDc3YmFjYTUx
MTgyOGNlYzgyNzFkZDdiLi40OTNiMTM4YzI2ZDMwNjYzNGVjYjI1NTU3YmUyMjYwY2FhMTM2NzNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvV2ViS2l0
Rm9ybURhdGFJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1dlYktpdEZvcm1EYXRhSW5wdXRTdHJlYW0uY3BwCkBAIC02MCw3ICs2MCw3IEBA
IHN0YXRpYyBib29sIHdlYmtpdEZvcm1EYXRhSW5wdXRTdHJlYW1DcmVhdGVOZXh0U3RyZWFtKFdl
YktpdEZvcm1EYXRhSW5wdXRTdHJlYW0qCiAKICAgICBjb25zdCBhdXRvJiBlbGVtZW50ID0gZWxl
bWVudHNbcHJpdi0+bmV4dEluZGV4KytdOwogICAgIHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKLSAg
ICAgICAgW3ByaXZdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpIHsKKyAgICAgICAgW3ByaXZd
IChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsKICAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld19zdGF0aWMoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSk7CiAgICAgICAgICAgICBwcml2LT5jdXJyZW50U3RyZWFtID0gYWRvcHRHUmVm
KGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAg
ICAgICB9LCBbcHJpdiwgY2FuY2VsbGFibGVdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29k
ZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oCmluZGV4IDA1ZDE3NzE3NzUxZTAwYTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0
YmIuLmViY2RiMmUwZGQ5YjQyODBmMjUxNTczZGJhNmI1YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBz
aXplX3QgbGVuZ3RoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3Q7CiAg
ICAgU3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAg
U3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7
IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0
aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1Zp
ZXcsIFVuZW5jb2RhYmxlSGFuZGxpbmcsIE5GQ05vcm1hbGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVz
KSBjb25zdDsKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdW
aWV3IHN0cmluZykgY29uc3QgZmluYWwgeyByZXR1cm4gZW5jb2RlKHN0cmluZywgVW5lbmNvZGFi
bGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0aWVzLCBORkNOb3JtYWxpemU6Ok5vKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4
IDYyOTFiNjQyNDY0ZjI3NWI0NTNiY2M5ZTQwZTFjOWZjNTA5OWE5NjAuLjg5Y2Y2YTBiYjY1ODcw
ODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKICAg
ICBpZiAoYnl0ZXNUb1JlYWQgIT0gSU5WQUxJRF9GSUxFX1NJWkUgfHwgbGFzdEVycm9yID09IE5P
X0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQg
Ynl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEo
KSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVh
ZCkKICAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAK
aW5kZXggMWYzM2EzYjYxM2NiMDNlYjU4M2U4NTk0YmFhMDI5MjQwYmY4YWJhYS4uOGVhNDRkY2Yy
NTZhYjAwNDMxMjkwY2I0ZTY1NTFiODM2MzJjNTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgU1ZHVG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50Jik7CiAgICAgYm9v
bCBjb252ZXJ0U1ZHVG9PVEZGb250KCk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gcmVsZWFzZVJlc3Vs
dCgpCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlbGVhc2VSZXN1bHQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFdURk1vdmUobV9yZXN1bHQpOwogICAgIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxHbHlwaERhdGE+IG1fZ2x5cGhzOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBHbHlwaD4gbV9nbHlwaE5hbWVUb0luZGV4TWFwOyAvLyBTVkcgMS4xOiAiSXQgaXMgcmVjb21t
ZW5kZWQgdGhhdCBnbHlwaCBuYW1lcyBiZSB1bmlxdWUgd2l0aGluIGEgZm9udC4iCiAgICAgSGFz
aE1hcDxTdHJpbmcsIFZlY3RvcjxHbHlwaCwgMT4+IG1fY29kZXBvaW50c1RvSW5kaWNlc01hcDsK
LSAgICBWZWN0b3I8Y2hhcj4gbV9yZXN1bHQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVzdWx0
OwogICAgIFZlY3RvcjxjaGFyLCAxNz4gbV9lbXB0eUdseXBoQ2hhclN0cmluZzsKICAgICBGbG9h
dFJlY3QgbV9ib3VuZGluZ0JveDsKICAgICBjb25zdCBTVkdGb250RWxlbWVudCYgbV9mb250RWxl
bWVudDsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIGJvb2wgU1ZHVG9PVEZGb250Q29udmVydGVyOjpj
b252ZXJ0U1ZHVG9PVEZGb250KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjpvcHRpb25h
bDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQm
IGVsZW1lbnQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFNWR1RvT1RG
Rm9udChjb25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRD
b252ZXJ0ZXIgY29udmVydGVyKGVsZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCmluZGV4IDg3NTE5
MTM0YjcyNjg2M2QwOWNkMTNjYzI4N2FiYzM4NTUyYTRhNjIuLjg4ZDcyNzI2ODE4NjY3OGI2ZmU2
ZjhlNmJiMmJjNDAwYzFjN2QwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uaApAQCAtMzEsNiArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNWR0ZvbnRFbGVtZW50OwogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVy
dFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKaW5kZXggMDA5NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNi4u
ZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERh
dGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
ICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExv
YWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAg
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFn
ZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0
ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAg
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5k
YXRhKCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEoKS0+
c2l6ZSgpKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmNwcAppbmRleCAyYzkzY2VjMjQ4MzQ3MGQ5MDM1NGUyNGY0YmIyODYyYjQ3MjA1NjQz
Li5mYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBA
IHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJS
ZXNwb25zZSk7CiB9CiAKLXZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hh
ciosIGludCkKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCos
IGludCkKIHsKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFk
ZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmlu
ZGV4IDg1NDVmMTk5YTY0ZDI2ZGEyYzU0YTA1MzdkYTA3NTkxMjU4ZDUyNWUuLjQxMWEzMDA5NDdi
NTM5ZTI2YWE2YzY0YTAwOTMyOTJlOWZmYmU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92
ZXJyaWRlOwogICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBhMWY5NDdlYjg3MTIx
ZDljYzAwN2Q3MjM3YjBjZDdlMTI4MjQwYzI2Li5mYWJiZDAzZWIwYWRjMTIwNGUxMDQxYTEwOGUw
NWI3NmU0NTQ1NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3AKICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCmluZGV4IGJmOTRmZDQ4Y2FiMTRiZDUzNDg5MjE3ZjIwNGJmMjNhODYwNGM1
ZTguLjE1YzQ1MTM4MDA1MDRhYjAzZDQ5MTc5YmI1NGU4MjAwZTJkNDk5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjEsNyArNjEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKaW5kZXggZmIwNzJjYzE4YzkxZmUxMTBlNGFkZWVhODMzMjg5YzI4M2JiNmRkZS4uZDdj
MWFiMjZkYzFkZTIzMjM3ZGI0M2U5OGMxMjM1NDNkMDE5NjY1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9u
c2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQog
ewogICAgIGlmIChtX2ZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBA
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKGxlbiA9PSAtMSkKLSAg
ICAgICAgbGVuID0gc3RybGVuKGRhdGEpOworICAgICAgICBsZW4gPSBzdHJsZW4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkpOwogCiAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVj
b2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZDMzN2M1MDM2ZGFjMGY2NzVhMWM5MjNkOGRlNjQzZmYx
MzUzM2NiOC4uOGQxYWExYmIxOTE4NWQ0Zjc5YmI2ZmFkNGU5ZTc0MTgyM2Q2ZjA3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZXJyb3I7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4Zjc2MGQ2MmY3ZGIw
MDdlNWM0YWJlZDM4YWEwOGNiZWZlMDE2NTEzLi5iMmU5MTc1YTcwZTY0MDc1MTg2NmM0ZjRhZGVl
YjkxYjcyMzVlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFNjcmlw
dEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhCiAKICAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVE
YXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiB3
cml0ZURhdGEpIHsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdp
bigpOyBpdCAhPSBzY3JpcHQuYnVmZmVyKCktPmVuZCgpOyArK2l0KQotICAgICAgICAgICAgd3Jp
dGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGl0LT5zZWdtZW50LT5kYXRh
KCkpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHdyaXRlRGF0YShpdC0+c2Vn
bWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKTsKICAgICB9OwogCiAgICAgaWYgKCFz
aG91bGRVc2VGaWxlTWFwcGluZyhzY3JpcHQuYnVmZmVyKCktPnNpemUoKSkpIHsKQEAgLTk4LDcg
Kzk4LDcgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmEKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH0KICAgICAgICAgaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0
YSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggNzcwNGZlODEzNTA2MTY1MDlhMjgxNzEzMjJkOWVhZWEzMGU3NWY3My4u
ZWNmMGE0OWIzMDFkY2Y5MTgzYzFlYWY5ODUwMDYwMDkwYTQ0MGYyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBSZWY8VGV4dFJlc291
cmNlRGVjb2Rlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgIHJl
dHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsK
IH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW4pCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihkYXRhKTsKKyAgICAgICAgbGVuID0g
c3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAogICAgIGlmICh1
c2VEZWNvZGVyKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5k
ZWNvZGUoZGF0YSwgbGVuKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGMx
ODU3YzkwNTE1ZjZiZTc3NzBiYzA0Yzk1NjQzNDIzNmFiNzQ0YTguLjYzZDViMjQwMjhlZGQ3YzI5
ZWU3NWI2NDA3OGFmOTYzYjQyYjM4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNTdlZTVkZWQyNGJkYTI3NWU1ODZiZGY2MTMyYTUyNDU1
YWJhY2M5Ni4uZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwK
IAogICAgICAgICAvLyBXZSBkb24ndCBzcGVjaWZ5IGFuIGVuY29kaW5nIGhlcmUuIE5laXRoZXIg
R2Vja28gbm9yIFdpbklFIHJlc3BlY3RzCiAgICAgICAgIC8vIHRoZSBlbmNvZGluZyBzcGVjaWZp
ZWQgaW4gdGhlIEhUVFAgaGVhZGVycy4KLSAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbFJlYWRN
ZW1vcnkoZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBvcHRpb25zKTsKKyAgICAgICAgeG1sRG9jUHRyIGRv
YyA9IHhtbFJlYWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRhdGFBc0NoYXJQdHIoKSA6IG51bGxwdHIs
IGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBvcHRpb25zKTsK
IAogICAgICAgICB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jKDAsIDApOwogICAgICAgICB4bWxT
ZXRHZW5lcmljRXJyb3JGdW5jKDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDFkOGRhZGJlNDY3NjE5
MmY2NWFlOGUwOGM1NjgxYzZiMGNjZTk3OGYuLmE1NGRjMjg5OTgyMDg4MzY2YWU3N2MwNmI0MWU1
NDViOWNiMGU2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM1OSw5ICszNTksOCBAQCBzdGF0aWMgaW50
IG1hdGNoRnVuYyhjb25zdCBjaGFyKikKIGNsYXNzIE9mZnNldEJ1ZmZlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT2Zmc2V0QnVmZmVyKFZlY3RvcjxjaGFy
PiBidWZmZXIpCisgICAgT2Zmc2V0QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKICAg
ICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCi0gICAgICAgICwgbV9jdXJyZW50T2Zm
c2V0KDApCiAgICAgewogICAgIH0KIApAQCAtMzc3LDggKzM3Niw4IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOwotICAgIHVuc2lnbmVkIG1f
Y3VycmVudE9mZnNldDsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CisgICAgdW5zaWdu
ZWQgbV9jdXJyZW50T2Zmc2V0IHsgMCB9OwogfTsKIAogc3RhdGljIGJvb2wgZXh0ZXJuYWxFbnRp
dHlNaW1lVHlwZUFsbG93ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5jcHAKaW5kZXggZDNlNjE2MWJkMmJkY2Y4ZWFmMzAxMDdjNTM2YmVkNGIyN2UwOWMwOC4uMjA4
NzM3MzllMDUzNGRkYTZhNDgyMjI0MTRhYWM3MTY0NjQwOGQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAt
OTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90
IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+
ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
NjRfdCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aAppbmRleCA1MjliNjdkMTc3ODA5MzRlODM1OWMwMDBhNDEzNmFlOTkwNTAyNjRjLi45YjQwNzAx
Y2Y1MzI5ODk1ZTQxYjg0MzRmMDE1ZjY5OWQ0MGQzOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50NjRfdCk7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQo
Y29uc3QgdWludDhfdCosIGludDY0X3QpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAKaW5kZXggZmVjNjVjZjYyYjY2NzRiODMwMGM1MGNkNDMzNDE1ZTkxNTExNDQwMC4uMTNmMTc0
ZTQ5MzEwMDFmZWJhZWNhNmFjYzFkZWQ5MWQxZTMxOGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6
OmRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVuCiAgICAgaWYg
KCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHJlc291cmNlLT5kYXRhUmVjZWl2ZWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZlZChkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCmluZGV4IDM3YjI1NGI5MGUwNDFlN2UwMjMyNjY1M2QwOWNmMDJjYWFhZDRk
ZTkuLjFjMDg2Y2EwZDA2ZTg5MTI0NDE2MjI2MTBlMDdkZTkyOGU4MjliN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENh
Y2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBj
b25zdAogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVm
PFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3Jl
IGZvcm0gZGF0YSBib2R5LgogICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkgfTsKKyAgICAgICAgYm9k
eSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qg
c3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggZmZhOTEw
NGNkNWNkNjFhZjE2ZDRjYzA4MjJhMDdkNzMyYjIwZjAxNi4uOGE1OWEzNTY2ZDQ2ZWUzMzI1ZTU3
MWE4YWU3ZGQ5NzA5YzQxNGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAg
ICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
ICAgIERhdGEgYm9keTsKICAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+
c2l6ZSgpIH07CisgICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkgfTsKIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5
LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCmluZGV4IDNiZjE2NjM1
MTQ4YjRmYzQxMDRkZTdlMTBhNWYzNmE5MzA1MGQ1YTEuLmZhNzZhYzc2MmVhZGFhMDdiMTQzNzU4
YTU1MmNhYjBiY2JhMzQ5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcApAQCAt
NzksNyArNzksNyBAQCB2b2lkIElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3Qg
RGF0YSYgZGF0YSwgV29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3RpbwogewogICAgIHF1ZXVlLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgZGF0YSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAg
ICBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVEZXNjcmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0
ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwotICAgICAgICBpbnQgZXJyID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlRGVzY3JpcHRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGludCBlcnIgPSBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVEZXNjcmlwdG9yLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwogICAgICAgICBlcnIgPSBlcnIgPCAwID8gZXJyIDogMDsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXJyKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IDc2MWMwNWNm
NmQ2ZTY5MmYyNzE2ZmFjNmMzNGNkYzkzNjFlOGM1OGMuLjgwYmFjNGIyODljMGI1NzQxMTMxODQ1
YTVkMzA2ZTZhZjhmODJmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIENTdHJpbmcgbV9z
bmlmZmVkQ29udGVudFR5cGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1fcmVhZEJ1ZmZlcjsKKyAgICBW
ZWN0b3I8dWludDhfdD4gbV9yZWFkQnVmZmVyOwogICAgIHVpbnQ2NF90IG1fYm9keURhdGFUb3Rh
bEJ5dGVzU2VudCB7IDAgfTsKICAgICBHUmVmUHRyPEdGaWxlPiBtX2Rvd25sb2FkRGVzdGluYXRp
b25GaWxlOwogICAgIEdSZWZQdHI8R0ZpbGU+IG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRl
eCA4MzQ2ZTM5ZTg3YTRkMDU4MjUzZmVjZWE2NzFjMTMyZTQ3NjllMWI5Li5kZjhlZTMwYzQzYzBm
ZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICghYnVm
ZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1
ZmZlcikKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc2VnbWVudC5zZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSwgMSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CiB9
CiAKIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKaW5kZXggYzNmMTgzYjJkYjViYjU5NGMzMDljZDg5YjcyMDIwZWEwMWFk
MjFhNy4uN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKLSAgICBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0cjsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgp
IDogdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDRiMjBjODVhYzUzNjIzNjQwM2E4M2VhOTczY2Rj
Y2QxMGZkZjcyZjYuLmNiZDA0ZDk5YjdjMjcxNjcxYzg3NTJiMThhOTJlNDIxNTg1NmM5ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3QKIAog
dm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgbV9wbHVn
aW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+c3RyZWFt
RGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAK
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2
NF90IHN0cmVhbUlEKQpAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
CiAgICAgaWYgKG1fcGx1Z2luQ2FuY2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9w
bHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggZGE4MjA0NjRm
OTNjNjA0Y2U4Njk3OWI2NWQ2YWU2NzZmMWZjMDBiMi4uYmZmMWQxN2ZhNmE3M2Q5ZTlkYzA4MGVj
OTUxOWE2ZDNjY2MwNDhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTU5
LDcgKzU5LDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgVHlwZSB0eXBlID0gVHlwZTo6
RGF0YTsKIAogICAgICAgICAvLyBEYXRhLgotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKICAgICAgICAgLy8gRmlsZS4KICAgICAgICAg
U3RyaW5nIGZpbGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUx
Ny4uMDg3ODhjODJmMmEzNjY2YmQxNTVkZmMzZTQ1NmIwYmJlNTEwMmU0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNDQsNyArMTQ0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlv
blVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNz
YWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
ICpidWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCksIDEpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEp
OwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgYXV0byBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC0z
MDYxLDcgKzMwNjEsNyBAQCBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252
ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4g
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2Ny
aXB0LmJ1ZmZlcigpLT5iZWdpbigpLT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSks
IHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Cisg
ICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1
aW50OF90Kj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAg
cmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRl
eCBmZmVlMDYxMTQ2MGJjMWVkYmFkYWFkYTc5ZDhkZWY4NmRmMjk5NDdmLi41YTE4MGJlZWQxMmY1
Y2RjZGZiYWU2NzAyZTY5M2I5ZWE2ZTBhODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogfQogdGVtcGxhdGU8PiB2b2lkIGdldERh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgZnVuY3Rpb24pCiB7Ci0gICAgZnVuY3Rpb24ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7
CisgICAgZnVuY3Rpb24oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
OjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQog
ICAgIGlmIChmaWxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAs
IDAsIDAsIDB9OwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxp
ZEhlYWRlcikpOworICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgJmlu
dmFsaWRIZWFkZXIsIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChi
eXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAg
IGNsb3NlRmlsZShmaWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKaW5kZXggZTczNTdkMTEyNTBkNjBlYzhjODM4YTg3MDgxNzBlMWYyYzY4ZjVk
ZC4uMWUxNDljZjIzNzBhNzExNTE2OTk1NGE2NWI5YmM5ZTI4Yjc3OTg3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fc3luY0RhdGEtPnNpemUo
KSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCBmMmVkYzVjZjg3YmVhZWNlYjg1
ZmViNmMzZTNjOWNlNTE4MjVhYzY5Li43MDhiYjI5ZjhmNzNkNmVkN2ZjZjY3MzkwYzU4MmMxZmVi
YWQ1Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC03MSw5ICs3MSw5IEBA
IHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhU2VudChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVNlbnQobV9pZCwgYnl0ZXNTZW50LCB0
b3RhbEJ5dGVzVG9CZVNlbnQpLCAwKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJv
eHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRh
dGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkp
LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxl
bmd0aCkpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmlu
ZGV4IDRkNmE1YWZjM2U1OTVlNWNmZWEzNzBiMjFmN2VlOGExMzc0MWUzZTQuLjQ3ZWE4NjY3MWIx
M2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
aApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBs
b25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBp
bnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDY5NDg5NmM5OTdhNDk0MGRi
YWIyZGE3NjU3ODIwYTI3OGFmMWRjNmEuLjQ4NGMwYmVkMzZiMmZlY2ExZmU4MGViNmRmMmMzMGQw
MzBlZDIxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZQogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5k
ZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0
aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+
c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
RGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA3LDcgKzIwNyw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1C
eXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNl
aXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3Jl
TG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBkMGNiNzllNWQxZTY1ZjhlMWJkMTk5YzU0M2Rl
ZDA5MThlODRmNTFhLi43ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2OTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNTgsOSArNTgsOSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENo
YW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvYwogICAg
IHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKICAgICAg
ICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2Rl
VGV4dCwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBj
aGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0
cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJp
bmcubGVuZ3RoKCkpOwotICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAgICAg
Y2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRE
YXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICB9LCBbJmNoYW5uZWxd
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7CisgICAgICAgIGNoYW5u
ZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAgICAg
ICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2Vu
ZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxl
bmd0aCk7CiAgICAgfSwgWyZjaGFubmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsK
ICAgICAgICAgYXV0byBjb2RlID0gc3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsKICAg
ICAgICAgY2hhbm5lbC5mYWlsKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIEJsb2I6IGV4Y2Vw
dGlvbiBjb2RlID0gIiwgY29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyLmNwcAppbmRleCA0OTlkYTE4ZDE3NGZlNzg5MjhiODczY2E3MmNiN2VlMWFlMGE1ZDlm
Li43ZWIxMDc4NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZv
aWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbElkZW50aWZpZXIgc291CiB7CiAgICAgaWYgKGF1dG8qIHNvdXJjZSA9IHNvdXJjZUZy
b21JZGVudGlmaWVyKHNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChpc1JhdykKLSAg
ICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgICAgICBzb3VyY2UtPnNlbmRS
YXdEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNvdXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMTQyLDcgKzE0
Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpjaGFuZ2VSZWFkeVN0YXRl
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
aGFuZGxlcklkZW50aWZpZXIsIGJvb2wgaXNSYXcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSkKIHsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gYnVmZmVyOworICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7CiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKGlzUmF3KQogICAgICAg
ICBidWZmZXIgPSBkYXRhLnZlY3RvcigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5l
bElkZW50aWZpZXIKIAogICAgIHBvc3RUYXNrVG9IYW5kbGVyKGhhbmRsZXJJZGVudGlmaWVyLCBb
aXNSYXcsIHRleHQgPSBXVEZNb3ZlKHRleHQpLmlzb2xhdGVkQ29weSgpLCBidWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcildKGF1dG8mIGhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoaXNSYXcp
Ci0gICAgICAgICAgICBoYW5kbGVyLmRpZFJlY2VpdmVSYXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAg
IGhhbmRsZXIuZGlkUmVjZWl2ZVJhd0RhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVN0cmluZ0RhdGEo
V1RGTW92ZSh0ZXh0KSk7CiAgICAgfSk7CkBAIC0yMzAsOSArMjMwLDkgQEAgdm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVT
dHJpbmdEYXRhKFcKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZhbHNlLCBJ
UEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
Pih0ZXh0LmRhdGEoKSksIHRleHQubGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAotdm9pZCBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVS
YXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCB0cnVl
LCBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihkYXRhKSwgc2l6ZSAgfSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50
aWZpZXIsIHRydWUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgIH0gfSwgMCk7CiB9
CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWREZXRlY3RFcnJvcihXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAppbmRleCA2
ZDEyYjdjMzVmMDA0YTQ3YzU1NGZkYjE1ZWUyMzlkZTYyYjM1MGNlLi5mOGMwNWU1Mzc0MTdkNzk0
ZDVhNjE1ZTc4OGUxZTZhZWRhMGE3MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlci5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxTdGF0ZSkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2
ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ciwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRGV0ZWN0
RXJyb3IoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKICAgICAgICAg
dm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIsIHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcAppbmRleCAwMDY3ODk5MDkzMmM0MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3Li4zZGM5
MjhkYzU3YTk3ZDAyYzkyODQ1MzMxMWNmMzFjYmYyYjg1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFy
c2VQb3N0QnVmZmVyKGJvb2wgaXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxl
bmd0aCwKICAgICAgICAgaWYgKCFmaWxlQ29udGVudHMpCiAgICAgICAgICAgICByZXR1cm4gTlBF
UlJfRklMRV9OT1RfRk9VTkQ7CiAKLSAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+
ZGF0YSgpOworICAgICAgICBwb3N0QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhQXNDaGFyUHRy
KCk7CiAgICAgICAgIHBvc3RCdWZmZXJTaXplID0gZmlsZUNvbnRlbnRzLT5zaXplKCk7CiAKICAg
ICAgICAgLy8gRklYTUU6IFRoZSBOUEFQSSBzcGVjIHN0YXRlcyB0aGF0IHRoZSBmaWxlIHNob3Vs
ZCBiZSBkZWxldGVkIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjE3ZDdkNzZj
MGE4YTVlYjlkYmE1N2E4YTgwNmJjNjA4NjI2ZjQ1Yy4uMDkwZDVhNDBjZWJkNzhjMWVkNzJiYWJh
N2JmNmUwNzIzM2IyNWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtODY2LDcgKzg2
Niw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRp
bWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFt
RGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQordm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFT
U0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQKICAgICBtX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJz
KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIEFTU0VSVChtX3Nob3VsZFVzZU1hbnVh
bExvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCAyNDc0OTE0NmQ5MGY0NTVmNjlmNTQz
NTk2NGUwYjNiY2EzMWRjY2YyLi5hNTgyYjY2NTJmYTUwMWQ2ZTc3ZGMyNDI5MDZiNDFkZWEyYjA1
ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3Rh
dHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lk
IHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29s
IHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAyYTYwMWNjMDhiNDBlNzVmOWFlMThhNjI1YTgyYzI2
MWZmZDdjMjdlLi5kYmZiOGI2YjgxMWIzNjQ3NGE1ZGU2YmI2YTdmMzhjNWIwMjUyMDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzCiAgICAgc3RhcnQocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVh
bUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lk
IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIC8vIERlbGl2ZXJpbmcgdGhl
IGRhdGEgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gc3RyZWFtIHRvIGdvIGF3YXkgc28gd2Uga2Vl
cCBhIHJlZmVyZW5jZSB0byBpdCBoZXJlLgogICAgIFJlZjxOZXRzY2FwZVBsdWdpblN0cmVhbT4g
cHJvdGVjdCgqdGhpcyk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0
cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgaWYg
KCFzdGFydChtX3JlcXVlc3RVUkxTdHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCksIDAsICJ0
ZXh0L3BsYWluIiwgIiIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0YShyZXN1
bHRDU3RyaW5nLmRhdGEoKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVsaXZlckRh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0cmluZy5kYXRhKCkp
LCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQogCkBA
IC0xODcsNyArMTg3LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQoY29uc3Qg
U3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWEKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVy
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9p
c1N0YXJ0ZWQpOwogCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGVsaXZlckRhdGFUb1BsdWdpbigpCiAgICAgfQogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkK
K3ZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKaW5kZXggMTBjN2YyZDllODc0NjNhY2JlNzhmODdkNDNlNTIxZjA4OTkyM2Fi
ZS4uOWIwNzA5OTg4NDcyMDQzMWEzYjEzZTQwMWVlNDg4ODM4YmE2MjllNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJl
Y3RSZXNwb25zZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRU
aW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbChib29sIHdhc0Nh
bmNlbGxlZCk7CiAKQEAgLTczLDkgKzczLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbCgp
OwogICAgIHZvaWQgbm90aWZ5QW5kRGVzdHJveVN0cmVhbShOUFJlYXNvbik7CiAKLSAgICB2b2lk
IGRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRl
bGl2ZXJEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRl
bGl2ZXJEYXRhVG9QbHVnaW4oKTsKLSAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKIAogICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4g
bV9wbHVnaW47CiAgICAgdWludDY0X3QgbV9zdHJlYW1JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA2Y2RiZWRjZDA4NTcyZTBi
NjU5OTg1NDNmZGY0MmYyNTg0MDIyMDVhLi5hNjUzMWI2NGI5NzczMDZkMGZmZDgyYWNjODJmMjhi
MDljZmUwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1
bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCBy
ZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0
cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIGJvb2wg
aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgZmluYWw7CkBAIC0zNjYsNyAr
MzY2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwot
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYzAyZjg0MGM0MDc0ODAxYmQ4NzRmNmNmODMyZTk3
Yjg4NDFmNWM0OS4uMTUxM2UwNGVmNGU4NTZmYTg3MmM1NTI4YTdjYmJkMDcxMWY3ZDJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdAogICAgIH0KIH0K
IAotdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGNvdW50KQordm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGNvdW50KQogewogICAgIGlmICghbV9wZGZQbHVnaW4pCiAg
ICAgICAgIHJldHVybjsKQEAgLTExNjYsNyArMTE2Niw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQ
bHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LT5h
ZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBjb3VudCk7Cisg
ICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpQ
REZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCkBAIC0xNjg0LDE0ICsxNjg0LDE0
IEBAIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90CiAgICAgICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1
ZTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQg
PT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1f
ZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFB
cHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihi
eXRlcyksIGxlbmd0aCk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRl
cywgbGVuZ3RoKTsKICAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogfQogCkBAIC0xNzI5
LDcgKzE3MjksNyBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50
NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5n
ZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9k
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggZDNjN2FjNzA1MTFmYzcyYzg3MDg0Yjhh
Mzc0ZjlkNmM3MjY4NTliMC4uMTM1NWNmZjRlYjc3ZjZmNzE3ZGI5MjBlMjE0MDU4ZmMxNmIyZmVj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE3NCw3
ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0g
MDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUg
ZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90
KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhh
dCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTg3LDcgKzE4Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAw
OwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQg
cmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmlu
aXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9h
ZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcAppbmRleCBiZmY4MDRiMzg4NWFhNThiYTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNm
Li45Y2VkN2RhMDc1MDJmNjJiYWM2YWY2NzllMTYxMGQ0ZTY1OWUwN2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0zMzAsOSAr
MzMwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnMKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5n
dGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5j
ZUlEKTsKIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXZv
aWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwg
SVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVz
KSwgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlk
UmVjZWl2ZURhdGEoc3RyZWFtSUQsIElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSks
IG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZEZp
bmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC0zNTAsOSArMzUwLDkgQEAgdm9pZCBQ
bHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl8KICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGlt
ZSwgbWltZVR5cGUsIGhlYWRlcnMpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCi12b2lkIFBs
dWdpblByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihieXRlcyksIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwor
ICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250
cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5j
ZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2lu
UHJveHk6Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggMDA4YzIwMjE2ZGU1YjdhMTk3
ZjFmMjQyNGExMmU1NjEyYzZmZGU0MC4uM2YxYjM5ZWFiN2RhZTA4MTY4ZGQzYTczOGZlZDJiMGRj
MDcxNDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5oCkBAIC04NywxMSArODcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRl
SmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9u
c2VTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1M
ZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmco
dWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50
NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2Vs
bGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcw
ZWQzMjAyMS4uM2EwOTY4M2VlYzdhYTIxZTYxZGVhMTBjODgyOWMzMDc2ODQwN2E5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEy
OSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVy
Q2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciopIG92ZXJyaWRlOwogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJl
YW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0
IFIKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
bV9zdHJlYW1JRCwgcmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1T
KHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1l
KCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3Zv
aWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIG1fcGx1
Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVz
LCBsZW5ndGgpOwogfQpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFs
TG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
ICAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJM
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBo
ZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpCit2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVs
bCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggODI4
ZDMwYTA2ZTlkOGZkZDc4YjU5OGRmOTBhNjYzOTMxZGEwZThkMy4uNGExZjVhYzU3YTlkNzc1NGU2
NDA3OGY3ZGE0MmI1NzZhMzM0MzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5p
c0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZv
aWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBt
YW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggODU0MWRmM2NiMjIzOWNhZDhh
YzdkNTZmM2U0NjJkMGQ1YTcxZWNiNS4uMGUzNDYzMWFkNmZjMjQ5MWIzZGIyNzZiM2YxNGZkMDYx
Y2VlOTYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEz
MCwxMiArMTMwLDEyIEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
c2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaAppbmRleCA5ZGFhYmUxNGEzNGIzYzA5ZjI3ZGM4ZGY1NDMwNGVlNzUz
MTY5NWUxLi5iZTQzYzBmZGRiNWUxNjI3MWFlYThlNWNjMjAyZGM3ZTExYTI2OWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsZWFudXAoKTsKICAgICAKLSAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1
bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpOworICAgIHZvaWQgZGlkUmVjZWl2ZUJs
b2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQgZGlkRmluaXNo
QmxvYkxvYWRpbmcoKTsKIAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6
RmV0Y2hMb2FkZXJDbGllbnQgewpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsg
Y2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsg
Y2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGll
bnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
Y2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCA4MzNjODJjNTRkMzdhZTAxNWExODFhN2I5MzI0ZjcwNTMwN2M2
OGY0Li5jOGYyNDhhNjQ3NjU3NmEyOTJjNzVkNWZhYTY4ZjVhYzYzYTQ3NWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBIVFRQ
Qm9keSB0b0hUVFBCb2R5KGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSkKICAgICAgICAgSFRUUEJv
ZHk6OkVsZW1lbnQgZWxlbWVudDsKIAogICAgICAgICBzd2l0Y2hPbihmb3JtRGF0YUVsZW1lbnQu
ZGF0YSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAg
ICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAg
ICAgICAgZWxlbWVudC50eXBlID0gSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkRhdGE7CiAgICAg
ICAgICAgICAgICAgZWxlbWVudC5kYXRhID0gYnl0ZXM7CiAgICAgICAgICAgICB9LCBbJl0gKGNv
bnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBi
OTMxOGU0ZWU2MjEwMi4uNWRhMmJiOWY0YTJkN2Q0MjNiZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAg
ICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAg
bG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CkBAIC0xMTgxLDcgKzExODEsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5kYXRhKCkgOiAwKSwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2Uo
bWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1h
aW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGlu
Z0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IDkzODZlZmE1OWE1NTU1NjVlMWE0NjRiYmQ3ODJiNzU0Y2VkODE5
NDMuLmFhM2E4NjAxNzU3MjY1NDEzODUyYTRiOWU4OTU2NGJiNGQxYTNmM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBp
bnQpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDAyOGU4YzZlM2U4ODY0Y2Mx
NjU1OTBhNDljYmFlZTdkOGJiNmE1YmIuLjJhYzI1ZGNkMzllNDgwZGY5MzZjNmFlYjc5ZWMyMGFm
ZWMyZDQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzYsNyAr
MTM2LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJp
ZGVzLgotICAgIFZlY3RvcjxjaGFyPiBvdmVycmlkZUJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhf
dD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJl
ZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUs
IHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHku
Y3BwCmluZGV4IDQ3ZTNjYTk2ZTkzYzUxNDE4NDJhNzMzYmFkMTI2NGNiZjE1MjQ5MjEuLmRkYzA3
MWIzYTI2YWY4MjhlYzdjNDYzZDUxYzcxMzgwZTU3ZTkwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNw
cApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNl
aXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKICAgICB9CiAKICAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBtX2NvcmVMb2FkZXItPmRp
ZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplLCAw
LCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9h
ZEJ5dGVzKTsKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdUYXNrKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1
Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IGM1MzYyNWExODgzOGZkMGQyNzNmNmI0NjRl
OTZjMDNhYWNjMDBjMDkuLjE1MjAwZWNkOTE5MjY4YzM0MDdkOTE5YzA2NjcxOGM5MzI0NjE0ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFN0cmVhbVdpdGhSZXNwb25zZShOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSk7CiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8K
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IDU3YWE0YTgyZDZhNjcxODE1ZTQzYmE4MDU5
NDg2Yjc1NjVlNTBlNjkuLjA4NjE1ZTQ5ZjUxMzAzYTRmNTljYWQwNTM5Y2ZmZTdkOWEwNWIwY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC0xMTUsMTIgKzEx
NSwxMiBAQCB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbShOU1VS
TCAqcmVzcG9uc2VVUkwsIGxvbmcgbG9uZyBleHBlYwogICAgICAgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oW2hlYWRlcnMgYnl0
ZXNdKSksIFtoZWFkZXJzIGxlbmd0aF0pOwogfQogICAgICAgICAgICAgICAgICAgICAgCi12b2lk
IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQor
dm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKIHsKICAgICBfV0tQSFN0cmVhbURpZFJlY2VpdmVEYXRhKG1faW5zdGFuY2UtPmhvc3RQ
cm94eSgpLT5wb3J0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNl
LT5wbHVnaW5JRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJlYW1JRCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KGJ5dGVzKSwg
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzKSksIGxlbmd0aCk7CiB9CiAgICAg
CiB2b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCA3NTQyNjkzODEyZTc4YjdmODlhOGUzNDQwMzczMzAwOGFm
YzNmMjk1Li5lZDBlMzE0M2VmOGMwNmFjYzk4OGFhMjRhYjg4MjdhMzk4ZjViYTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC03MjUsNyArNzI1LDcgQEAg
dm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVn
aW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGg6W0pT
RGF0YSBsZW5ndGhdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAg
ICBzdHJlYW0tPnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLSAgICAg
ICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pT
RGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOworICAgICAgICBzdHJlYW0tPmRpZFJlY2Vp
dmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtK
U0RhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHN0cmVhbS0+ZGlkRmluaXNoTG9hZGluZygwKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNzYx
MTcxY2VhN2NhNWZhNjcyOGM5ZGMwMGQyZWI3YjJkMThmNzc4MC4uNjRjMjc3YjVmNDNkMTUxYmRh
NDE1YmVjOWI1OWQ1ZjNjY2ZjMDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldy5tbQpAQCAtNTE5LDcgKzUxOSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3
ICopcGx1Z2luVmlldyByZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGlmIChIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbSogbWFudWFsU3RyZWFt
ID0gX3Byb3h5LT5tYW51YWxTdHJlYW0oKSkKLSAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNl
aXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSk7CisgICAgICAgIG1hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQog
CiAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjoo
TlNFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMmJjOTc4ZDM0MDNmNzNmMWMw
NjNkZjI1MjM0M2M1YjgzZWMxMzA2Yy4uMTkzOTBiNWMwMmE3NWY3OWY5NjZmODFhNDFhMmQ3MDU2
NTc4ZjA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAKICAgICAvLyBGSVhN
RTogQ2FuIHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5tbQppbmRleCBmODg5MGQwNTE2YjIxMmFjZmU3Njk2NjQyNWRlNTQ0MTA0YzlhNjk0Li40YjRk
ZGMwMDRhMjZhM2VhNjQ5YzI2OTE1ODE0ZTU2NjIwYzk1NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW0KQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRG
aW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKICAgICBkZXN0cm95U3Ry
ZWFtV2l0aFJlYXNvbihOUFJFU19ET05FKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0
cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRp
ZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCog
Ynl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopYnl0ZXMgbGVuZ3RoOmxlbmd0aCBmcmVl
V2hlbkRvbmU6Tk9dKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAzM2JhNTdjMTU1ZjE4YTcyMGNm
Yzc5ZDQ2YWYzNTVkNzhlMDk1ZTljLi5hOGEyZWU4MTcxYTJkYjhkODJjOGJiMDVhOTlkZDAwNDE2
OWVhZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgLSAodm9pZClw
bHVnaW5WaWV3OihOU1ZpZXcgKilwbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0
YQogICAgIH0KIAogICAgIGlmIChfbWFudWFsU3RyZWFtLT5wbHVnaW4oKSkKLSAgICAgICAgX21h
bnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihb
ZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgX21hbnVhbFN0cmVhbS0+ZGlk
UmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdp
blZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCkBAIC0xMTI3LDcgKzExMjcsNyBA
QCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVl
c3QgKilKU1BsdWdpblJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7
CiAgICAgICAgIAogICAgICAgICBzdHJlYW0tPnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3Bv
bnNlLmdldCgpKTsKLSAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOworICAgICAg
ICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihb
SlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHN0cmVhbS0+ZGlkRmlu
aXNoTG9hZGluZygwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBi
ZDUyMjNhMGNlMTUwY2YzNWEyOGI3NTUwNDgwMDRjMWZjYjU0YWE2Li4xNTJmZGExZjZlZDU3ZTI5
OWFkZTM0ZDA3ZWU4ZGJiNGUyYzFlZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTE1MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgp
IGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhp
c3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDYzNDIyMDA1ZmVmNGZiMDljZjY3Y2EyM2RmMTAyY2E3NGM1ZmY5NWEuLjhlMWIyNDdmZjdh
MjFlZTdkYjM4MWM2NDBlMTA2NWFiOGNhYWQyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3Ro
IGZyZWVXaGVuRG9uZTpOT10pOwogICAgIFtkYXRhU291cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0
YTpuc0RhdGEuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggNDEzOWJiNWE5MTY4M2U2NWFjYzA4MjUzYmVjYjNmZGQwYWJjNjNkOS4uZmQz
MTAwMzUwMWZmY2MzYzAxYTkyZjk1N2JjMzRjZDJkYmExZjgwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05ODIsNyArOTgyLDcgQEAgLSAodm9p
ZClfY29tbWl0RGF0YTooTlNEYXRhICopZGF0YQogICAgIGF1dG8qIGRvY3VtZW50ID0gX3ByaXZh
dGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBkb2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRl
UmVuZGVyZXJzKF9wcml2YXRlLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMpOwogCi0gICAgX3ByaXZh
dGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29u
c3QgY2hhciAqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUtPmNv
cmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgdWlu
dDhfdCopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDViMWJmYjJkMzQxNzRjNjhhMmI0MGJkNGM3ZDFhZGI4
ZDMyOWQ1ZjkuLjRkMDQwZjU2NDZlYjgyNDFhOTJiYzdjMmRjNzhmNmRmZDk2ZGFkMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGxvYWRl
ci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA4YWE3YWEzMWZlODI1ZWM3OTVjZjFiM2UzZmIzZTUzYmZlNmI4NzlmLi42ZGFjMGIwNTIx
ODM5MTY2MjA4OTY0MWY2NWFlOTQyYzI5Yjg5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRO
YW1lID0gU3RyaW5nKCkpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCos
IGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWNhOGQzOGQ1MzUzMzg0NzQwOTdiYjQ5MDYwNDUzZTY1
MjljOTNhOS4uOTJiN2JkNGIwMjI5YzRlNDNmNTE0NTMwZDRiMjU1ZDgwYzUxZTY1NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIxLTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFZlY3Rvcjx1aW50OF90PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBi
eXRlcyBpbiBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjYyMworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8g
c3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVyLiBBbHNvIGhhdmUgU2hhcmVkQnVmZmVyOjpkYXRh
KCkKKyAgICAgICAgcmV0dXJuIGEgYGNvbnN0IHVpbnQ4X3QqYCBpbnN0ZWFkIG9mIGBjb25zdCBj
aGFyKmAuIFRoaXMgaXMgb3VyIHByZWZlcnJlZCB0eXBlIHRvIHN0b3JlIGJ5dGVzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hl
Y2tCdWZmZXIpOgorCiAyMDIxLTA2LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBhdHRyaWJ1dGVkQnVuZGxlSWRlbmRpZmllciBh
IHByb3BlcnR5IGZvciBXS1dlYlZpZXdDb25maWd1cmF0aW9uIGluc3RlYWQgb2YgX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYmVjN2QxMTllYTgxOWIwMTk5YTg3M2Yw
MjA3NjZkNDE5MjAxYWMyYS4uZWE3MzJhOGUwZTBjMjZjOWQ5MGExMjM1OTQwYWNkZTU3ZTIxNjNh
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjAoMHg0
MDAwLCAnYScpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKLSAgICBW
ZWN0b3I8Y2hhcj4gdmVjdG9yMigweDQwMDAsICdjJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjAoMHg0MDAwLCAnYScpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwg
J2InKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHZlY3RvcjApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3Rv
cjEpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkK
ICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2
b2lkIGNoZWNrQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwg
Y29uc3QgY2hhciogZXhwZWN0ZWQpCitzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQog
ewogICAgIC8vIGV4cGVjdGVkIGlzIG51bGwgdGVybWluYXRlZCwgYnVmZmVyIGlzIG5vdC4KICAg
ICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGV4cGVjdGVkKTsKQEAgLTE3MSw5ICsxNzEsOSBAQCBz
dGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJM
ZW5ndGgsIGNvbnN0IGNoYXIqIGV4cAogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29t
ZURhdGEpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0g
ICAgVmVjdG9yPGNoYXI+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPGNo
YXI+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0g
eydhJywgJ2InLCAnYycsICdkJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2Yn
LCAnZycsICdoJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICds
J307CiAgICAgCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBpc0VxdWFsVG8pCiB7Ci0gICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8
Y2hhcj4+JiYgY29udGVudHMpIHsKKyAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZl
Y3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRz
KQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CkBAIC0yMDks
NyArMjA5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICBhdXRv
IGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOwogICAgIEVYUEVD
VF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVu
ZChWZWN0b3I8Y2hhcj4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKKyAgICBidWZmZXIxLT5hcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJ319KS5nZXQoKSk7CiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7
J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAn
ZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKQEAgLTIxOSw3ICsyMTks
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHQxID0gezB4MTEs
IDB4NSwgMHgxMn07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07
CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUodDEpKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0
cmluZygpOwo=
</data>
<flag name="commit-queue"
          id="452142"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430628</attachid>
            <date>2021-06-04 16:05:12 -0700</date>
            <delta_ts>2021-06-04 18:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226623-20210604160511.patch</filename>
            <type>text/plain</type>
            <size>268115</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI3NTFiMGJiY2JhN2Rm
MTJmNzcxMmQ2MGYwYTgxMWQ5Njk3OTA0YS4uMDlkZTk4MmJlOWUyMWQ1YTU4NGZlMWZkN2RlYzhk
OGZiZGZhZWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBWZWN0b3I8dWludDhf
dD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgVmVjdG9y
PHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJl
ZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpCisgICAgICAgIHJldHVybiBh
IGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3QgY2hhcipgLiBUaGlzIGlzIG91ciBw
cmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhY2thZ2VGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2U6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5k
UmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6
Ok9uTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5
YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmRlY29kZUFuZEZsdXNoKToKKyAgICAg
ICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjpp
c1ZhbGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29k
aW5nOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJG
dW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRCdWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisKIDIwMjEt
MDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgcmVmZXJlbmNlcyBpbiBmb250IGxvYWRpbmcgY29kZSBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoaWNoIGNhbiBuZXZlciBiZSBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxMDc2M2NhZjk3N2NlNjc4MjFl
MzE1ZDFiNWJiYTU4ZWY1NWZhMDQuLmZkY2RkMTJkYjg2N2VkODE4OGI3MDc1Mjk1ZjczY2UwNGJh
MWExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjEtMDYtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3Rl
YWQgb2YgVmVjdG9yPGNoYXI+IHRvIHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIu
IEFsc28gaGF2ZSBTaGFyZWRCdWZmZXI6OmRhdGEoKQorICAgICAgICByZXR1cm4gYSBgY29uc3Qg
dWludDhfdCpgIGluc3RlYWQgb2YgYGNvbnN0IGNoYXIqYC4gVGhpcyBpcyBvdXIgcHJlZmVycmVk
IHR5cGUgdG8gc3RvcmUgYnl0ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlUG9zdEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0pOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisKIDIwMjEtMDYtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNYWtlIGF0dHJpYnV0ZWRCdW5kbGVJZGVuZGlmaWVyIGEgcHJvcGVydHkg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjlmNDU2ZWE2
YWM1ZDYxYjliOWNiYjYwZTQ4ZjM2Y2MyODJlYzQuLjhmZDJiNjhlOTU3YmJhZTc5ZjY4MmVmOGMz
YWEyOWQ3NGE2Mzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMS0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBWZWN0b3I8dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUg
Ynl0ZXMgaW4gU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgVmVjdG9yPHVpbnQ4X3Q+IGluc3RlYWQgb2YgVmVjdG9yPGNoYXI+IHRv
IHN0b3JlIGJ5dGVzIGluIFNoYXJlZEJ1ZmZlci4gQWxzbyBoYXZlIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpCisgICAgICAgIHJldHVybiBhIGBjb25zdCB1aW50OF90KmAgaW5zdGVhZCBvZiBgY29uc3Qg
Y2hhcipgLiBUaGlzIGlzIG91ciBwcmVmZXJyZWQgdHlwZSB0byBzdG9yZSBieXRlcy4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAg
ICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRl
SmF2YVNjcmlwdCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgcGx1
Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJOZXRzY2FwZVBsdWdpblZpZXcgcGx1Z2luVmlldzpyZWNlaXZlZERhdGE6XSk6CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0
Ol0pOgorCiAyMDIxLTA2LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggOGE3MjNjNTE5YmQ2MjU4N2QxYzU4ZmZkZDE2YTEzMTJiODRiNGYwZi4uYjVm
ODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0zNDUsNyArMzQ1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMobV9jYWNo
ZWRCeXRlY29kZS0+ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpOwogICAgIHNoYTEu
Y29tcHV0ZUhhc2goY29tcHV0ZWRIYXNoKTsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0
ZW1wRkQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZjb21wdXRlZEhhc2gpLCBzaXpl
b2YoY29tcHV0ZWRIYXNoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcEZELCBj
b21wdXRlZEhhc2guZGF0YSgpLCBzaXplb2YoY29tcHV0ZWRIYXNoKSk7CiAKICAgICBmc3luYyh0
ZW1wRkQpOwogICAgIHJlbmFtZSh0ZW1wRmlsZU5hbWUsIGNhY2hlRmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBkYmNiMzU0OWM0NGYwYWJlZWY4NGNmY2I4ZTQwMjI4MmRjYjhlOTAx
Li5kNGQyNTRhZTU4YjBiMWU3YzRiZGI5MDA2MDU5OTE1YzljYjFiZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZEJ5
dGVjb2RlLT5jb21taXRVcGRhdGVzKFsmXSAob2ZmX3Qgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKGZkLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSAtMSk7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBzaXplKSk7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDliMGZkZjlhN2JmNWVmOWY0MmViNTYzYTAwYWJmOTYxMjFlNjAz
ZGEuLmI3NDc4MDNiMDI0MTYyMmRlZTFjMjBlODIyNDE3OWQxMGFkYWVjYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdl
IDogbV9wYWdlcykgewotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZmQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhZ2UuYnVmZmVyKCkp
LCBwYWdlLnNpemUoKSk7CisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICAgICAgICAgIGVycm9yID0g
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yKGVycm5vKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggOTFkZGNmMjYxOTBiOTcy
NGJhMTkzNWNkMGUzYzAwNWMxOTliNGMxZS4uODA0ZmQ2NGZhNDYyMzViMDQ0ZWU1MGU5MjE4NTE4
M2I2ODc4YmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkp
LCBzYWx0LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCmluZGV4IGFlY2QwODRmOWY1MmY0N2JiYzFlNDhlMzhjNjhhODYwYmQ5NzZhZjAu
LmI1NDI3NzIxZmNhMzE1MDQ3ZDNhMDEzODEyYWU3YWEyNGI1MTQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKQEAgLTE1Myw5ICsxNTMsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyBsb25nIHNlZWtG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4p
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCk7CiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxs
eSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIC8vIFJldHVybnMgbnVtYmVy
IG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgot
V1RGX0VYUE9SVF9QUklWQVRFIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7IC8vIEZJWE1F
OiBTaG91bGQgdXNlIGB2b2lkKmAuCiAKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9u
U2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWI2NmYwZWZiYTZmZDM5MjM5
NGIyYmIzNjFiNGE5ODNlZDE2YWZlZS4uYTU3Y2E5ZTA4NDY0NzRhMWJjOTk2Yjc2MzcwNTMzMjM4
ZjAwNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBs
b25nIGxvbmcgb2Zmc2V0KQogICAgIHJldHVybiBnX3NlZWthYmxlX3RydW5jYXRlKEdfU0VFS0FC
TEUoZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpLCBv
ZmZzZXQsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EuLmM3ZGY0NjYzMGU4OTBjMzBjNDEwNzIyMjJmMzBhZWU5NWU2
NzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpCiAgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQp
OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAg
ICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
ZWZkZDc2MTA5MTY4NjYwYzljNWRlY2FmMWFlOGNkMThmYzY0YTk3Li5lYTFjMjZhYTQzMTdlYWFm
OTUyNjkxMmYzNDMyYTg5MTYwNjA1ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKICAgICByZXR1cm4gU2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCBGaWxlRW5kT2ZGaWxlSW5mbywgJmVvZkluZm8sIHNpemVvZihG
SUxFX0VORF9PRl9GSUxFX0lORk8pKTsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJu
IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGVk
YTUxZDBmZTVkZDU1NGNhODQ5Y2Q2N2Q3YTAyOGZkMTAzMTJmYjcuLjQ4MzZkMjgxM2ZlNzRiMTJh
MmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YUFzVUludDhQdHIoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVmNzliNzA3Y2YxNjljNzg2MzA5YTM1NGJl
MWM1N2NjNzNkMDI1MC4uODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktcGFja2FnZS1kYXRhCi1zdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIGF1dG8g
cGFyc2VNdWx0aXBhcnRQYXJ0ID0gW2NvbnRleHRdIChjb25zdCBjaGFyKiBwYXJ0LCBzaXplX3Qg
cGFydExlbmd0aCwgRE9NRm9ybURhdGEmIGZvcm0pIC0+IGJvb2wgewotICAgICAgICBjb25zdCBj
aGFyKiBoZWFkZXJFbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtbWVtKHBhcnQsIHBh
cnRMZW5ndGgsICJcclxuXHJcbiIsIDQpKTsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0UGFydCA9
IFtjb250ZXh0XSAoY29uc3QgdWludDhfdCogcGFydCwgc2l6ZV90IHBhcnRMZW5ndGgsIERPTUZv
cm1EYXRhJiBmb3JtKSAtPiBib29sIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogaGVhZGVyRW5k
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lbW1lbShwYXJ0LCBwYXJ0TGVuZ3RoLCAi
XHJcblxyXG4iLCA0KSk7CiAgICAgICAgIGlmICghaGVhZGVyRW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJCZWdpbiA9IHBhcnQ7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGhlYWRlckJlZ2luID0gcGFydDsKICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGhlYWRlckVuZCAtIGhlYWRlckJlZ2luOwogCi0gICAgICAgIGNvbnN0IGNo
YXIqIGJvZHlCZWdpbiA9IGhlYWRlckVuZCArIHN0cmxlbigiXHJcblxyXG4iKTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogYm9keUJlZ2luID0gaGVhZGVyRW5kICsgc3RybGVuKCJcclxuXHJcbiIp
OwogICAgICAgICBzaXplX3QgYm9keUxlbmd0aCA9IHBhcnRMZW5ndGggLSAoYm9keUJlZ2luIC0g
aGVhZGVyQmVnaW4pOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXIgPSBTdHJpbmc6OmZyb21VVEY4
KGhlYWRlckJlZ2luLCBoZWFkZXJMZW5ndGgpOwpAQCAtMTkxLDE2ICsxOTEsMTYgQEAgc3RhdGlj
IFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgQ1N0cmluZyBib3VuZGFyeSA9IGJvdW5kYXJ5V2l0
aERhc2hlcy51dGY4KCk7CiAgICAgICAgIHNpemVfdCBib3VuZGFyeUxlbmd0aCA9IGJvdW5kYXJ5
Lmxlbmd0aCgpOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRCb3VuZGFyeSA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGN1cnJlbnRCb3VuZGFy
eSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZW1tZW0oZGF0YSwgbGVuZ3RoLCBib3Vu
ZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghY3VycmVudEJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5l
eHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1tZW0oY3VycmVudEJvdW5k
YXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFy
eUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCksIGJvdW5kYXJ5TGVuZ3RoKSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG5leHRCb3VuZGFyeSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtZW1tZW0oY3VycmVudEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGgsIGxlbmd0aCAtIChj
dXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCAtIGRhdGEpLCBib3VuZGFyeS5kYXRhKCks
IGJvdW5kYXJ5TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV4dEJvdW5kYXJ5KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHdoaWxlIChuZXh0Qm91bmRhcnkpIHsKICAgICAg
ICAgICAgIHBhcnNlTXVsdGlwYXJ0UGFydChjdXJyZW50Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0
aCwgbmV4dEJvdW5kYXJ5IC0gY3VycmVudEJvdW5kYXJ5IC0gYm91bmRhcnlMZW5ndGggLSBzdHJs
ZW4oIlxyXG4iKSwgZm9ybS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50Qm91bmRhcnkgPSBu
ZXh0Qm91bmRhcnk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtbWVtKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoLCBsZW5ndGggLSAo
bmV4dEJvdW5kYXJ5ICsgYm91bmRhcnlMZW5ndGggLSBkYXRhKSwgYm91bmRhcnkuZGF0YSgpLCBi
b3VuZGFyeUxlbmd0aCkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1lbW1lbShuZXh0Qm91bmRhcnkgKyBib3VuZGFyeUxlbmd0aCwgbGVu
Z3RoIC0gKG5leHRCb3VuZGFyeSArIGJvdW5kYXJ5TGVuZ3RoIC0gZGF0YSksIGJvdW5kYXJ5LmRh
dGEoKSwgYm91bmRhcnlMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWltZVR5
cGUgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgImFwcGxpY2F0aW9u
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgIngtd3d3LWZv
cm0tdXJsZW5jb2RlZCIpKSB7CiAgICAgICAgIGF1dG8gZGF0YVN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoZGF0YSwgbGVuZ3RoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hC
b2R5Q29ucwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4oVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGRhdGEsIGxlbmd0aCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6Ci0gICAgICAgIGlm
IChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGRh
dGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBiZGZlNDE3YjgyNTdiMGY5YTFhZDc2MjI5MzdlODg4
NGQ0NzRhYWE0Li4yYjE3NzJkMzExN2Y5MWEyNzNlMmU1NTVmNmNkMDc0MGM5M2ZjYjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkK
ICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEZldGNoQm9keU93bmVy
OjpibG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgQVNT
RVJUKGRhdGEpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCAxYzllZWMzNWRk
MjlmZjUzMjEzOGE2YjMzZmE4OGU2Zjc1NGNhYWFlLi40YzQ4M2ViOGU0OGQ4ZjQwZTkzMDllZWZj
MTgxY2NkZGM4Yzg4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0Zh
aWxlZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsg
b3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDc3ZmM2ZTVkMmJmNzdmOWJkNTMzNjhjZTcz
YWE0NjBkYWJmNmM3ZDMuLjMxYTBkOTcyMjVhYzYxMTBmOTA2MGMyMDZmZDJkN2RiZTZlYWQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCit2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYg
KCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3
YmE1MWUzMjg1NTc2NjJhNDczMTc2ZDMwM2ZkZjQ5OGEyZWU5ZWM3Li5mMzE0YTA1ZmNmYWM2MTdj
M2NiZDMyYmE5MDNmN2NmMjAxYjlmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ly8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBBUEkuCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU2YWZjNDA4ODNjOGE1NzEzMDE4OWYxYjg0Nzdm
ZjEwYmE0ODdjZTIuLmZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDU5MGFiZmM4Mzc4NmJlMjM2OGY1NzdiZDRhNTBmNWFkNDg2
NDE0OTAuLmFiZWE2ODRjODM1ZjliMjc2YmVlYmYwZjUxODA3NGQ3ZTNkNmRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQ5LDEy
ICszNDksMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxs
YmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNv
dXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFD
YWxsYmFjaykgewotICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfTsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIFJlYWRhYmxl
U3RyZWFtQ2h1bmsgY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDgzNmY0ZTE2MzZiNGY1ODcyM2Q0ZjFjYTg5
Njc3ZWZkZmNmMjc1ODkuLmNjMDQ5ZWZlNWFiZTFjNzVmZGQ3ZjEzZmJmNWE2NTkwZTNjZWRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3Rp
ZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IDllNmRiYjhhZmFjNzQyZjRj
MjQ4YWY1OTU5YWIxODc3Nzg1ZjNjMDAuLmRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihoaWdobGlnaHQtPmRhdGFBc1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggZTgzY2Rk
NzA2YmEyNTllOGVkZTY3ZWMxMDQ1MjBiMTk0NjdhY2JkOS4uYTFlYjQzNGQ1YjdhYWQ5MzFkMTFj
NzMzMzgxNGYxYmYwZTg5YWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZy
b21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV92YWx1ZSA9IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNp
emUoKSB9KTsKKyAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZSh7IGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdldFJlc3VsdDo6SURCR2V0
UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDkyODMzODhjNGJiNGVjYWU2MTBjN2U4ZTZiODkyNWU0Nzli
NWU0MzYuLjRjOWE5NTZjMjBlYzI0Yjg2NGJlMWY3NjIzZGQ1YjBlMjQwMmU0ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgU0lEQktleVR5cGUg
c2VyaWFsaXplZFR5cGVGb3JLZXlUeXBlKEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKQogfQogCiAj
aWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJ
R05FRF9BQ0NFU1MpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPGNoYXI+JiBidWZmZXIsIFQgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgd3JpdGVMaXR0bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZm
ZXIsIFQgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihUKTsg
aSsrKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQodmFsdWUgJiAweEZGKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgcmVhZExpdHRsZUVuZGlh
bihjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aQogICAgIHJldHVybiB0cnVlOwogfQogI2Vs
c2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgVCB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCB3cml0ZUxpdHRsZUVuZGlhbihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVCB2YWx1
ZSkKIHsKICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZih2YWx1ZSkpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgYm9vbCByZWFkTGl0dGxlRW5kaWFuKGNvbnN0IHVpbnQ4X3QqJiBwdHIs
IGNvbnN0IHVpCiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgd3JpdGVEb3VibGUoVmVjdG9yPGNo
YXI+JiBkYXRhLCBkb3VibGUgZCkKK3N0YXRpYyB2b2lkIHdyaXRlRG91YmxlKFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgZG91YmxlIGQpCiB7CiAgICAgd3JpdGVMaXR0bGVFbmRpYW4oZGF0YSwgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmZCkpOwogfQpAQCAtMjMzLDEwICsyMzMsMTAgQEAg
c3RhdGljIGJvb2wgcmVhZERvdWJsZShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhf
dCogZW5kLCBkb3VibGUmIGQpCiAgICAgcmV0dXJuIHJlYWRMaXR0bGVFbmRpYW4oZGF0YSwgZW5k
LCAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZkKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKK3N0YXRp
YyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEm
IGtleSkKIHsKICAgICBTSURCS2V5VHlwZSB0eXBlID0gc2VyaWFsaXplZFR5cGVGb3JLZXlUeXBl
KGtleS50eXBlKCkpOwotICAgIGRhdGEuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KHR5cGUpKTsK
KyAgICBkYXRhLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNJREJLZXlUeXBlOjpOdW1iZXI6CkBAIC0yODQsNyArMjg0
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgSURC
S2V5RGF0YSYga2V5KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAK
ICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODZhZmNkYmI3NmMwYTJm
ZjUyYThmMTU0MzBiMTM5YmRiZmQ2MGQ1YS4uYWQ5ZTQ0OTk2MWM4NTQ1YjIwZGQ3ZjNhMThjMDFk
YjdkZmQ0YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKG1f
YmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2ZGZj
MTA1NjE4ZTQyNmU0MDAxNTc2ZDQyMDVlMDUwMTc2ZGEwMGQ0Li44ZjhmNzUzNzU2N2ZlZDVmZGUx
N2E3N2Y4ZTU0NzA4ODQ2YWU1YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgQVBJCiAgICAgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0
ZWN0RXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCA0
NmVmNmY4YjBiY2U2MjkyYjlhMDlhZDExNWUyYzRmY2JkZGVlMmJlLi5lN2MyMWFlZjViMzA1MTNh
ZjVjNWNlOTZkMGZkMzQ0ZmY3MjRlZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpkaWRSZWNlaXZlU3RyaW5nRGF0YShTdHJpbmcmJiB0ZXh0KQogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
UmF3RGF0YShkYXRhLCBzaXplKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6
OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9pc1JlYWR5VG9TZW5kKSB7CiAgICAgICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBjYTFk
Y2RiYzFjZTk1ZjI1ODQ3ZGJiZDk2ZWZkYmMwYmQ4ZDRkMWExLi5iZWJlYTRkYzczZWY0YTdjOGNj
ZTM5ZTljYjg1M2VjNGIxZTUyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRD
aGFuZ2VSZWFkeVN0YXRlKFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoU3RyaW5nJiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERldGVjdEVycm9yKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3QpOwogCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAgICAgdm9p
ZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3Qg
Q1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgZmluYWw7CisgICAgYm9vbCBzZW5kUmF3RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAKICAgICBSVENEYXRhQ2hhbm5lbElkZW50
aWZpZXIgbV9yZW1vdGVJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCmlu
ZGV4IDFkNmVmZjA1YWE0NWQ2MTNhNjVkNzI1NjgxYTRkNzA0OGQ2MjBkMTcuLjMzMjQ5OWQwMWUz
NWU1NmNjZDRlNzdkNTY1MDIxZjcwODQ4NThiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlU291
cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH5SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZSgpOwogCiAgICAgdm9pZCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0
KSB7IG1faGFuZGxlci0+c2VuZFN0cmluZ0RhdGEodGV4dCk7IH0KLSAgICB2b2lkIHNlbmRSYXdE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0Rh
dGEoZGF0YSwgc2l6ZSk7IH0KKyAgICB2b2lkIHNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IG1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgc2l6ZSk7IH0K
ICAgICB2b2lkIGNsb3NlKCkgeyBtX2hhbmRsZXItPmNsb3NlKCk7IH0KIAogcHJpdmF0ZToKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQKICAgICB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0
ZSkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZENoYW5nZVJlYWR5U3RhdGUobV9pZGVudGlmaWVy
LCBzdGF0ZSk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYg
dGV4dCkgZmluYWwgeyBtX2Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTdHJpbmdEYXRhKG1faWRlbnRp
ZmllciwgdGV4dCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVJhd0RhdGEo
bV9pZGVudGlmaWVyLCBkYXRhLCBzaXplKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5k
aWRSZWNlaXZlUmF3RGF0YShtX2lkZW50aWZpZXIsIGRhdGEsIHNpemUpOyB9CiAgICAgdm9pZCBk
aWREZXRlY3RFcnJvcigpIGZpbmFsIHsgbV9jb25uZWN0aW9uLT5kaWREZXRlY3RFcnJvcihtX2lk
ZW50aWZpZXIpOyB9CiAgICAgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2luZyhzaXplX3Qg
YW1vdW50KSBmaW5hbCB7IG1fY29ubmVjdGlvbi0+YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmco
bV9pZGVudGlmaWVyLCBhbW91bnQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEzZWMx
MDY4NzZhNWMxMzk2ODMuLmIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5NmVlMGUwZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB1dGY4VGV4dCkKICAgICByZXR1cm4gbV9jaGFu
bmVsLT5TZW5kKHsgcnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih1dGY4VGV4dC5kYXRhKCksIHV0ZjhU
ZXh0Lmxlbmd0aCgpKSwgZmFsc2UgfSk7CiB9CiAKLWJvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7IHJ0
Yzo6Q29weU9uV3JpdGVCdWZmZXIoZGF0YSwgbGVuZ3RoKSwgdHJ1ZSB9KTsKIH0KQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNv
bnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3ZWJydGM6OkRhdGFCdWZmZXIo
YnVmZmVyKSk7CiAgICAgcG9zdFRhc2soW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xp
ZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0ZWRCdWZmZXIpXSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRhdGEu
ZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci0+ZGF0YS5kYXRhPHVp
bnQ4X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXItPmJpbmFyeSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZENsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oCmluZGV4IDg3OTdiMWYwOGZhMjlmNzgwYTQ4YTJkMmQ0ZDkwNmRmZTE4Y2FmYTEuLjJiZTMx
Mjk1YzUwMWJhZDVhZGY1Yjk4NTIyYzQxMjIyMDNjNDFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQSQogICAgIHZvaWQgc2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSBm
aW5hbDsKLSAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZSgpIGZpbmFsOwogCiAgICAgLy8gd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVy
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDJiMzhkODE0M2I3MTY2ZmIwNzNjNjM3ZTM2NDU4
M2Q3YjVkODEwYWUuLjE3ODYxMzI3YzQ4ZmRiOTUwNTlhMmFkZDMxZmQ5MzE0ZjQ3NWM0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgcwogCiAvLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAKLXZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKICAgICBBU1NFUlQobV9kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDBj
NWIzMzVjMzZlYjI5YTJhNGNlODE3YzhlOWU2ZWJjM2M4NWE0YjkuLjE4NTdiYjVjNzdiYWZmZWY5
ZDJhYzliMmMyZWEwNDU5NWM5NTZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAK
ICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBvdmVycmlkZXMuCi0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgVVJMIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NmZmMmUzMDM4NzllNGM2MDQzMWM3ZDUyMDRi
MDlhZmY4ZTJmOWEuLmUzMTFkMGFmZWU2NGI5YjgwZTAyYzk1Njk2MjcyZjAwM2I1ODMxM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gYm9k
eSA9IGlucHV0UmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5
LCBbJl0oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gZm9ybURhdGEtPmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyLT5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgY29tcGlsZXItPmZpbmFsaXpl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5m
YWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7CiAgICAg
fSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgY29tcGlsZXItPmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9i
amVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggM2UxYmJlMjM5NDYwYmI4ZGFlMTI1Yzc4YzRkYThj
YmE5ZjZiZjI4Mi4uY2UxMDg2NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYnl0ZXMuc2hyaW5rKGJ5dGVzV3JpdHRlbik7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcy5kYXRhKCkp
LCBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZXMu
ZGF0YSgpLCBieXRlc1dyaXR0ZW4pOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCA0MmYy
MmI0NmZjMDRhNDQ2YzhjN2UzYWM4ZDkyNDA4NDJiZDQwZjI1Li5lMWVmNGFiOTQzNjYzOGEzNDM2
Mzc1MjQ2OTY2MzE0NWQ4NzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdAogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRz
LmFwcGVuZChWZWN0b3IgeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9
KTsKKyAgICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZDM2NDQ5Y2M4YTBiNmEyNjc0
NDM2YTY2ZTdmNDYyZWU3MDNhOTUzYy4uYzFlNjBhZTE3Y2NiODk1ZmExN2IwY2I2YjRkZjZhZDlh
MGNiNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgbV9j
bGllbnQtPmRpZFN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBGaWxl
UmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKGRhdGFMZW5ndGggPiAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZGZkMzIz
YjY1MWIwYzEwYmEyZjM3NjllZWIwZjVhZGViOGNiMmM4Mi4uOWNiYjliNjExMWE3MTYyNzEzZGQ1
ZGNjZTdmMDUzZWVjMDg1NjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDhkZmRkODM1M2JmN2RiY2EyMjVlYmVkODE5MjNkYzg3MjUzZmQ5OGYuLjdm
Y2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoQ1N0cmluZyYmIHV0ZjgpCiB2b2lkIE5ldHdvcmtTZW5k
UXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAobV9xdWV1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihiaW5hcnlEYXRhLmRhdGEoKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwogICAgICAgICBtX3dyaXRlUmF3RGF0
YShkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0
ID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0
ZVJhd0RhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggM2FlNjY1MjZjYzE4YjkyMTRkZjA1NTc2OGU0NTYzNGQ5MDBlMGFjYy4uNWVlNjQ1
ZmJlYzMzZTljZWQzNTQwMjU4YWE2MDI3ZTczODU4ZjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV3JpdGVTdHJpbmcg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IENTdHJpbmcmIHV0ZjgpPjsKLSAgICB1c2luZyBXcml0ZVJh
d0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBX
cml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKICAg
ICBlbnVtIGNsYXNzIENvbnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJv
ciA9IEZ1bmN0aW9uPENvbnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEm
JiwgUHJvY2Vzc0Vycm9yJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hOGYyYTY1N2UzYWI3ZjhkMzE4ZTIwNjVjYzVlNWQ0NWI1OWRl
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNw
b25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZl
RGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggOGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uYmM2M2Vm
OGMxZjQzYzhhZGNlN2QxN2JlYTkwMDQ3MTdhZDg0MTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTk3LDEzICsx
OTcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDkzLDE0ICsxMDkzLDE0
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVuCiAgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRhYmxl
TG9hZGVyUmVzcG9uc2VJbXBsKCphZ2VudHMsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgaWRl
bnRpZmllcik7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGE3Nzg4NGRiZTVhMmMzMWI2ZjA1MzljMDQwZjM4N2NlN2ZmOTIxNzYuLjY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtODYsNyArODYsNyBA
QCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDog
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmRE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRC
dWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEy
ZTIyOGFlYmMzMTBiNS4uZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxz
ZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGNjOTBmZTlkMTAwZGMyMDE3
ZGU5YWY2N2ZkYzNkOTdiZjVmOWMyOWUuLmM2OTY3MGUxYzMzMjUyODczOGNkZTAxZjFhZDA2N2Jj
Y2IzOTAwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAg
ICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKICAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsK
ICAgICB9CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVu
Y29kZWRTaXplKCksIDApOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGQxYmEyNzU1MzE3ZmNjNWZkZTcwZjUy
NTcyNzAxMDVmMmE0YjVjNGYuLjY2YWU3YTQ2ZmU3OTkxYjM5MmJiMDY1MzFkMzY1MDZiYTMxZTI0
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNo
ZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIuLmUzMjVjMThkZDRkN2QxZTZkMTU3YzA5Y2Q0ODRlYWQyNGFmNDg0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIFRleHRF
bmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29ucwogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAg
aWYgKHdpdGhCYXNlNjRFbmNvZGUpIHsKICAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRv
U3RyaW5nKGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZGVjM2QwMDFiMWQ0MWQ0ZjNmMjQ1Y2Fm
NTBhZGY3ODhhMTk2NTAwNy4uYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0Mjgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCk7CiAKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wg
ZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKKyAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZy
YW1lVHJlZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDNiZGY4Y2NjNTNiMTU3NWY1NWJlODZjYTY3N2Q3NDgxMmY5Nzk0YjAuLmI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAppbmRleCBiMDJhMmE5ODc2NjgyM2I1ZDU1MjgxODUyNzBjNTAwMDAz
NmNjMDI4Li44YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcxYzAxODc5YjlmM2ZkZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJSZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAwNDcy
Mzk2ZGU1ZmRhOWRkODc1YTM4MzMyMDkzMDE3MDQ5M2RlYzMyLi4yMTVjMDRlYzk4OTVlOWYxZTZl
MTQ3ZGE4MjA5MzAwOTg1MjM5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCBiOWRjNWIwNmE4OGFkMTllZGU5ZGE4YTAwNTc5ZGExYWE4N2IzYjE4Li5kZjY3YzE1NDQ4NDQ4
Mjc3MzlhZDNlMjdjMGMzNjk3MjNhZTc5MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQog
fQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpY2VXb3JrZXJGcm9tUGFyZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWUKIH0KICNlbmRpZgogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAgLTEy
NTMsMTMgKzEyNTMsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBj
aGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1
bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKSkKQEAgLTIzMjAsNyArMjMyMCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBz
aXplKQogewogICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNDViMjAyYmNkZjRiNDRhNjhkZTA1ZmU4Mjc2OTc5
NDhlOGNlMjQ1Yi4uZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3M2NlMDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM1Niw3ICszNTYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldFRpbWluZygpIHsgbV9sb2FkVGltaW5nID0geyB9OyB9CiAK
ICAgICAvLyBUaGUgV2ViS2l0IGxheWVyIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHJl
YWR5IGZvciB0aGUgZGF0YSB0byBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Qq
IGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBjb21taXRMb2FkKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25z
dCB1aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAK
ICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwpAQCAtNDc2LDEzICs0NzYsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE5MjU1Njk5YjI0ZjAyZTk3ZmMwZGM0ZGNhYzQy
NTg4NTMzZTA4MTEuLjc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC00MjUsMTMgKzQyNSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmY0
MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMC4uMDVhMjVlY2ViMjRmY2U5NjU3
OTk3MDRlMDE5NDg1YWMwNWUzMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9p
ZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRp
bWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVRpbWluZyYp
IG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChjb25z
dCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgICAgICB2b2lkIGRpZEZhaWwodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDY0NTE2ODE5MGUzNzZhMTdlMmQ4
YmE2NDY1YmUwYzBkZGUzNjgyZjAuLjg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5
MTAyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBV
UkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHko
Y29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRo
ZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVmZDkzZWFlNGYxN2Rk
MzZmNzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMuLjgzMzZjYjE4YjY3ZDJmYTgwOTNkZTc5MmRlM2Q1
NTA1ZTVmZThkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1
aW50OF90KiwgaW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmZWEwMzgyNjk2MzYwNWMzODNmNmJhMjMxM2U4ZTQ1Nzc3
Y2UxMTU3Li42OWExMTMyMzhhMGE4YzZhNmZlNWIwMzZkZjA3ZjQ4MzlmNzlhZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDMxZDMzYTMzOWQwZjcwY2VlNTY5YmViZmVkNTJmMzY5NDc4
NjVlZGQuLjNlYjVjZWU2NDI2YzQ0ZGMxNzQyMjIxNWZhYWIxNTY5MzFkYjJkOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhNzk5M2NiOWI1NTM4MTU1N2YxNzA2ZDBiYTM5OTVj
MDkzOTcxZTQyLi45OWQ2OTU1YTkyZDBkYzNlZGE0ZDEyMTE4ZWJmMDU1ZjA4MDc0ZWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRh
dGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmgKaW5kZXggOTRhNjg0MmU0ODkwNDRiODU1YjBjMzI2ZDIyY2MxZDM0NGIyY2YyNC4uZmY2
YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggZWNkZDE3YWUwYjY3ZTQ1
NzNlMDc5NWIxMjQwNjk2ZDkyMWNkYjUwZC4uYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDVi
MmU5MGFiNDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3AKICAgICB9KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG8K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IGRmZjA2MTRhYWM5MTQxZDQ0MDE1MTA5ODhjMWUxNTE4MTk4
MjJjYjQuLjQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGNjMWJjZWUyNmMzYTQxZjVkODljYzhlYmI0MmY0NDRmNzAzMzMyOWMu
LmM3MDk1ODg2NDg3NWQ1MTUxMzE5NDM3ZThhZGE3N2YxNGRkYmUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRl
cik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGFMZW5ndGgpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIs
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUg
ZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbgogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxvYWRlciwgaWRlbnRp
ZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBu
dWxsLCB3aWxsU2VuZFJlcXVlc3QgY2FuY2VsbGVkIHRoZSBsb2FkLiBXZSBzaG91bGQKICAgICAv
LyBvbmx5IGRpc3BhdGNoIGRpZEZhaWxMb2FkaW5nIGluIHRoaXMgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYjhhYTRkM2ZiZGFmNTZm
MzRkNzViNWUyZTliYjk5ODc1ZjY5YjljNC4uNGViMGY4MjVmYjA0MDhhNTUwZjhiNjhjN2FlYTNk
NzRhY2RlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9p
ZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTM1MzlmYjY3ZGUxZjVm
MTYyODQyOWRiM2YxYWIyZjUzY2VkZDY3Mi4uOTEwYzY3YWUwOTFkOGM3YWUzMzRkMDVkNmI4Mjlh
MDQwNjRhM2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBt
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxp
ZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAgLy8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2
ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0aGVtLiBUaGlzCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY28KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIg
fHwgKCFkYXRhICYmICFsZW5ndGgpKTsKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDJhYjcxODdjZGQyYjJkNzVlZjE0NzY1ZGIxYzMw
MTlhMDYxYjcwZC4uNTE1MzQzMjYwNzVjYmFmMTkxZmY4Yzc2YmQ3MWM3NDM0YzYwYzFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE4OCw3
ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhcios
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0
YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hO
ZXR3b3JrTG9hZCgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNjZjEyMTc5MGE0ZWFjMzExMTU2NzRmNWI4ZjVjY2IyNDdmZjBhNWUuLjBkNDA1MmJjMDBjMmZm
MTM2ZmUzNGQ3NmExYjU0MjI4ZWYyOGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVBvbGljeSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9
IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGVkNTkxOTIxOWNiYmYzMzQzOTc2NjRkNTEyYTlmN2Q2Yzk3
ZWNhYzEuLjUzOTg2NjI5MjQ4ZjZlMzUxMmJjOTI1NDQxOTMzNzg3ODBlY2UxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21w
bGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5oCmluZGV4IGM3ODZkN2IzZTVkODg1OTk2NTlhM2Y0ZDA5YmY5NmUyMGRiMGRjMzMuLmUxODI4
YWNiODQ5NTYzMjdkNmFjMTNiZGVhMDE5NGRjMTUzYTllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuaApAQCAtNTUsOSArNTUsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzRXF1YWxFbmNvZGluZ0ZvckNoYXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmx1
c2goKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWNvZGVBbmRGbHVzaChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBTdHJpbmcgZGVjb2RlQW5kRmx1c2goY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZGVjb2RlQW5kRmx1c2go
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KIAogICAgIHZv
aWQgc2V0SGludEVuY29kaW5nKGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHBhcmVudEZyYW1l
RGVjb2Rlcik7CiAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZC4uZGQ4ODkzNWRh
YjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdo
aWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJz
ZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAppbmRleCAyYTk2NDRmNDli
M2E4NTU5YzliYzA3YTA0Y2ZmM2I5OTVhOTlhNDVmLi42MjViYjdlYjJlN2I1MDcxYzFkMTJjMDc1
MjM2ZTFmYmU2YmVlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNT
ZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgLypkYXRhTGVuZ3RoKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCAvKmRhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKaW5k
ZXggMDY1YmNhYjExNzk2ZWU0MjczYmU2YTNmZTEyNTkwNmNmNTc2YmJmZi4uOGVmZTM5Y2Y3Yjg1
ZGQ5ZGQ0ZjhiNDA4YjRlYmM0OTEwMTkwMmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZmZDRiM2IzN2FhMmUuLjgy
NDU4ODkwMmFiM2RlOTA2NmU0YmJkZjQ1YTYxYjU1MmI5YTQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIyOSwxMCArMjI5
LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGRhdGFM
ZW5ndGgpOwotICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CmluZGV4IDgzMjI4NmE3OTVhZmQ5ODE2NDNkNWM1OTg5MmQ5MDY3NTc4MWYwNmEuLjU3NjI2MGVh
N2Y5M2VmZjIzYjRiNDdkMWVhOGUwOTBjY2Q1YjQ0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgICAgICB2b2lkIGRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVhLi5kNGNhZjRk
NWY5ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA2LDcgKzYwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBi
ZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKaW5kZXggNDg3NjA2NmRiNDJlOTEyNDc3ZjEwNGEzMTAxNzgwMzg0ZTkyYzYxMC4uMjNi
MTU0MmY5NWFiYzM1MTUxYjYwZmVkMDdhNzk0MDk5MGMzZDgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBs
b25nIGxvbmcsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTRlYTU1MDQ5MjZjZWE0OGFl
MDIwMjMxOGZlMGE3NjJhMTU0MmI0NS4uNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhm
NjYzYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWF5YmVMb2FkTWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVE
YXRhJik7CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBh
bGxBdE9uY2UpOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAg
dm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZDM4NjA0NWMwYWNmODUyNGVjMjUzZjA0ZmYzM2MwMzYwNzYzNGIx
ZC4uYzA5NzU3NWEwYTlhMTdlY2FiZmMzNTljOTM4MGYxMTU5NmQ1NmE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlID0gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUobV9yZXNvdXJjZS0+dXJsKCksIHJlc3BvbnNlLCBtX3R5cGUpOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIG1fYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmgKaW5kZXggM2U1MWZkODc3ZDQzNWQwMzY1ZjlhMDE2YWZiZDljNGMwODI5
YjEzZC4uMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIwNjllMjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCmluZGV4IGU5OTJjYjY5MDc1ODkwYjMyYTBkODlkYzZhYTgwYjUwYjE5NWRjNTEu
LmFjZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KLSAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGFBc1VJbnQ4UHRyKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5kYXRhLT5k
YXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50YWJsZSkp
IHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVFbmNvZGUo
ZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNGVlZjcwNzQ4MWEwNTM5NWQ5NjEyYjc4MjIx
NjczM2Y3ODQ5ZGMyYi4uZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTQ5LDE0ICsxNDksMTQgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG1fbGluZVJlYWRl
ci5zZXRTZXBhcmF0b3IoZW5kT2ZQYXJ0Qm91bmRhcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBwYXJ0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcGFydDsKICAgICAg
ICAgaWYgKCFtX2xpbmVSZWFkZXIubmV4dENodW5rKHBhcnQpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudC0+YXBwZW5kKFdU
Rk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7
Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIp
ICE9IDIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXBlcmF0b3IuIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIHN3aXRjaCAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
ZW50LT5kYXRhQXNVSW50OFB0cigpICAgLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRl
ciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJp
bnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRh
dGFBc1VJbnQ4UHRyKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhl
YWRlcjo6QmluYXJ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggM2U0NTEyOGQ3ZThlZWUzMGEyNjEzNmQzZTZkMzQzZWY5NDY0NTg3Ni4uYTU5OTY5
NmQ2NjY0NDZkMDk3MjQ0M2NkMTQ4NjBkYmYxYTk1OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggZDAxZmY5ZDU1MjNjNDg1YzA3ZTM2Y2VkYmYxMDNlZGE2ZWU2MTllNC4uNWNm
ZmFmN2E3ZDFlYzZiMGE1YzNhZTMyMzg2MjJkZTI3ODhjYmQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQ3YmQzMjg3NWQ1MmQ2ZDM5MWMzYWUwZmExYWJjNTky
YmFkZGY4NzcuLjIxOTJmMTUyMGFhMzliMTdiZTliZjAyZGU4NDgwOTIzZGQ4NjJlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGM5NmViN2FhMjQ4MmIzOWVhNjk1MDUxYmFlMDVlYzAxODQ4MWFlYTAuLmZkZGY5
Nzk5NWFmZmMwZTUzNWJkNWM1MTllMjZiYWFjODYyY2MxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7
IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaAppbmRleCBjODAzMTVlNjkwNmQyMjQwOTQ2NTE5ZTAyMDcwN2MzZDkw
NmY0YjFmLi4yM2VhYjhkZjI5NThmZjhiNDlmMzU0NWI1MDgzZmUyOTg5ZWYxMjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRUaW1pbmdG
b3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcmKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggYTdjZTAwZDFhZmZiMGQ2YWFlOGU3ZmFhYTU3NDljMDc1ZjVjMjU2MS4uODRhMGZlMWUzMzk5
YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQp
Cit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIwOWZhYTM1OWQ5ODVkMjNiMjhkOGIzMDNmYWRkMzk1
NTY0NTRlYmUuLjU1MzA4NzQ0YTQ4N2Y2MTdiYmNiMGQ3NGVjZDk2MGYxYjFlODExZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNl
OjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCmluZGV4IDI1ZDQ5NTZjODgzYzU4NzQxYjM4YmMwMDUwNmMwMzY0YTc1MmNhNjUu
LjU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlk
RmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDZjOWE5YTIxYTBjNjNm
MWM4YTY5NTE2YmU5YmUwODJlYzQyN2UzYTcuLjk0MzgzYTFjNzcyNjMyZjU3MThkN2RmMzdlNTc1
NGE2MzJiNTBmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBjcmVhdGVkIHdpdGggcHJl
dmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKS51
dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCitib29sIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
aW5kZXggMGRhYzdmZjAzY2M4NDZkMTg5NmEwODhmNjI2MzAyODYxNmJkZmE2OS4uYjZlNjhmM2M3
MjlmYjQxYzkyOWE2ZDE3OGRhNjAzOTlmZGM5MWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVy
cm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4p
OwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKaW5kZXggMGYyZjA0MTU0MzEzMjM1MjIzY2RmZmI3YzVjNGMzNjk0YzRlOTAzNC4uZTEwZDhk
OTE2ZmIwZjI1ZmJlYTNmN2FjMmFmNTVmNTcwYjIwZGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggZWU0ZjM2MWRkMDgz
ZGU3M2M5YzRkZTg4MTQxMjQwYWYxNWZiMjkwMy4uM2I5NjAyMTA5NTk2MzI1YTBkNDc0MzJlNDY2
ZjQ1ZjgyZDE2MTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBpbnQgRmlsZUhhbmRsZTo6d3JpdGUoY29uc3Qgdm9pZCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAg
IHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5k
bGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggNThjZjE0MDQ4ZDM1NTMwMjA3
N2YxYzRlZDUxNDkyNWE1YzdkOTE0Yy4uM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDcz
M2U5ZDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50
RmlsdGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
Q29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7
CiAgICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9
IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggODI1ODY1M2YyNTUxODJmNzRlY2ZkNGQ4N2FhZTk5YWEx
NjYzZDExMS4uMDA0MGE4YTYxMTg3ZmIwZTQ5ZTg2ZjMzNzBiYjhmODIzNzc1YWZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCkBAIC01Miw3ICs1Miw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCiAgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZl
Y3RvcjxjaGFyPiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTgxLDE1
ICs4MSw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPGNoYXI+JiYgdmVjdG9yKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQot
Ly8gRklYTUU6IE1vdmUgdGhlIHdob2xlIGNsYXNzIGZyb20gVmVjdG9yPGNoYXI+IHRvIFZlY3Rv
cjx1aW50OF90PiBhbmQgbWFrZSB0aGlzIGVmZmljaWVudCwgcmVwbGFjaW5nIHRoZSBWZWN0b3I8
Y2hhcj4gdmVyc2lvbiBhYm92ZS4KIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIgeyB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpIH0pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CkBAIC0xMDIs
NyArOTYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3QKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmVjdG9yPGNoYXI+IGNvbWJpbmVkRGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2l6ZSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKICAgICAgICAgY29t
YmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50
LT5zaXplKCkpOwpAQCAtMTEzLDcgKzEwNyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdAogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2NvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjIsMTEgKzExNiw2IEBAIGNv
bnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGFBc1VJbnQ4UHRyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSgpKTsKLX0KLQogU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVk
QnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAtMTUwLDcgKzEzOSw3IEBAIFN0cmluZyBT
aGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGFy
cmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3Jl
YXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICV6dVxuIiwgc2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNTgsNyArMTQ3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogICAgIHNpemVfdCBw
b3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykg
ewotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
ICsgcG9zaXRpb24sIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNp
emUoKSk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXIt
PmRhdGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKICAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudC5zZWdtZW50LT5zaXpl
KCk7CiAgICAgfQogCkBAIC0xNzgsMjIgKzE2NywxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3I7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7Ci19Ci0KLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
VmVjdG9yPGNoYXI+JiYgZGF0YSkKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKQEAgLTI0MCwyMCArMjI0
LDIwIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpIHsgcmV0dXJuIGRh
dGEuZGF0YSgpOyB9LAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsg
cmV0dXJuIGRhdGEuZGF0YSgpOyB9LAogI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0
YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkpOyB9LAorICAgICAgICBbXShjb25z
dCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKTsgfSwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBH
UmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorICAgICAgICBb
XShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEtPmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKICNlbmRpZgotICAg
ICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1cm4g
V1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzI2LDcgKzMxMCw3
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29u
c3QgVmVjdG9yPGNoYXI+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKKyAgICAgICAg
W10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwK
ICNpZiBVU0UoQ0YpCiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRh
KSB7IHJldHVybiBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKQEAgLTM1
Myw3ICszMzcsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBtX3NlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owog
fQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Citjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CkBAIC0z
NjcsMTAgKzM1MSwxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGggKiAzKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGxlbmd0aCAqIDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJh
Y3RlcnMuCi0gICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogcCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpOwogICAgIGlmIChsZW5ndGgpIHsKICAg
ICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENoYXIqIGQg
PSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKQEAgLTM4Myw3ICszNjcsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgYnVmZmVyLnNocmluayhwIC0gYnVmZmVyLmRhdGEoKSk7CisgICAgYnVmZmVyLnNo
cmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDhhYzY5ZDU5MTAzNmYxZjYwMGZlODM4
NGY2ZmIyOWQ5OWM3ZTMyZmIuLjVjZGU5YjdmMTFiODdlOTA5M2RmOGVkYjYxZWFlYWRkZDAwZWI4
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02NiwxNCArNjYs
MTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAKICAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJl
ZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAjaWYgVVNF
KEZPVU5EQVRJT04pCkBAIC05OSw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsaW5nIGRh
dGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBz
ZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgogICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21l
bnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IEF1ZGl0
IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0
ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAg
Y29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAogICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTExLDkgKzExMCw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKICAgICB2
b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTEyMywxMCArMTIyLDExIEBAIHB1
YmxpYzoKICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBu
ZXcgRGF0YVNlZ21lbnQuCiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRh
KQorICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OwpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8Y2hhcj4mJiBkYXRhKQorICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjaWYgVVNFKENGKQogICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2VnbWVudChG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCiAgICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFy
PiwKKyAgICAgICAgVmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQogICAgICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKQEAgLTIwNCw5ICsyMDQsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOwpAQCAtMjM1LDcgKzIzNSw4IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90KTsKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNmZWU2MTQyNTEzY2MyMmU2Zjg5ZGM0Yzgy
NGZhMDcwMmUwOWQuLjVlNDQ2NmNkM2YxNzE4OGEyN2MwY2RlMWVhOGE4MDFiMDJhMjQ3ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKQEAgLTQyLDI0ICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZm
ZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9uKDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAs
IG1fc2VnbWVudExlbmd0aCgwKQotICAgICwgbV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVh
Y2hlZEVuZE9mRmlsZShmYWxzZSkKICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKIH0KIAogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9u
KDApCi0gICAgLCBtX3NlZ21lbnQoMCkKLSAgICAsIG1fc2VnbWVudExlbmd0aCgwKQotICAgICwg
bV9zZWdtZW50SW5kZXgoMCkKLSAgICAsIG1fcmVhY2hlZEVuZE9mRmlsZShmYWxzZSkKLSAgICAs
IG1fc2VwYXJhdG9ySW5kZXgoMCkKIHsKICAgICBzZXRTZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0K
QEAgLTc1LDcgKzYzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6c2V0U2VwYXJh
dG9yKGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICBtX3NlcGFyYXRvci5hcHBlbmQoc2VwYXJh
dG9yLCBzdHJsZW4oc2VwYXJhdG9yKSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0b3Ip
Citib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+
JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewogICAgIGlmIChtX3JlYWNoZWRFbmRP
ZkZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzLDcgKzcxLDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wg
aW5jbHVkZVNlcGFyYXQKICAgICBjaHVuay5jbGVhcigpOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIHdoaWxlIChtX3NlZ21lbnRJbmRleCA8IG1fc2VnbWVudExlbmd0aCkgewotICAgICAg
ICAgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4Kytd
OworICAgICAgICAgICAgYXV0byBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVu
dEluZGV4KytdOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0
b3JbbV9zZXBhcmF0b3JJbmRleF0pIHsKICAgICAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJ
bmRleCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04obV9zZXBhcmF0b3JJbmRleCA8PSBtX3NlcGFyYXRvci5zaXplKCkpOwpAQCAtMTEy
LDcgKzEwMCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0
b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgIGlmICghbV9zZWdt
ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkZpbGUgPSB0cnVlOwogICAg
ICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPiAwKQotICAgICAgICAgICAgICAgIGNodW5r
LmFwcGVuZChtX3NlcGFyYXRvci5kYXRhKCksIG1fc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAg
ICAgICAgIGNodW5rLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3Nl
cGFyYXRvci5kYXRhKCkpLCBtX3NlcGFyYXRvckluZGV4KTsKICAgICAgICAgICAgIHJldHVybiAh
Y2h1bmsuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIyLDE0ICsxMTAsMTQgQEAg
Ym9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1
bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKIAogU3RyaW5nIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpuZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soYm9vbCBpbmNsdWRlU2Vw
YXJhdG9yKQogewotICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGlmICghbmV4dENodW5rKGRhdGEsIGluY2x1ZGVTZXBhcmF0b3IpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gZGF0YS5zaXplKCkgPyBTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgOiBlbXB0
eVN0cmluZygpOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVj
dG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKK3NpemVfdCBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0
ZWRTaXplKQogewogICAgIGRhdGEuY2xlYXIoKTsKICAgICBpZiAocmVxdWVzdGVkU2l6ZSA8PSBt
X3NlZ21lbnRMZW5ndGggLSBtX3NlZ21lbnRJbmRleCkgewpAQCAtMTQxLDcgKzEyOSw3IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6cGVlayhWZWN0b3I8Y2hhcj4mIGRhdGEsIHNp
emVfdCByZXF1ZXN0ZWRTaXplKQogICAgIGRhdGEuYXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVu
dEluZGV4LCByZWFkQnl0ZXNDb3VudCk7CiAKICAgICBzaXplX3QgYnVmZmVyUG9zaXRpb24gPSBt
X2J1ZmZlclBvc2l0aW9uICsgbV9zZWdtZW50TGVuZ3RoOwotICAgIGNvbnN0IGNoYXIqIHNlZ21l
bnQgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBudWxscHRyOwogCiAgICAgLy8g
TGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgogICAgIC8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIGp1c3QgaXRlcmF0aW5n
IHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNzU2ZWVlMjQ2YjBlMmNh
ZTIwYzdlZTc3NzllNjVjMGY4ZDczNDYzYy4uYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQx
ZTI1ZmQ0Yzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCkBAIC00OCwyNCArNDgsMjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2Ugd2hlbiB0aGUg
ZW5kIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQuCi0gICAgYm9vbCBuZXh0Q2h1bmsoVmVjdG9y
PGNoYXI+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSk7CisgICAgYm9vbCBu
ZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBm
YWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB0aGUgZW5kIG9mIHRo
ZSBidWZmZXIgaGFzIGJlZW4gcmVhY2hlZC4KICAgICBTdHJpbmcgbmV4dENodW5rQXNVVEY4U3Ry
aW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKTsKIAog
ICAgIC8vIFJlYWRzIHNpemUgYnl0ZXMgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gdGhlIGJ1
ZmZlciwgd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVmZmVyIHBvc2l0aW9uLgogICAgIC8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiBUaGF0IG51bWJlciBtaWdodCBiZSBsZXNzIHRo
YW4gdGhlIHNwZWNpZmllZCBzaXplIGlmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB3YXMgcmVhY2hl
ZC4KLSAgICBzaXplX3QgcGVlayhWZWN0b3I8Y2hhcj4mLCBzaXplX3QpOworICAgIHNpemVfdCBw
ZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6CiAgICAgU2hhcmVkQnVm
ZmVyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbjsKLSAgICBjb25zdCBj
aGFyKiBtX3NlZ21lbnQ7Ci0gICAgc2l6ZV90IG1fc2VnbWVudExlbmd0aDsKLSAgICBzaXplX3Qg
bV9zZWdtZW50SW5kZXg7CisgICAgc2l6ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CisgICAg
Y29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NlZ21l
bnRMZW5ndGggeyAwIH07CisgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIGJv
b2wgbV9yZWFjaGVkRW5kT2ZGaWxlOwotICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvcjsKLSAg
ICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleDsKKyAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3Ig
eyBmYWxzZSB9OworICAgIHNpemVfdCBtX3NlcGFyYXRvckluZGV4IHsgMCB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMGJmMGM0YWZiMDFiNWExYjk5ZWE3YzlmNjZh
MzFjMDYyY2UzYWFhMi4uMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXgg
Mzg3MTczOGU1ZDVjMDUzY2JkYjJkNGJiOWI3MzAzODJmYmNhYzQyZS4uNDI5MGRiMTI4ZDAwMGE0
MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFwaG9y
ZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CmluZGV4IDU2YTc4OGNkNzUwNDhlZmRlY2FlZTY2ZWNmYWYwZjk2NTBkYzc4NmIuLjA2OGNkY2Iz
ODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRl
eCA0OWY4ZmE0YmNlMGQwZjg4MGJhNDM3NTEzYTMyNjZmNTZmNWEwMDYxLi45ZDBjZTkwYzBiMDE5
MjgwNjU4ZTg3MTM4YzFjNTFkMTc2NDY3ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVwZGF0ZUZp
bHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFk
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YS5nZXQoKSBsZW5ndGhdKTsKICAgICBt
X3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9u
ZTpOT11dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDE1ZTYwZjIwNWNlZDJh
NTY0ODlhNDc0ZjAxMTQ3MmI3OThhNmMzNWMuLjQ1ZDE0YWQ5MDAzNzNhMjdiZjNiMmYzMzIzODIy
ZmU4ZjM0MTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5
KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgY29uc3QgY2hhciogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwogICAg
IHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkK
ICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBpbml0RGF0
YS5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggZTFlNWMzMDQzNTZjMGFhOWQ5YzA1
NDVkOTZhMzVhNjYzY2RiNzgzZS4uNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4
MTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXI7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAg
IHNpemVfdCBidWZmZXJTaXplID0gc2l6ZS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpOwogCiAg
ICAgICAgIGlmICghYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKSkKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwog
ICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhf
dCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAg
bV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CiAgICAgICAgIGNsZWFy
KCk7CkBAIC0yMDUsOSArMjA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3ByZW11bHRpcGx5
QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwotICAgICAgICBWZWN0b3I8
Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNp
emUoKSB9OworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMt
PmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwogICAgICAgICBtX3BpeGVscyA9IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNo
YXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CisgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkp
KTsKICAgICB9CiAKICAgICBib29sIGluQm91bmRzKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDFjYTk3NjMz
ZDg2MmI4ZGU4MzBmYmY4MmFlMDZhNThiMTc2OGU3MTkuLjQ4ZGZkZjBlZmRmYjhmOGI1NTU2Y2My
ZjZhNjcxZTU5OTZhZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2Rl
bDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaAppbmRleCAzZWQ0ZTA1YzQzOTRkZmY2M2FlNWZjNmJhMWVmMWE4MDQyNTQz
Y2I3Li5hMjhlNjFjMDJhNzJjYTkzODlhNjg2MzI1YjU0NmUzMWM0YzA0OTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgY2hhciosIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCAxZTBkODBkZmU5MTE3YmNhOWEzOTQyNzg1
MTk4ZjgzNTA2ZGUzOTM3Li5iMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuY3BwCkBAIC02MSwxNiArNjEsMTYgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPGNoYXI+JiB2
ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQorc3RhdGljIGJvb2wgd3JpdGVVSW50MzIoVmVjdG9yPHVp
bnQ4X3Q+JiB2ZWN0b3IsIHVpbnQzMl90IHZhbHVlKQogewogICAgIHVpbnQzMl90IGJpZ0VuZGlh
blZhbHVlID0gaHRvbmwodmFsdWUpOwotICAgIHJldHVybiB2ZWN0b3IudHJ5QXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPigmYmlnRW5kaWFuVmFsdWUpLCBzaXplb2YoYmlnRW5kaWFu
VmFsdWUpKTsKKyAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjx1aW50OF90Kj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CiB9
CiAKLXN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3RvcjxjaGFyPiYgdmVjdG9yLCB1aW50MTZf
dCB2YWx1ZSkKK3N0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9y
LCB1aW50MTZfdCB2YWx1ZSkKIHsKICAgICB1aW50MTZfdCBiaWdFbmRpYW5WYWx1ZSA9IGh0b25z
KHZhbHVlKTsKLSAgICByZXR1cm4gdmVjdG9yLnRyeUFwcGVuZChyZWludGVycHJldF9jYXN0X3B0
cjxjaGFyKj4oJmJpZ0VuZGlhblZhbHVlKSwgc2l6ZW9mKGJpZ0VuZGlhblZhbHVlKSk7CisgICAg
cmV0dXJuIHZlY3Rvci50cnlBcHBlbmQocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDhfdCo+KCZi
aWdFbmRpYW5WYWx1ZSksIHNpemVvZihiaWdFbmRpYW5WYWx1ZSkpOwogfQogCiBzdGF0aWMgY29u
c3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwpAQCAt
OTMsNyArOTMsNyBAQCBib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICNpZiBVU0Uo
V09GRjIpCiBjbGFzcyBXT0ZGMlZlY3Rvck91dCA6IHB1YmxpYyB3b2ZmMjo6V09GRjJPdXQgewog
cHVibGljOgotICAgIFdPRkYyVmVjdG9yT3V0KFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorICAgIFdP
RkYyVmVjdG9yT3V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQogICAgICAgICA6IG1fdmVjdG9y
KHZlY3RvcikKICAgICB7IH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmICghbV92ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fdmVjdG9yLnNpemUoKSAr
IG4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX3ZlY3Rvci5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBuKTsKKyAgICAgICAgbV92ZWN0b3IuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG9mZnNldCArIG4gPiBtX3ZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICBtX3ZlY3Rvci5ncm93
KG9mZnNldCArIG4pOwogICAgICAgICBtX3ZlY3Rvci5yZW1vdmUob2Zmc2V0LCBuKTsKLSAgICAg
ICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEp
LCBuKTsKKyAgICAgICAgbV92ZWN0b3IuaW5zZXJ0KG9mZnNldCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBuKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
MjIsMTEgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3Rvcjxj
aGFyPiYgbV92ZWN0b3I7CisgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX3ZlY3RvcjsKIH07CiAjZW5k
aWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjxj
aGFyPiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBW
ZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1w
dHkoKSk7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogCiAjaWYgVVNFKFdPRkYyKQogICAg
IGlmIChzaWduYXR1cmUgPT0ga1dvZmYyU2lnbmF0dXJlKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHdvZmZEYXRhID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDhfdCo+KHdvZmYu
ZGF0YSgpKTsKKyAgICAgICAgYXV0byogd29mZkRhdGEgPSB3b2ZmLmRhdGEoKTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IHdvZmZTaXplID0gd29mZi5zaXplKCk7CiAgICAgICAgIGNvbnN0IHNpemVf
dCBzZm50U2l6ZSA9IHdvZmYyOjpDb21wdXRlV09GRjJGaW5hbFNpemUod29mZkRhdGEsIHdvZmZT
aXplKTsKIApAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyIHx8ICFp
c1dPRkYoKmJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxjaGFy
PiBjb252ZXJ0ZWRGb250OworICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKICAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKaW5kZXggNWMwY2E0ZmMyMDdkMjEwZmQwODA1NGM0ZmZhN2VmY2EzM2EwYjEyZC4u
M2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQg
dG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5
KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50
byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjxjaGFyPiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0
IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYg
dGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IDMwY2Y3OWVjZmRmMjU4MmY1NDUyYWJmMjEyOTYxMjg1NjMzZjc4MzAuLjI0NzcyOGU2Y2Jj
MDdmMjgyZmE1OGY1MTdiOGE2ZmUwNmU1YjA2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgog
ICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNo
YXIqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCiB7CiAgICAgQVNT
RVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
IHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwog
fQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQordm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCmluZGV4IGVmNWU1ZmI5ZTEzNjRhZjY3NTdlNTBmOGI4ZWYxNzJiZmMwZDYxNzku
LmEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAgICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIGNvbnN0IGNo
YXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247CisgICAgYXV0byog
c291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKICAgICBzaXplX3QgYW1v
dW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKICAg
ICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7CiAgICAgcmV0dXJuIGFtb3VudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0
aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGls
aXRpZXNDRy5jcHAKaW5kZXggM2Y4ZGUyNGVjMTQyNmJiNzdkNzdiODk3YzEzNGZmYWI5YzY2MDhl
ZC4uYTFlNWI3MzJmYjBiZjRlNTQyZDQxYmE5ZTg2OWRmMDFkNjU5ZTM1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXND
Ry5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGMKICAgICBDR0Rh
dGFDb25zdW1lckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIFtdKHZvaWQqIGluZm8s
IGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgewogICAgICAgICAg
ICAgYXV0byBoYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlKj4oaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
aGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgYnVmZmVyLCBjb3Vu
dCk7CiAgICAgICAgIH0sCiAgICAgICAgIG51bGxwdHIKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCAzYmE0YjhjOTBlYjBmMjE5MDdhNDI4
ZTMzN2Q0NmE4NzAxNzE5YWJmLi5jNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVk
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
Nzc0LDcgKzc3NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgdGVtcG9yYXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAg
ICAgbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0
aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1lbWNweShsb2NhdGlvbiwg
b3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEo
YWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNDUwY2RhMDM3Nzdh
ODJlNTQyNWI4ZmE4MWQyODcwZDVjM2I2MGQxYS4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoRlRfTG9h
ZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFibGVTaXplKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YSh0YWJsZVNpemUpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHRhYmxlU2l6ZSk7CiAgICAgRlRfVUxvbmcgZXhwZWN0
ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1Nm
bnRfVGFibGUoZnJlZVR5cGVGYWNlLCB0YWcsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8RlRfQnl0ZSo+
KGRhdGEuZGF0YSgpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAh
PSBleHBlY3RlZFRhYmxlU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggYTE2MWM0N2M1MGRiODI4NDdlNmZmMmQ2ODUyOGJkOGNjYzcyMmQ1MS4uMGRlYTgw
ZTJiY2E0NzhlZDRjMDJhZTFhMGIwNTY1NGI4NGQyOWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBk
YXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0
YSA9IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAg
ICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4o
KTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDBiODc5NmFiN2I0N2Q5ZjgxMTNiZTk0ZWNkYTk2
M2ZlM2MwMGJmNWUuLjlkNDljOWYzN2JlMmU1NGNkYTc2MGE0ZGYyNmE0YjNlZGUzODc3ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmly
dHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDg3LDcg
KzEwODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDQ0OTgzNzM2NjFhN2ViMDk5ZmI5ODQ1NmU5NGE0MWQ4
NGFkYjFjMTYuLjE3MTM1YTE0MWNkNmZhMmNlNmE4NzJjNzczMTllNDMzYjM4NzYwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhCiAKIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3Nl
cnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGNlcnRpZmljYXRlLT5kYXRhQXNVSW50OFB0cigpKSwKKyAgICBPcGVuQ0RNRXJyb3IgZXJy
b3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3Rl
bS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAg
ICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwogICAgIGNhbGxiYWNrKCFlcnJvciA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZCk7CiB9CkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIEdTVF9ERUJVRygicGFyc2luZyBidWZmZXIgb2Ygc2l6ZSAlenUi
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJidWZmZXIiLCBidWZmZXIt
PmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAo
ImJ1ZmZlciIsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICAgICAgU3Ry
aW5nVmlldyBwYXlsb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXItPmRh
dGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZ1ZpZXc+IHR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCI6VHlwZToiKSwg
Nik7CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpr
ZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NU
X0VSUk9SKCJDRE0gZXJyb3IiKTsKLSAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3Nh
Z2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7CisgICAgR1NUX01FTURVTVAo
ImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBjaGFsbGVuZ2VDYWxsYmFjayA6IG1fY2hhbGxlbmdlQ2FsbGJhY2tzKQog
ICAgICAgICBjaGFsbGVuZ2VDYWxsYmFjaygpOwogICAgIG1fY2hhbGxlbmdlQ2FsbGJhY2tzLmNs
ZWFyKCk7CkBAIC01MDcsMTEgKzUwNywxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAg
IG1faW5pdERhdGEgPSBJbml0RGF0YShpbnN0YW5jZS0+a2V5U3lzdGVtKCksIFdURk1vdmUoaW5p
dERhdGFTaGFyZWRCdWZmZXIpKTsKIAogICAgIEdTVF9UUkFDRSgiR29pbmcgdG8gcmVxdWVzdCBh
IG5ldyBzZXNzaW9uIGlkLCBpbml0IGRhdGEgc2l6ZSAlenUiLCBtX2luaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKLSAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhIiwgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwor
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGEiLCBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgp
LCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKIAogICAgIE9wZW5DRE1TZXNzaW9uKiBz
ZXNzaW9uID0gbnVsbHB0cjsKICAgICBvcGVuY2RtX2NvbnN0cnVjdF9zZXNzaW9uKCZpbnN0YW5j
ZS0+dGh1bmRlclN5c3RlbSgpLCB0aHVuZGVyTGljZW5zZVR5cGUobGljZW5zZVR5cGUpLCBpbml0
RGF0YVR5cGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGFBc1VJbnQ4UHRyKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51
bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7Cisg
ICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAm
c2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBzZXNzaW9uIik7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXRE
YXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdl
Lmhhc1BheWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3Nh
Z2UtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwg
bWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2Ut
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5z
ZVJlcXVlc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUobWVzc2FnZSkp
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAg
ICAgIH0KICAgICB9KTsKLSAgICBpZiAoIW1fc2Vzc2lvbiB8fCBtX3Nlc3Npb25JRC5pc0VtcHR5
KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Npb24uZ2V0KCksIHJlc3BvbnNlLT5k
YXRhQXNVSW50OFB0cigpLCByZXNwb25zZS0+c2l6ZSgpKSkKKyAgICBpZiAoIW1fc2Vzc2lvbiB8
fCBtX3Nlc3Npb25JRC5pc0VtcHR5KCkgfHwgb3BlbmNkbV9zZXNzaW9uX3VwZGF0ZShtX3Nlc3Np
b24uZ2V0KCksIHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpKQogICAgICAgICBz
ZXNzaW9uRmFpbHVyZSgpOwogfQogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2Fn
ZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIFdU
Rk1vdmUobWVzc2FnZSkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmlu
ZGV4IGU4OWZiNTk5ODYyMTViOWQ1ZGFlMTc5ZDJkNzU5Y2VmNzQxODE0NzYuLmM4NjRiMmMzYThm
YjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVm
ZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBvc2l0aW9uKSAtIGJ1ZmZlci5k
YXRhKCk7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocG9zaXRpb24pIC0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggYTAzZTcxYWIxYmMzYjFj
YTUwN2NmMzhlMjc0MTg3YmVjMGE5ZDE5MS4uNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYy
M2FlMjRkNDBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRl
ciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAgICAgb3ZlcmxheUxlbmd0aCA9IDA7CiAK
ICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGZvbnREYXRhLT5zaXplKCk7Ci0gICAgY29uc3QgY2hh
ciogZGF0YSA9IGZvbnREYXRhLT5kYXRhKCk7CisgICAgYXV0byogZGF0YSA9IGZvbnREYXRhLT5k
YXRhKCk7CiAKICAgICBFT1RQcmVmaXgqIHByZWZpeCA9IGVvdEhlYWRlci5wcmVmaXgoKTsKIApA
QCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERh
dGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKICAgICAvLyBJZiBw
b3NzaWJsZSwgZW5zdXJlIHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9mIHRoZSBm
dWxsIG5hbWUuCiAgICAgaWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5ndGggJiYg
bWVtY21wKGZhbWlseU5hbWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewotICAgICAg
ICBvdmVybGF5U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZnVsbE5hbWUpIC0g
ZGF0YTsKLSAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGZhbWlseU5hbWUpIC0gZGF0YTsKKyAgICAgICAgb3ZlcmxheVNyYyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGZ1bGxOYW1lKSAtIGRhdGE7CisgICAgICAgIG92ZXJsYXlEc3Qg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmYW1pbHlOYW1lKSAtIGRhdGE7CiAg
ICAgICAgIG92ZXJsYXlMZW5ndGggPSBmYW1pbHlOYW1lTGVuZ3RoOwogICAgIH0KICAgICBlb3RI
ZWFkZXIuYXBwZW5kQmlnRW5kaWFuU3RyaW5nKGZ1bGxOYW1lLCBmdWxsTmFtZUxlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggMGMwYzEzNzIwM2RmMzZjZjU3NTVmMTJmNDliOTU2
MjM2MmYyNGM1Mi4uNzMzNmEyMzUxY2E3ODhlYjY4OWEwMmVkZGUzMDc5ODAxY2EyYWU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbgogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAw
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJ
X0VSUk9SKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhKHNpemUpOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERh
dGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKICAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHAKaW5kZXggNjc1YTE3MjFkNzU0NjY4ZjI2NjAzNzY0YjhhMDE0M2NjZTIzNzg4My4uN2M2
MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1h
Z2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRl
cihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKLSAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKKyAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9y
eShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZf
UkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5z
ZXRGYWlsZWQoKSA6IGZhbHNlOwogCiAgICAgaWYgKGF2aWZEZWNvZGVyUGFyc2UobV9hdmlmRGVj
b2Rlci5nZXQoKSkgIT0gQVZJRl9SRVNVTFRfT0sKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBBVklG
SW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGF0YVBhcnNlZCkg
ewotICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykgeworICAgICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01l
bW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFW
SUZfUkVTVUxUX09LKSB7CiAgICAgICAgICAgICBtX2RlY29kZXItPnNldEZhaWxlZCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMuLmM3MTdjNDVkMzA1
N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJbWFnZVR5cGUgSUNPSW1h
Z2VEZWNvZGVyOjppbWFnZVR5cGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBjb25zdCB1aW50
MzJfdCBpbWFnZU9mZnNldCA9IG1fZGlyRW50cmllc1tpbmRleF0ubV9pbWFnZU9mZnNldDsKICAg
ICBpZiAoKGltYWdlT2Zmc2V0ID4gbV9kYXRhLT5zaXplKCkpIHx8ICgobV9kYXRhLT5zaXplKCkg
LSBpbWFnZU9mZnNldCkgPCA0KSkKICAgICAgICAgcmV0dXJuIFVua25vd247Ci0gICAgcmV0dXJu
IHN0cm5jbXAoJm1fZGF0YS0+ZGF0YSgpW2ltYWdlT2Zmc2V0XSwgIlx4ODlQTkciLCA0KSA/IEJN
UCA6IFBORzsKKyAgICByZXR1cm4gbWVtY21wKCZtX2RhdGEtPmRhdGEoKVtpbWFnZU9mZnNldF0s
ICJceDg5UE5HIiwgNCkgPyBCTVAgOiBQTkc7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggOWE0NzBlYmFhMTFhMTI4ODViNjAzZTUzZmU4YTg0ZjEzYzc2MzlkZS4uYzEy
YzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYnl0
ZXNUb1VzZSA9IGRhdGEuc2l6ZSgpIC0gYnl0ZXNUb1NraXA7CiAgICAgICAgIG1fcmVhZE9mZnNl
dCArPSBieXRlc1RvVXNlOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXJTaXplID0gbV9yZWFkT2Zm
c2V0OwotICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2luZm8sIHJlaW50ZXJwcmV0
X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PGNoYXIqPihkYXRhLmRhdGEoKSArIGJ5dGVzVG9T
a2lwKSksIGJ5dGVzVG9Vc2UpOworICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nLCBtX2lu
Zm8sIHJlaW50ZXJwcmV0X2Nhc3Q8cG5nX2J5dGVwPihjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRh
LmRhdGEoKSArIGJ5dGVzVG9Ta2lwKSksIGJ5dGVzVG9Vc2UpOwogICAgICAgICAvLyBXZSBleHBs
aWNpdGx5IHNwZWNpZnkgdGhlIHN1cGVyY2xhc3MgZW5jb2RlZERhdGFTdGF0dXMoKSBiZWNhdXNl
IHdlCiAgICAgICAgIC8vIG1lcmVseSB3YW50IHRvIGNoZWNrIGlmIHdlJ3ZlIG1hbmFnZWQgdG8g
c2V0IHRoZSBzaXplLCBub3QKICAgICAgICAgLy8gKHJlY3Vyc2l2ZWx5KSB0cmlnZ2VyIGFkZGl0
aW9uYWwgZGVjb2RpbmcgaWYgd2UgaGF2ZW4ndC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGJhMzU1ZjBjZWZhYjU3ZDIzNzgxZTFiYjZlZjE3MzcxNWIxYTM5ODUuLjAyZjFi
MDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBX
aGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQ
RGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNv
IHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwotICAgIFdlYlBEYXRhIGlucHV0RGF0
YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkRGF0YS0+ZGF0
YSgpKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CisgICAgV2ViUERhdGEgaW5wdXREYXRhID0g
eyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdl
YlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdl
YlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CiAgICAgaWYgKCFkZW11
eGVyKSB7CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpwYXJzZUhl
YWRlcigpCiAgICAgaWYgKG1fZGF0YS0+c2l6ZSgpIDwgd2VicEhlYWRlclNpemUpCiAgICAgICAg
IHJldHVybjsgLy8gQXdhaXQgVlA4WCBoZWFkZXIgc28gV2ViUERlbXV4UGFydGlhbCBzdWNjZWVk
cy4KIAotICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSB9OworICAgIFdlYlBEYXRh
IGlucHV0RGF0YSA9IHsgbV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpIH07CiAgICAgV2Vi
UERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2Vi
UERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKICAgICBpZiAoIWRlbXV4
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNjAzNzVkZTViY2RjYjQ3NmFlMGVmNDE3
NWNlNzFiMWUxZDYxNTVmZi4uMDU0NDI4ZDUwZGM2MWFhYWQ1MTg4NzlkMjJjYmMyZjk3NzkxNTAz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBib29s
IHNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNl
bmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXgg
OWY2ZGQ4MGYyNWExZTA2NzU1ZGExYWM5ODdlYWU4ODlkZjlmMjc0Mi4uZGQwNWVmMGZiZDNlNzMw
OTc0MzUwNWFjY2MwMTAxNGVmNGQ5YzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNoYW5uZWxTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVT
b3VyY2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAppbmRleCA0MTI0N2Y2ODRmNzYw
OTBhNmQyYmUyNTBhNTU4ODY0Y2NmMDQyMTU3Li5jOWM5M2JhNjAxMThmOTE5ZDExNjAyOTMyZGFl
ODNkNzk5NDY3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNv
bm5lY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIFJUQ0RhdGFDaGFu
bmVsU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoUlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSYXdEYXRhKFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgY2hh
ciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKFJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciwgc2l6ZV90KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5jcHAKaW5kZXgg
ZDAzMDA1MzZlZDkzMGZiZjljMjAyYmI5NzI2MTBkNGM1Zjg5YThjNC4uOTNiZDk2MmQ0ZGVhZDQw
MzllNWQwMTU0N2I1NTgyMDhkOWVlZWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suY3BwCkBAIC01NCw3
ICs1NCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jazo6c2VuZFN0cmluZ0RhdGEo
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2s6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrOjpzZW5kUmF3RGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZVJhd0RhdGEoZGF0YSwgc2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmlu
ZGV4IDRhNTEwOTJiYzQxZjJjZjlmN2YzZDA0ZjI3N2E3NWMyOTRlMWNhYTUuLmUwNzBiZGIxM2U4
NzI1ODdjNTNlMDRmNDk2MTdmZWQ1NTlhMGE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC00MSw3
ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogCiAg
ICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBz
ZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIHNlbmRSYXdE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5h
bDsKIAogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAppbmRleCBkMmVlYmRlZDk1ZGU3NWNjMDk0NTllM2IxYjA2MTk2ZGI2ZTYxM2Zi
Li4zMmRkOGMwOGUyMTkwNmY0YTJkOGYyYThjMzBjN2VhNWFhOTUyNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAg
LTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNU
b0ZpbGUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocgogICAgIGZvciAoYXV0byYg
cGFydCA6IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vjb25kLmRhdGEoKS0+
c2l6ZSgpOwotICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwg
bGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSwgbGVuZ3RoKSAhPSBsZW5ndGgp
IHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB3cml0aW5nIGEgQmxvYiB0byB0
ZW1wb3JhcnkgZmlsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggYjc3ZjkwMDc4MTlmZmVjMjk1YjYwNTI5NDhhZTk5NGRhZTI0NjFkZi4uM2U3NGE2YTA0ZWYw
NWE3OWQyY2IxNDFhYThjM2FlZGZkMmY0MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogICAgIHJldHVybiBj
cmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CiB9CiAKLVJlZjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmNyZWF0ZShWZWN0b3I8Y2hhcj4mJiB2ZWN0b3IpCitSZWY8Rm9ybURhdGE+IEZv
cm1EYXRhOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewogICAgIGF1dG8gZGF0
YSA9IGNyZWF0ZSgpOwogICAgIGRhdGEtPm1fZWxlbWVudHMuYXBwZW5kKFdURk1vdmUodmVjdG9y
KSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdW5zaWduZWQgRm9ybURhdGE6OmltYWdlT3JNZWRpYUZp
bGVzQ291bnQoKSBjb25zdAogdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVz
KGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmxvYlNpemUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRhdGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hh
cj4mIGJ5dGVzKSB7CisgICAgICAgIFtdIChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVzLnNpemUoKSk7
CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYg
ZmlsZURhdGEpIHsKICAgICAgICAgICAgIGlmIChmaWxlRGF0YS5maWxlTGVuZ3RoICE9IEJsb2JE
YXRhSXRlbTo6dG9FbmRPZkZpbGUpCkBAIC0xNjQsNyArMTY0LDcgQEAgdWludDY0X3QgRm9ybURh
dGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKIEZvcm1EYXRhRWxlbWVudCBGb3JtRGF0
YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN3aXRjaE9uKGRh
dGEsCi0gICAgICAgIFtdIChjb25zdCBWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CisgICAgICAgIFtd
IChjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9y
bURhdGFFbGVtZW50KFZlY3RvciB7IGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpIH0pOwogICAg
ICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVE
YXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KGZpbGVEYXRhLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbV9sZW5ndGhJbkJ5dGVz
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9lbGVtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3RvcjxjaGFyPj4obV9lbGVtZW50
cy5sYXN0KCkuZGF0YSkpIHsKLSAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3Rv
ciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9lbGVtZW50cy5sYXN0KCkuZGF0YSkp
IHsKKyAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUgfSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0pOwogfQogCiB2b2lkIEZvcm1EYXRh
OjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCkBAIC0yODQsMTIgKzI4NCwxMiBA
QCB2b2lkIEZvcm1EYXRhOjphcHBlbmROb25NdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBET01Gb3JtRGF0YSYgZm9ybURhdGEsCiAgICAgYXBwZW5kRGF0YShlbmNvZGVkRGF0YS5kYXRh
KCksIGVuY29kZWREYXRhLnNpemUoKSk7CiB9CiAKLVZlY3RvcjxjaGFyPiBGb3JtRGF0YTo6Zmxh
dHRlbigpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAog
ewogICAgIC8vIENvbmNhdGVuYXRlIGFsbCB0aGUgYnl0ZSBhcnJheXMsIGJ1dCBvbWl0IGFueSBm
aWxlcy4KLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChhdXRv
KiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KGVsZW1lbnQuZGF0YSkpCisgICAg
ICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8dWludDhfdD4+KGVsZW1l
bnQuZGF0YSkpCiAgICAgICAgICAgICBkYXRhLmFwcGVuZCh2ZWN0b3ItPmRhdGEoKSwgdmVjdG9y
LT5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBW
ZWN0b3I8Y2hhcj4gRm9ybURhdGE6OmZsYXR0ZW4oKSBjb25zdAogU3RyaW5nIEZvcm1EYXRhOjpm
bGF0dGVuVG9TdHJpbmcoKSBjb25zdAogewogICAgIGF1dG8gYnl0ZXMgPSBmbGF0dGVuKCk7Ci0g
ICAgcmV0dXJuIExhdGluMUVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CisgICAgcmV0dXJuIExhdGluMUVu
Y29kaW5nKCkuZGVjb2RlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwg
Rm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKQEAgLTM0Nyw3ICszNDcsNyBAQCBS
ZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5
SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbAogCiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewogICAgICAgICBzd2l0Y2hPbihlbGVtZW50LmRhdGEsCi0gICAgICAgICAgICBbJl0g
KGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBl
bmREYXRhKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAo
Y29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CiAgICAg
ICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShmaWxlRGF0YS5maWxlbmFt
ZSwgZmlsZURhdGEuZmlsZVN0YXJ0LCBmaWxlRGF0YS5maWxlTGVuZ3RoLCBmaWxlRGF0YS5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB1aW50NjRfdCBG
b3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKLSAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjxjaGFyPj4oZWxlbWVudC5kYXRhKSkKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA4ZjIy
MTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUxMDViYmRjNjRkLi41YmZmNjVhNjM2YzMxNzU1Mjll
MjRkYzEzNjUxMDhjZjJiNmFmNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCkBAIC0zOCwxMiArMzgsMTIgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKICAgICBz
dHJ1Y3QgRW5jb2RlZEJsb2JEYXRhOwotICAgIHVzaW5nIERhdGEgPSBWYXJpYW50PFZlY3Rvcjxj
aGFyPiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRhdGE+OworICAgIHVzaW5nIERhdGEg
PSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRW5jb2RlZEZpbGVEYXRhLCBFbmNvZGVkQmxvYkRh
dGE+OwogCiAgICAgRm9ybURhdGFFbGVtZW50KCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IEZv
cm1EYXRhRWxlbWVudChEYXRhJiYgZGF0YSkKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQotICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4mJiBhcnJheSkK
KyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgYXJyYXkpCiAg
ICAgICAgIDogZGF0YShXVEZNb3ZlKGFycmF5KSkgeyB9CiAgICAgRm9ybURhdGFFbGVtZW50KGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmlsZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5n
dGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUp
CiAgICAgICAgIDogZGF0YShFbmNvZGVkRmlsZURhdGEgeyBmaWxlbmFtZSwgZmlsZVN0YXJ0LCBm
aWxlTGVuZ3RoLCBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lIH0pIHsgfQpAQCAtMTkzLDcg
KzE5Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVh
dGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmPEZvcm1EYXRh
PiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOworICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CiAgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKICAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29u
c3QgRE9NRm9ybURhdGEmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJh
bmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxl
bmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxjaGFyPiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9t
aXRzIGZpbGVzCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGZsYXR0ZW4oKSBj
b25zdDsgLy8gb21pdHMgZmlsZXMKICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7
IC8vIG9taXRzIGZpbGVzCiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28g
d2Ugb25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggZmJhMDIzM2JlZmEy
Y2Q0YzE2MTRmNzA1NmI0YjA3NTM3OTMxZWNlZi4uYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2
NjJiYzc3NTZiNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBs
b25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1Rv
QmVTZW50Ki8pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0
NjAzMTU5NGQzYWQ1NWU2Mjc0NzA5YmU4NmM1MjVlMjllYzJlY2Y3Li40YzA0MjEwYzVhNTEzYWMz
ZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEs
OSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLypl
bmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAppbmRleCA4ODEwMzhjODdkMWJjOWY0MTZi
YTExNjM1ZTNiNDE0NWM4ZDg4MGE5Li42ODM4ZTlkOGNmNDM3OTZkMmYzOTRiYTFmNTRmMDlkMGI2
N2U4YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggYTZmMmI3M2MxN2RmY2Y4NjI4NGM4YzVkZTU2MjA2YTlhNTA4NzRjZC4uZjZi
MmExODU3OTJiOThlMjQ4ZDE1ZjA3NjA4ZDZkYmNjODcwZWYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCiAgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBs
b25nIGxvbmcgY3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSB9OwotICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERh
dGE7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBjdXJyZW50RGF0
YTsKICAgICBDRlJlYWRTdHJlYW1SZWYgZm9ybVN0cmVhbSB7IG51bGxwdHIgfTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc3RyZWFtTGVuZ3RoIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQgeyAwIH07CkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBzdGF0aWMgYm9vbCBhZHZh
bmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIEZvcm1EYXRhRWxl
bWVudCYgbmV4dElucHV0ID0gZm9ybS0+cmVtYWluaW5nRWxlbWVudHMubGFzdCgpOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gc3dpdGNoT24obmV4dElucHV0LmRhdGEsCi0gICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICBbZm9ybV0gKFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMpIHsKICAgICAgICAgICAgIHNpemVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwotICAgICAg
ICAgICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVs
ZWFzZUJ1ZmZlcigpOwotICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0Yo
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAg
ICAgICAgTWFsbG9jUHRyPHVpbnQ4X3QsIFdURjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMu
cmVsZWFzZUJ1ZmZlcigpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIGRhdGEuZ2V0KCksIHNpemUs
IGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAgICAgICAgIGZvcm0tPmN1cnJlbnREYXRhID0gV1RG
TW92ZShkYXRhKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9ybV0g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAt
Mzk1LDggKzM5NSw4IEBAIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBGb3JtRGF0YSogZm9ybURhdGEpCiAgICAgLy8gSGFuZGxlIHRoZSBjb21tb24gc3Bl
Y2lhbCBjYXNlIG9mIG9uZSBwaWVjZSBvZiBmb3JtIGRhdGEsIHdpdGggbm8gZmlsZXMuCiAgICAg
YXV0byYgZWxlbWVudHMgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKTsKICAgICBpZiAoZWxlbWVudHMu
c2l6ZSgpID09IDEgJiYgIWZvcm1EYXRhLT5hbHdheXNTdHJlYW0oKSkgewotICAgICAgICBpZiAo
YXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihlbGVtZW50c1swXS5kYXRh
KSkgewotICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHZlY3Rvci0+ZGF0YSgpKSwgdmVjdG9y
LT5zaXplKCkpKTsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZlY3Rv
cjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNp
emUoKSkpOwogICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3QsIGRhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2Yx
ZDVhZjdkZWU1Ni4uOWJlNTg2ODJjYWMzM2JiYWFhOWUxODZkMmEzNGM0NjQwYjQxNWM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IDlkMDA1NTgxYWRlYzBjYzRjNjU4ZDhjZWU3NGZhYjVkMGE3MmQ2YjYuLjA1
NzZlZDg4MTI0MTA4MjI0NDc2Y2I2YmI3NTU4Zjk1YzljNzg1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC0xNTUsNyArMTU1LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2ln
bmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25n
IGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxl
cjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25z
ZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0YSBsZW5ndGg6KGludClsZW5ndGg7CistICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgdWludDhfdCopZGF0YSBsZW5ndGg6KGludClsZW5n
dGg7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBkY2Fh
YjcwNTFjZGMyMmM5OTE5YTM1OWNmZmFlNjgxZjdjMWNhMzRmLi5hNmY3MWFmNDIwZGY4ZGJkM2Nk
MmUzNGZjMDI3OGQ0NjBhZDhiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01NzAs
NyArNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
IC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwpAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAg
cmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVz
cG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTg3Myw3ICs4NzMsNyBAQCAtIChCT09MKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0
YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25zdCB1aW50OF90KilkYXRhIGxlbmd0aDoo
aW50KWxlbmd0aAogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmNwcAppbmRleCA0MjIzNjdlNGUxOGEyODhiYjhhZTUwMTQzZjliZDdmMGM3MmI0ZTJhLi44
ZWQwOWIyYWJjNWQ2NDdmYWI2ZGMwMWI5ODYxNmUxNTNmNjc4YjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQ4
Nyw3ICs0ODcsNyBAQCB2b2lkIEN1cmxIYW5kbGU6OmVuYWJsZUh0dHBQb3N0UmVxdWVzdCgpCiAg
ICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCAwTCk7
CiB9CiAKLXZvaWQgQ3VybEhhbmRsZTo6c2V0UG9zdEZpZWxkcyhjb25zdCBjaGFyKiBkYXRhLCBs
b25nIHNpemUpCit2b2lkIEN1cmxIYW5kbGU6OnNldFBvc3RGaWVsZHMoY29uc3QgdWludDhfdCog
ZGF0YSwgbG9uZyBzaXplKQogewogICAgIGN1cmxfZWFzeV9zZXRvcHQobV9oYW5kbGUsIENVUkxP
UFRfUE9TVEZJRUxEUywgZGF0YSk7CiAgICAgY3VybF9lYXN5X3NldG9wdChtX2hhbmRsZSwgQ1VS
TE9QVF9QT1NURklFTERTSVpFLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggZTNhYzkyOTI1N2I4YjZiNzRiYzkw
NmU1MTdhZmRlOWFjNmFhZjU4Yy4uZWEwMGU5ZDJjOWFiZGMwNDI2Zjk3NzJmZTgwNjA4NzBiY2Vk
N2ZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVI
dHRwR2V0UmVxdWVzdCgpOwogICAgIHZvaWQgZW5hYmxlSHR0cEhlYWRSZXF1ZXN0KCk7CiAgICAg
dm9pZCBlbmFibGVIdHRwUG9zdFJlcXVlc3QoKTsKLSAgICB2b2lkIHNldFBvc3RGaWVsZHMoY29u
c3QgY2hhciosIGxvbmcpOworICAgIHZvaWQgc2V0UG9zdEZpZWxkcyhjb25zdCB1aW50OF90Kiwg
bG9uZyk7CiAgICAgdm9pZCBzZXRQb3N0RmllbGRMYXJnZShjdXJsX29mZl90KTsKICAgICB2b2lk
IGVuYWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAgICAgdm9pZCBzZXRJbkZpbGVTaXplTGFyZ2UoY3Vy
bF9vZmZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDI4OTU4YTljZGJlZGJlZGUyMjJh
ZDdmN2I4ZWQ4MGQ5OTI1ODNhNGQuLmNjOWFiMGJjMDg1NTFlZmYwN2RmNDMzYjc2M2I5OWU4NTFi
N2Y5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03MCwxMyArNzAsMTMgQEAgdm9pZCBD
dXJsRm9ybURhdGFTdHJlYW06OmNsZWFuKCkKICAgICB9CiB9CiAKLWNvbnN0IFZlY3RvcjxjaGFy
PiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCitjb25zdCBWZWN0b3I8dWludDhf
dD4qIEN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERhdGEoKQogewogICAgIGlmICghbV9mb3Jt
RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcG9zdERhdGEpCi0g
ICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+
ZmxhdHRlbigpKTsKKyAgICAgICAgbV9wb3N0RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4
X3Q+PihtX2Zvcm1EYXRhLT5mbGF0dGVuKCkpOwogCiAgICAgcmV0dXJuIG1fcG9zdERhdGEuZ2V0
KCk7CiB9CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3Jt
RGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogICAgICAgICBjaGFy
KiBidWZmZXJQb3NpdGlvbiA9IGJ1ZmZlciArIHRvdGFsUmVhZEJ5dGVzOwogCiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkQnl0ZXMgPSBzd2l0Y2hPbihlbGVtZW50LmRhdGEsCi0g
ICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKKyAgICAgICAgICAg
IFsmXSAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgICAgIHJl
dHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJTaXplKTsKICAg
ICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEm
IGZpbGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRGcm9tRmlsZShmaWxlRGF0
YSwgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclNpemUpOwpAQCAtMTczLDEwICsxNzMsMTAgQEAgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21GaWxlKGNvbnN0
IEZvcm1EYXRhRWxlbWVudDo6RW4KICAgICByZXR1cm4gcmVhZEJ5dGVzOwogfQogCi1zdGQ6Om9w
dGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbURhdGEoY29uc3QgVmVj
dG9yPGNoYXI+JiBkYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQorc3RkOjpvcHRpb25h
bDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21EYXRhKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZGF0YSwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplX3Qg
ZWxlbWVudFNpemUgPSBkYXRhLnNpemUoKSAtIG1fZGF0YU9mZnNldDsKLSAgICBjb25zdCBjaGFy
KiBlbGVtZW50QnVmZmVyID0gZGF0YS5kYXRhKCkgKyBtX2RhdGFPZmZzZXQ7CisgICAgY29uc3Qg
dWludDhfdCogZWxlbWVudEJ1ZmZlciA9IGRhdGEuZGF0YSgpICsgbV9kYXRhT2Zmc2V0OwogCiAg
ICAgc2l6ZV90IHJlYWRCeXRlcyA9IGVsZW1lbnRTaXplID4gc2l6ZSA/IHNpemUgOiBlbGVtZW50
U2l6ZTsKICAgICBtZW1jcHkoYnVmZmVyLCBlbGVtZW50QnVmZmVyLCByZWFkQnl0ZXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0
YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3Jt
RGF0YVN0cmVhbS5oCmluZGV4IGI5YTEwMGRjOGRmNWFkYTNmZWMxZDQ0MTU5YTkxMmE5YTAzN2E0
MDcuLmQ1Zjg0Nzk0NzA3YzMxMzI2ZGViZjQxN2NiNzkxMTNiMjQ4M2JiZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGVsZW1lbnRT
aXplKCkgeyByZXR1cm4gbV9mb3JtRGF0YSA/IG1fZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgp
IDogMDsgfQogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+KiBnZXRQb3N0RGF0YSgpOworICAgIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiogZ2V0UG9zdERhdGEoKTsKICAgICBib29sIHNob3VsZFVzZUNo
dW5rVHJhbnNmZXIoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxTaXplKCk7CiAKQEAg
LTUyLDExICs1MiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUNvbnRlbnRMZW5ndGgo
KTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbUZpbGUoY29uc3QgRm9ybURh
dGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmLCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gcmVhZEZyb21EYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNoYXIqLCBz
aXplX3QpOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbURhdGEoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY2hhciosIHNpemVfdCk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IG1f
Zm9ybURhdGE7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGNoYXI+PiBtX3Bvc3REYXRh
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8dWludDhfdD4+IG1fcG9zdERhdGE7CiAgICAg
Ym9vbCBtX2lzQ29udGVudExlbmd0aFVwZGF0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91
bGRVc2VDaHVua1RyYW5zZmVyIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV90
b3RhbFNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRl
eCBlNTY0YTBjZTY2NjE0YTQ5YTEwMzEzNjg4NTFjNGRhODgyMzUyYTYxLi5hMzA5YzI1OGNkOWYx
MTJkM2JiY2U2Y2FhNzE0ODE4MzZhMWZiMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQog
ICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2lu
Z2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dFNvdXAuY3BwCmluZGV4IDFmN2U5MTQ4Y2NhOTY0ZTAxY2NkZjJhNmJhYWUzNzc3ZWI1ZTBkODAu
LjUyM2QwZDIxODU3ZDkwNDhjNTZiYjhjMTAzZDhhYTAwYmMxMGU2MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0U291cC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgQmxvYlJlZ2lzdAog
ICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9y
bSBkYXRhLCB3aXRoIG5vIGZpbGVzLgogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVs
ZW1lbnRzKCk7CiAgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3
YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHZlY3RvciA9IFdURjo6Z2V0X2lmPFZl
Y3RvcjxjaGFyPj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZlY3Rv
ciA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudHNbMF0uZGF0YSkpIHsKICNp
ZiBVU0UoU09VUDIpCiAgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1l
c3NhZ2UtPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCB2ZWN0b3ItPmRhdGEo
KSwgdmVjdG9yLT5zaXplKCkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRGb3JtRGF0YUlucHV0U3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRGb3JtRGF0YUlucHV0U3RyZWFt
LmNwcAppbmRleCA4YTM1YzYxNjQwOTE3MmY1ZDc3YmFjYTUxMTgyOGNlYzgyNzFkZDdiLi40OTNi
MTM4YzI2ZDMwNjYzNGVjYjI1NTU3YmUyMjYwY2FhMTM2NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvV2ViS2l0Rm9ybURhdGFJbnB1dFN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdEZvcm1E
YXRhSW5wdXRTdHJlYW0uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBib29sIHdlYmtpdEZv
cm1EYXRhSW5wdXRTdHJlYW1DcmVhdGVOZXh0U3RyZWFtKFdlYktpdEZvcm1EYXRhSW5wdXRTdHJl
YW0qCiAKICAgICBjb25zdCBhdXRvJiBlbGVtZW50ID0gZWxlbWVudHNbcHJpdi0+bmV4dEluZGV4
KytdOwogICAgIHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKLSAgICAgICAgW3ByaXZdIChjb25zdCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpIHsKKyAgICAgICAgW3ByaXZdIChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIHsKICAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1Jl
ZihnX2J5dGVzX25ld19zdGF0aWMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CiAgICAgICAg
ICAgICBwcml2LT5jdXJyZW50U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVh
bV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgICAgICB9LCBbcHJpdiwgY2FuY2Vs
bGFibGVdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCmluZGV4IDA1
ZDE3NzE3NzUxZTAwYTUyYTZhMDVlYjAwNmY3YjRjMTdmMWQ0YmIuLmViY2RiMmUwZGQ5YjQyODBm
MjUxNTczZGJhNmI1YmQwNmRmZmQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoLCBib29sIHN0
b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgY29uc3Q7CiAgICAgU3RyaW5nIGRlY29kZShjb25z
dCBjaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlY29kZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBkZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxlSGFuZGxp
bmcsIE5GQ05vcm1hbGl6ZSA9IE5GQ05vcm1hbGl6ZTo6WWVzKSBjb25zdDsKICAgICBWZWN0b3I8
dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QgZmlu
YWwgeyByZXR1cm4gZW5jb2RlKHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2Rl
ZEVudGl0aWVzLCBORkNOb3JtYWxpemU6Ok5vKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDYyOTFiNjQyNDY0ZjI3NWI0NTNi
Y2M5ZTQwZTFjOWZjNTA5OWE5NjAuLjg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFj
Zjg3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgRFdP
UkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKICAgICBpZiAoYnl0ZXNUb1JlYWQgIT0g
SU5WQUxJRF9GSUxFX1NJWkUgfHwgbGFzdEVycm9yID09IE5PX0VSUk9SKSB7Ci0gICAgICAgIFZl
Y3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBp
ZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRl
c1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKICAgICAgICAgICAgIHJlc3Vs
dCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggMWYzM2EzYjYxM2NiMDNl
YjU4M2U4NTk0YmFhMDI5MjQwYmY4YWJhYS4uOGVhNDRkY2YyNTZhYjAwNDMxMjkwY2I0ZTY1NTFi
ODM2MzJjNTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJz
aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgU1ZHVG9PVEZGb250Q29udmVy
dGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50Jik7CiAgICAgYm9vbCBjb252ZXJ0U1ZHVG9PVEZGb250
KCk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gcmVsZWFzZVJlc3VsdCgpCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlbGVhc2VSZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9yZXN1
bHQpOwogICAgIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxHbHlw
aERhdGE+IG1fZ2x5cGhzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBHbHlwaD4gbV9nbHlwaE5hbWVU
b0luZGV4TWFwOyAvLyBTVkcgMS4xOiAiSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBnbHlwaCBuYW1l
cyBiZSB1bmlxdWUgd2l0aGluIGEgZm9udC4iCiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxH
bHlwaCwgMT4+IG1fY29kZXBvaW50c1RvSW5kaWNlc01hcDsKLSAgICBWZWN0b3I8Y2hhcj4gbV9y
ZXN1bHQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVzdWx0OwogICAgIFZlY3RvcjxjaGFyLCAx
Nz4gbV9lbXB0eUdseXBoQ2hhclN0cmluZzsKICAgICBGbG9hdFJlY3QgbV9ib3VuZGluZ0JveDsK
ICAgICBjb25zdCBTVkdGb250RWxlbWVudCYgbV9mb250RWxlbWVudDsKQEAgLTE1NTMsNyArMTU1
Myw3IEBAIGJvb2wgU1ZHVG9PVEZGb250Q29udmVydGVyOjpjb252ZXJ0U1ZHVG9PVEZGb250KCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZl
cnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCitzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIgY29udmVydGVyKGVs
ZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCmluZGV4IDg3NTE5MTM0YjcyNjg2M2QwOWNkMTNjYzI4
N2FiYzM4NTUyYTRhNjIuLjg4ZDcyNzI2ODE4NjY3OGI2ZmU2ZjhlNmJiMmJjNDAwYzFjN2QwOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaApAQCAtMzEs
NiArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0ZvbnRFbGVtZW50Owog
Ci1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBT
VkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRT
VkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDA5NGY0
N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNi4uZWNiNmJhZTE2ODk1NjE2N2Y2MWZh
ZjNkY2EyOTM2NDZjZGNhZDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRh
dGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVu
IGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAg
IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8v
IGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6ZSgp
KTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERh
dGEoZGF0YSgpLT5kYXRhQXNDaGFyUHRyKCksIGRhdGEoKS0+c2l6ZSgpKTsKICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCiAgICAgICAgIGZy
YW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCAyYzkz
Y2VjMjQ4MzQ3MGQ5MDM1NGUyNGY0YmIyODYyYjQ3MjA1NjQzLi5mYzEyN2I3YjY3YmVhNzM0NDYz
Y2QyZDViMDc1NmI1OWJlYmE1OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiAgICAgbWF5YmVE
ZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9CiAKLXZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciosIGludCkKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkKIHsKICAgICBtYXliZURl
dGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDg1NDVmMTk5YTY0ZDI2ZGEy
YzU0YTA1MzdkYTA3NTkxMjU4ZDUyNWUuLjQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAwOTMyOTJl
OWZmYmU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcAppbmRleCBhMWY5NDdlYjg3MTIxZDljYzAwN2Q3MjM3YjBjZDdlMTI4
MjQwYzI2Li5mYWJiZDAzZWIwYWRjMTIwNGUxMDQxYTEwOGUwNWI3NmU0NTQ1NTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0x
MTEsNyArMTExLDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQogewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGJm
OTRmZDQ4Y2FiMTRiZDUzNDg5MjE3ZjIwNGJmMjNhODYwNGM1ZTguLjE1YzQ1MTM4MDA1MDRhYjAz
ZDQ5MTc5YmI1NGU4MjAwZTJkNDk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggZmIwNzJjYzE4
YzkxZmUxMTBlNGFkZWVhODMzMjg5YzI4M2JiNmRkZS4uZDdjMWFiMjZkYzFkZTIzMjM3ZGI0M2U5
OGMxMjM1NDNkMDE5NjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9u
c2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlmIChtX2ZhaWxlZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKGRh
dGEpOworICAgICAgICBsZW4gPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSkpOwogCiAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5k
ZXggZDMzN2M1MDM2ZGFjMGY2NzVhMWM5MjNkOGRlNjQzZmYxMzUzM2NiOC4uOGQxYWExYmIxOTE4
NWQ0Zjc5YmI2ZmFkNGU5ZTc0MTgyM2Q2ZjA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KIAogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcAppbmRleCA4Zjc2MGQ2MmY3ZGIwMDdlNWM0YWJlZDM4YWEwOGNiZWZl
MDE2NTEzLi5iMmU5MTc1YTcwZTY0MDc1MTg2NmM0ZjRhZGVlYjkxYjcyMzVlN2JlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3Jh
Z2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhCiAK
ICAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0IEZ1bmN0
aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiB3cml0ZURhdGEpIHsKICAgICAgICAg
Zm9yIChhdXRvIGl0ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpOyBpdCAhPSBzY3JpcHQuYnVm
ZmVyKCktPmVuZCgpOyArK2l0KQotICAgICAgICAgICAgd3JpdGVEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGl0LT5zZWdtZW50LT5kYXRhKCkpLCBpdC0+c2VnbWVudC0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIHdyaXRlRGF0YShpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2Vn
bWVudC0+c2l6ZSgpKTsKICAgICB9OwogCiAgICAgaWYgKCFzaG91bGRVc2VGaWxlTWFwcGluZyhz
Y3JpcHQuYnVmZmVyKCktPnNpemUoKSkpIHsKQEAgLTk4LDcgKzk4LDcgQEAgU2NyaXB0QnVmZmVy
IFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXN0cmEKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAg
aXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgc2l6ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNzcwNGZl
ODEzNTA2MTY1MDlhMjgxNzEzMjJkOWVhZWEzMGU3NWY3My4uZWNmMGE0OWIzMDFkY2Y5MTgzYzFl
YWY5ODUwMDYwMDkwYTQ0MGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3ZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4p
CiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzgsNyArMTAzOCw3
IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAg
IGxlbiA9IHN0cmxlbihkYXRhKTsKKyAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAogICAgIGlmICh1c2VEZWNvZGVyKQogICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGMxODU3YzkwNTE1ZjZiZTc3NzBiYzA0
Yzk1NjQzNDIzNmFiNzQ0YTguLjYzZDViMjQwMjhlZGQ3YzI5ZWU3NWI2NDA3OGFmOTYzYjQyYjM4
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xNjAsNyArMTYwLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5k
ZXggNTdlZTVkZWQyNGJkYTI3NWU1ODZiZGY2MTMyYTUyNDU1YWJhY2M5Ni4uZGY4YWJlNDI2ZTA2
NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHhtbERvY1B0
ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKIAogICAgICAgICAvLyBXZSBkb24n
dCBzcGVjaWZ5IGFuIGVuY29kaW5nIGhlcmUuIE5laXRoZXIgR2Vja28gbm9yIFdpbklFIHJlc3Bl
Y3RzCiAgICAgICAgIC8vIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhlIEhUVFAgaGVhZGVy
cy4KLSAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbFJlYWRNZW1vcnkoZGF0YSA/IGRhdGEtPmRh
dGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAoY29uc3QgY2hhciopdXJp
LCAwLCBvcHRpb25zKTsKKyAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbFJlYWRNZW1vcnkoZGF0
YSA/IGRhdGEtPmRhdGFBc0NoYXJQdHIoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwLCAoY29uc3QgY2hhciopdXJpLCAwLCBvcHRpb25zKTsKIAogICAgICAgICB4bWxTZXRTdHJ1
Y3R1cmVkRXJyb3JGdW5jKDAsIDApOwogICAgICAgICB4bWxTZXRHZW5lcmljRXJyb3JGdW5jKDAs
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCmluZGV4IDFkOGRhZGJlNDY3NjE5MmY2NWFlOGUwOGM1NjgxYzZiMGNj
ZTk3OGYuLmE1NGRjMjg5OTgyMDg4MzY2YWU3N2MwNmI0MWU1NDViOWNiMGU2ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKQEAgLTM1OSw5ICszNTksOCBAQCBzdGF0aWMgaW50IG1hdGNoRnVuYyhjb25zdCBjaGFy
KikKIGNsYXNzIE9mZnNldEJ1ZmZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgT2Zmc2V0QnVmZmVyKFZlY3RvcjxjaGFyPiBidWZmZXIpCisgICAgT2Zmc2V0
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCi0gICAgICAgICwgbV9jdXJyZW50T2Zmc2V0KDApCiAgICAgewogICAgIH0K
IApAQCAtMzc3LDggKzM3Niw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVj
dG9yPGNoYXI+IG1fYnVmZmVyOwotICAgIHVuc2lnbmVkIG1fY3VycmVudE9mZnNldDsKKyAgICBW
ZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CisgICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0IHsg
MCB9OwogfTsKIAogc3RhdGljIGJvb2wgZXh0ZXJuYWxFbnRpdHlNaW1lVHlwZUFsbG93ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggZDNlNjE2MWJk
MmJkY2Y4ZWFmMzAxMDdjNTM2YmVkNGIyN2UwOWMwOC4uMjA4NzM3MzllMDUzNGRkYTZhNDgyMjI0
MTRhYWM3MTY0NjQwOGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50NjRfdCBsZW5ndGgpCit2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQ2
NF90IGxlbmd0aCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRh
UmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1MjliNjdkMTc3ODA5
MzRlODM1OWMwMDBhNDEzNmFlOTkwNTAyNjRjLi45YjQwNzAxY2Y1MzI5ODk1ZTQxYjg0MzRmMDE1
ZjY5OWQ0MGQzOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9v
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNl
bnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFy
KiwgaW50NjRfdCk7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCosIGludDY0
X3QpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKaW5kZXggZmVjNjVjZjYyYjY2
NzRiODMwMGM1MGNkNDMzNDE1ZTkxNTExNDQwMC4uMTNmMTc0ZTQ5MzEwMDFmZWJhZWNhNmFjYzFk
ZWQ5MWQxZTMxOGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNlaXZlZChSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciBpZGVuCiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3Vy
Y2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc291cmNlLT5kYXRhUmVjZWl2
ZWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSk7CisgICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZlZChkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDM3
YjI1NGI5MGUwNDFlN2UwMjMyNjY1M2QwOWNmMDJjYWFhZDRkZTkuLjFjMDg2Y2EwZDA2ZTg5MTI0
NDE2MjI2MTBlMDdkZTkyOGU4MjliN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBA
IC01NzAsNyArNTcwLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVj
b3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgogICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAg
ICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkgfTsKKyAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggZmZhOTEwNGNkNWNkNjFhZjE2ZDRjYzA4MjJh
MDdkNzMyYjIwZjAxNi4uOGE1OWEzNTY2ZDQ2ZWUzMzI1ZTU3MWE4YWU3ZGQ5NzA5YzQxNGEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rl
ci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKICAgICBp
ZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgICAgIGJv
ZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKIAogICAgIHJldHVy
biB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbEN1cmwuY3BwCmluZGV4IDNiZjE2NjM1MTQ4YjRmYzQxMDRkZTdlMTBhNWYz
NmE5MzA1MGQ1YTEuLmZhNzZhYzc2MmVhZGFhMDdiMTQzNzU4YTU1MmNhYjBiY2JhMzQ5MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
SU9DaGFubmVsQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIElP
Q2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVl
JiBxdWV1ZSwgRnVuY3RpbwogewogICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBGaWxlU3lzdGVtOjpzZWVrRmls
ZShtX2ZpbGVEZXNjcmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpC
ZWdpbm5pbmcpOwotICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9m
aWxlRGVzY3JpcHRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgICAgIGludCBlcnIgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2ZpbGVEZXNjcmlwdG9yLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBl
cnIgPSBlcnIgPCAwID8gZXJyIDogMDsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IDc2MWMwNWNmNmQ2ZTY5MmYyNzE2ZmFjNmMzNGNk
YzkzNjFlOGM1OGMuLjgwYmFjNGIyODljMGI1NzQxMTMxODQ1YTVkMzA2ZTZhZjhmODJmZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIENTdHJpbmcgbV9zbmlmZmVkQ29udGVudFR5cGU7Ci0g
ICAgVmVjdG9yPGNoYXI+IG1fcmVhZEJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9yZWFk
QnVmZmVyOwogICAgIHVpbnQ2NF90IG1fYm9keURhdGFUb3RhbEJ5dGVzU2VudCB7IDAgfTsKICAg
ICBHUmVmUHRyPEdGaWxlPiBtX2Rvd25sb2FkRGVzdGluYXRpb25GaWxlOwogICAgIEdSZWZQdHI8
R0ZpbGU+IG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA4MzQ2ZTM5ZTg3YTRkMDU4MjUz
ZmVjZWE2NzFjMTMyZTQ3NjllMWI5Li5kZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNi
MzNlZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
c2VnbWVudC5zZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0
YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXgg
YzNmMTgzYjJkYjViYjU5NGMzMDljZDg5YjcyMDIwZWEwMWFkMjFhNy4uN2UwZDhkYmUxOTAyNTk5
ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
CmluZGV4IDRiMjBjODVhYzUzNjIzNjQwM2E4M2VhOTczY2RjY2QxMGZkZjcyZjYuLmNiZDA0ZDk5
YjdjMjcxNjcxYzg3NTJiMThhOTJlNDIxNTg1NmM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC00ODEsNyAr
NDgxLDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3QKIAogdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVE
YXRhKHN0cmVhbUlELCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKTsKKyAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFt
SUQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtNTA3
LDcgKzUwNyw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmCiAgICAgaWYgKG1fcGx1Z2luQ2Fu
Y2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsdWdpbi0+
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggZGE4MjA0NjRmOTNjNjA0Y2U4Njk3OWI2NWQ2YWU2
NzZmMWZjMDBiMi4uYmZmMWQxN2ZhNmE3M2Q5ZTlkYzA4MGVjOTUxOWE2ZDNjY2MwNDhmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IEhU
VFBCb2R5IHsKICAgICAgICAgVHlwZSB0eXBlID0gVHlwZTo6RGF0YTsKIAogICAgICAgICAvLyBE
YXRhLgotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7CiAKICAgICAgICAgLy8gRmlsZS4KICAgICAgICAgU3RyaW5nIGZpbGVQYXRoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZjBj
OGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNy4uMDg3ODhjODJmMmEzNjY2YmQx
NTVkZmMzZTQ1NmIwYmJlNTEwMmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNl
cyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0
b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NTcxLgogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICpidWZmZXIpCi0gICAgICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEp
OworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShlbGVtZW50LnNlZ21lbnQt
PmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEpOwogI2Vsc2UKICAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC0zMDYxLDcgKzMwNjEsNyBAQCBzdGF0
aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJj
ZUhhbmRsZShjb25zdCBTY3JpcAogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSB7IH07CiAKICAgICBhdXRvJiBzZWdtZW50ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigp
LT5zZWdtZW50OwotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFw
KGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNpemUoKSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDx1aW50OF90Kj4oc2VnbWVudC0+ZGF0
YSgpKSwgc2VnbWVudC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBmZmVlMDYxMTQ2MGJjMWVkYmFk
YWFkYTc5ZDhkZWY4NmRmMjk5NDdmLi41YTE4MGJlZWQxMmY1Y2RjZGZiYWU2NzAyZTY5M2I5ZWE2
ZTBhODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB0ZW1wbGF0ZTw+IHZv
aWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3Qg
RnVuY3Rpb248YgogfQogdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYgZnVuY3Rpb24pCiB7Ci0gICAgZnVuY3Rpb24ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgZnVuY3Rpb24oZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTU3NCw3
ICs1NzQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1
bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQogICAgIGlmIChmaWxlID09IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxp
c3RNZXRhRGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9OwotICAgIGF1dG8g
Ynl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOworICAgIGF1dG8g
Ynl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgJmludmFsaWRIZWFkZXIsIHNpemVvZihp
bnZhbGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3Jp
dHRlbiA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIGNsb3NlRmlsZShmaWxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZTcz
NTdkMTEyNTBkNjBlYzhjODM4YTg3MDgxNzBlMWYyYzY4ZjVkZC4uMWUxNDljZjIzNzBhNzExNTE2
OTk1NGE2NWI5YmM5ZTI4Yjc3OTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25U
eXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwog
ICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEt
PmRhdGFBc1VJbnQ4UHRyKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0
YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAg
ICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUo
ZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmNwcAppbmRleCBmMmVkYzVjZjg3YmVhZWNlYjg1ZmViNmMzZTNjOWNlNTE4MjVhYzY5
Li43MDhiYjI5ZjhmNzNkNmVkN2ZjZjY3MzkwYzU4MmMxZmViYWQ1Njk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5OjpkYXRhU2VudChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNp
Z25lCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6RGF0YVNlbnQobV9pZCwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpLCAw
KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRhdGFSZWNlaXZlZChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCAwKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2
ZWQobV9pZCwgSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0aCkpLCAwKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDRkNmE1YWZjM2U1OTVlNWNm
ZWEzNzBiMjFmN2VlOGExMzc0MWUzZTQuLjQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2
MTZjYmExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQg
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWls
ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDY5NDg5NmM5OTdhNDk0MGRiYWIyZGE3NjU3ODIwYTI3OGFmMWRj
NmEuLjQ4NGMwYmVkMzZiMmZlY2ExZmU4MGViNmRmMmMzMGQwMzBlZDIxODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
eyBidWZmZXItPmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBT
dGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEu
c2l6ZSgpOwogCi0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0
YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VM
b2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCBkMGNiNzllNWQxZTY1ZjhlMWJkMTk5YzU0M2RlZDA5MThlODRmNTFhLi43ODQxYThm
M2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTgsOSAr
NTgsOSBAQCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VR
dWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvYwogICAgIHJldHVybiB7IGRvY3VtZW50LCBb
JmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKICAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5k
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0cmluZy5kYXRh
KCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1l
c3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgp
KSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwotICAgIH0s
IFsmY2hhbm5lbF0oY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKLSAgICAg
ICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2Rl
QmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShN
ZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJl
bmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGJ5dGVMZW5ndGgg
fSB9LCBieXRlTGVuZ3RoKTsKKyAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBieXRlTGVuZ3RoKSB7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdl
KE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZl
cmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CiAgICAgfSwgWyZjaGFu
bmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsKICAgICAgICAgYXV0byBjb2RlID0g
c3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsKICAgICAgICAgY2hhbm5lbC5mYWlsKG1h
a2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIEJsb2I6IGV4Y2VwdGlvbiBjb2RlID0gIiwgY29kZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAppbmRleCA0OTlk
YTE4ZDE3NGZlNzg5MjhiODczY2E3MmNiN2VlMWFlMGE1ZDlmLi43ZWIxMDc4NzdlMmIyYTBhODk5
NDM2NzQyMjRmZDFiMjgwMDRjYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291
CiB7CiAgICAgaWYgKGF1dG8qIHNvdXJjZSA9IHNvdXJjZUZyb21JZGVudGlmaWVyKHNvdXJjZUlk
ZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChpc1JhdykKLSAgICAgICAgICAgIHNvdXJjZS0+c2Vu
ZFJhd0RhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSk7CisgICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRhKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmlu
Z0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUlRDRGF0YUNo
YW5uZWxSZW1vdGVNYW5hZ2VyOjpjaGFuZ2VSZWFkeVN0YXRlKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpyZWNlaXZlRGF0
YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIGJv
b2wgaXNSYXcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBWZWN0b3I8
dW5zaWduZWQgY2hhcj4gYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAg
U3RyaW5nIHRleHQ7CiAgICAgaWYgKGlzUmF3KQogICAgICAgICBidWZmZXIgPSBkYXRhLnZlY3Rv
cigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
OjpyZWNlaXZlRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIKIAogICAgIHBv
c3RUYXNrVG9IYW5kbGVyKGhhbmRsZXJJZGVudGlmaWVyLCBbaXNSYXcsIHRleHQgPSBXVEZNb3Zl
KHRleHQpLmlzb2xhdGVkQ29weSgpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKGF1dG8mIGhh
bmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoaXNSYXcpCi0gICAgICAgICAgICBoYW5kbGVy
LmRpZFJlY2VpdmVSYXdEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5k
YXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVJh
d0RhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGhhbmRsZXIuZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV1RGTW92ZSh0ZXh0KSk7CiAgICAg
fSk7CkBAIC0yMzAsOSArMjMwLDkgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6
OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdEYXRhKFcKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5
OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZhbHNlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih0ZXh0LmRhdGEoKSksIHRleHQu
bGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAotdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6
OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK3ZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQ
cm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCB0cnVlLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhKSwgc2l6ZSAgfSB9
LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIHRydWUsIElQQzo6RGF0
YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgIH0gfSwgMCk7CiB9CiAKIHZvaWQgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWREZXRlY3RFcnJvcihX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9S
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaAppbmRleCA2ZDEyYjdjMzVmMDA0YTQ3YzU1NGZk
YjE1ZWUyMzlkZTYyYjM1MGNlLi5mOGMwNWU1Mzc0MTdkNzk0ZDVhNjE1ZTc4OGUxZTZhZWRhMGE3
MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oCkBAIC04OCw3
ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxT
dGF0ZSkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIs
IGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSYXdE
YXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciwgY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRGV0ZWN0RXJyb3IoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBidWZmZXJlZEFtb3VudElz
RGVjcmVhc2luZyhXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIsIHNpemVfdCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAwMDY3ODk5MDkz
MmM0MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3Li4zZGM5MjhkYzU3YTk3ZDAyYzkyODQ1MzMx
MWNmMzFjYmYyYjg1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVmZmVyKGJvb2wgaXNG
aWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAgICAgICAgaWYgKCFm
aWxlQ29udGVudHMpCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAK
LSAgICAgICAgcG9zdEJ1ZmZlciA9IGZpbGVDb250ZW50cy0+ZGF0YSgpOworICAgICAgICBwb3N0
QnVmZmVyID0gZmlsZUNvbnRlbnRzLT5kYXRhQXNDaGFyUHRyKCk7CiAgICAgICAgIHBvc3RCdWZm
ZXJTaXplID0gZmlsZUNvbnRlbnRzLT5zaXplKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBO
UEFQSSBzcGVjIHN0YXRlcyB0aGF0IHRoZSBmaWxlIHNob3VsZCBiZSBkZWxldGVkIGhlcmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjE3ZDdkNzZjMGE4YTVlYjlkYmE1N2E4YTgwNmJj
NjA4NjI2ZjQ1Yy4uMDkwZDVhNDBjZWJkNzhjMWVkNzJiYWJhN2JmNmUwNzIzM2IyNWU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
VVJMJiByZXNwCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJz
KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAg
ICAgCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQKICAgICBtX21h
bnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgs
IGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKTsKIH0KIAotdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0
YXJ0ZWQpOwogICAgIEFTU0VSVChtX3Nob3VsZFVzZU1hbnVhbExvYWRlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAppbmRleCAyNDc0OTE0NmQ5MGY0NTVmNjlmNTQzNTk2NGUwYjNiY2EzMWRjY2YyLi5h
NTgyYjY2NTJmYTUwMWQ2ZTc3ZGMyNDI5MDZiNDFkZWEyYjA1ZGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdHJlYW1XaWxs
U2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKICAgICB2
b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFt
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiBy
ZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2Vs
bGVkKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApp
bmRleCAyYTYwMWNjMDhiNDBlNzVmOWFlMThhNjI1YTgyYzI2MWZmZDdjMjdlLi5kYmZiOGI2Yjgx
MWIzNjQ3NGE1ZGU2YmI2YTdmMzhjNWIwMjUyMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzCiAg
ICAgc3RhcnQocmVzcG9uc2VVUkwuc3RyaW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVk
VGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0
c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIC8vIERlbGl2ZXJpbmcgdGhlIGRhdGEgY291bGQgY2F1c2UgdGhl
IHBsdWctaW4gc3RyZWFtIHRvIGdvIGF3YXkgc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdCBo
ZXJlLgogICAgIFJlZjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0x
MTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRT
dHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgaWYgKCFzdGFydChtX3JlcXVlc3RVUkxT
dHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCksIDAsICJ0ZXh0L3BsYWluIiwgIiIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0YShyZXN1bHRDU3RyaW5nLmRhdGEoKSwgcmVz
dWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVsaXZlckRhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0cmluZy5kYXRhKCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0
aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQogCkBAIC0xODcsNyArMTg3LDcgQEAgYm9v
bCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnQoY29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0
cmluZywgdWludDMyX3Qgc3RyZWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgp
Cit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogCkBAIC0yNjAs
NyArMjYwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb1BsdWdp
bigpCiAgICAgfQogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRv
RmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBh
IHRlbXBvcmFyeSBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMTBj
N2YyZDllODc0NjNhY2JlNzhmODdkNDNlNTIxZjA4OTkyM2FiZS4uOWIwNzA5OTg4NDcyMDQzMWEz
YjEzZTQwMWVlNDg4ODM4YmE2MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJl
ZGlyZWN0UmVzcG9uc2VTdGF0dXMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZygpOwogICAgIHZvaWQgZGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCk7CiAKQEAgLTczLDkg
KzczLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgbm90aWZ5QW5k
RGVzdHJveVN0cmVhbShOUFJlYXNvbik7CiAKLSAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRlbGl2ZXJEYXRhVG9QbHVnaW4oKTsK
LSAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKKyAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKTsKIAogICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4gbV9wbHVnaW47CiAgICAgdWludDY0
X3QgbV9zdHJlYW1JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCA2Y2RiZWRjZDA4NTcyZTBiNjU5OTg1NDNmZGY0MmYyNTg0MDIy
MDVhLi5hNjUzMWI2NGI5NzczMDZkMGZmZDgyYWNjODJmMjhiMDljZmUwMjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xNzYs
MTEgKzE3NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQg
c3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwg
eyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lk
IHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7
CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNl
bGxlZCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwo
Ym9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25z
dCBXZWJNb3VzZUV2ZW50JikgZmluYWw7CkBAIC0zNjYsNyArMzY2LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhcios
IGludCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggYzAyZjg0MGM0MDc0ODAxYmQ4NzRmNmNmODMyZTk3Yjg4NDFmNWM0OS4uMTUxM2UwNGVm
NGU4NTZmYTg3MmM1NTI4YTdjYmJkMDcxMWY3ZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTU3LDcgKzExNTcsNyBA
QCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdAogICAgIH0KIH0KIAotdm9pZCBQREZQbHVnaW46OlBE
RlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGNvdW50KQordm9pZCBQ
REZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGNvdW50KQogewogICAgIGlmICghbV9wZGZQbHVnaW4pCiAgICAgICAgIHJldHVybjsKQEAgLTEx
NjYsNyArMTE2Niw3IEBAIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtCiAgICAgaWYgKCFyZXF1ZXN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LT5hZGREYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShk
YXRhLCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJD
bGllbnQ6OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpCkBAIC0xNjg0LDE0ICsxNjg0LDE0IEBAIHZvaWQgUERGUGx1Z2luOjpz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVp
bnQzMl90CiAgICAgICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVn
aW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0
SUQpOwogCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRlcyksIGxlbmd0aCk7CisgICAg
Q0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0
cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogfQogCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIFBE
RlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAg
ICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0g
Y3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKaW5kZXggZDNjN2FjNzA1MTFmYzcyYzg3MDg0YjhhMzc0ZjlkNmM3MjY4NTliMC4uMTM1
NWNmZjRlYjc3ZjZmNzE3ZGI5MjBlMjE0MDU4ZmMxNmIyZmVjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
PSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNo
ZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhl
IHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBiZmY4
MDRiMzg4NWFhNThiYTQ2YzFmMjM4NzBhNjA5ZTMzOTM5YWNmLi45Y2VkN2RhMDc1MDJmNjJiYWM2
YWY2NzllMTYxMGQ0ZTY1OWUwN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0zMzAsOSArMzMwLDkgQEAgdm9pZCBQbHVnaW5Q
cm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBV
UkwmIHJlc3BvbnMKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFt
SUQsIHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUs
IG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXZvaWQgUGx1Z2luUHJveHk6OnN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkKK3ZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclBy
b3h5OjpTdHJlYW1EaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzKSwgbGVuZ3RoKSksIG1fcGx1Z2lu
SW5zdGFuY2VJRCk7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQs
IElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1fcGx1Z2luSW5zdGFuY2VJRCk7
CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
c3RyZWFtSUQpCkBAIC0zNTAsOSArMzUwLDkgQEAgdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl8KICAg
ICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJv
bGxlclByb3h5OjpNYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwuc3Ry
aW5nKCksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMp
LCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQogCi12b2lkIFBsdWdpblByb3h5OjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1
Z2luUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRl
cyksIGxlbmd0aCkpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6Ok1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKSksIG1f
cGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6Om1hbnVhbFN0cmVhbURp
ZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKaW5kZXggMDA4YzIwMjE2ZGU1YjdhMTk3ZjFmMjQyNGExMmU1NjEyYzZmZGU0
MC4uM2YxYjM5ZWFiN2RhZTA4MTY4ZGQzYTczOGZlZDJiMGRjMDcxNDRiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC04NywxMSArODcs
MTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVh
bVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3
YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggYjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcwZWQzMjAyMS4uM2EwOTY4M2VlYzdh
YTIxZTYxZGVhMTBjODgyOWMzMDc2ODQwN2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRl
OgogICAgIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhf
dCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIG92ZXJyaWRlOwogCkBAIC0y
MzksNyArMjM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25z
ZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKICAgICBtX3BsdWdpblZpZXct
Pm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UobV9zdHJlYW1JRCwgcmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUs
IGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6U3RyZWFt
OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0
cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOwogfQpAQCAtNDA3
LDcgKzQwNyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3BsdWdpbi0+bWFudWFs
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RN
b2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBsdWdpblZpZXc6
Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0
byBpbml0aWFsaXplLgogICAgIGlmICghbV9wbHVnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggODI4ZDMwYTA2ZTlkOGZkZDc4YjU5OGRm
OTBhNjYzOTMxZGEwZThkMy4uNGExZjVhYzU3YTlkNzc1NGU2NDA3OGY3ZGE0MmI1NzZhMzM0Mzlk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29u
c3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0K
IAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIG1hbnVh
bExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKaW5kZXggODU0MWRmM2NiMjIzOWNhZDhhYzdkNTZmM2U0NjJkMGQ1YTcxZWNi
NS4uMGUzNDYzMWFkNmZjMjQ5MWIzZGIyNzZiM2YxNGZkMDYxY2VlOTYwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7
IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZp
bmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRl
eCA5ZGFhYmUxNGEzNGIzYzA5ZjI3ZGM4ZGY1NDMwNGVlNzUzMTY5NWUxLi5iZTQzYzBmZGRiNWUx
NjI3MWFlYThlNWNjMjAyZGM3ZTExYTI2OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFudXAo
KTsKICAgICAKLSAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpOworICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQgZGlkRmluaXNoQmxvYkxvYWRpbmcoKTsKIAogICAg
IHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDogV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQgewpA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50
IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxv
YkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxv
YkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9
CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9i
TG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA4
MzNjODJjNTRkMzdhZTAxNWExODFhN2I5MzI0ZjcwNTMwN2M2OGY0Li5jOGYyNDhhNjQ3NjU3NmEy
OTJjNzVkNWZhYTY4ZjVhYzYzYTQ3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNp
b24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBIVFRQQm9keSB0b0hUVFBCb2R5KGNvbnN0
IEZvcm1EYXRhJiBmb3JtRGF0YSkKICAgICAgICAgSFRUUEJvZHk6OkVsZW1lbnQgZWxlbWVudDsK
IAogICAgICAgICBzd2l0Y2hPbihmb3JtRGF0YUVsZW1lbnQuZGF0YSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgeworICAgICAgICAgICAgWyZdIChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC50eXBlID0g
SFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkRhdGE7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5k
YXRhID0gYnl0ZXM7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggNWVkMjMxYzg1NWMwNTllZGFmNzM0ODFkNTBiOTMxOGU0ZWU2MjEwMi4uNWRhMmJi
OWY0YTJkN2Q0MjNiZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRh
dGEsIGxlbmd0aCk7CkBAIC0xMTgxLDcgKzExODEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiAwKSwgbWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1h
aW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWlu
UmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50
UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZl
cmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDkz
ODZlZmE1OWE1NTU1NjVlMWE0NjRiYmQ3ODJiNzU0Y2VkODE5NDMuLmFhM2E4NjAxNzU3MjY1NDEz
ODUyYTRiOWU4OTU2NGJiNGQxYTNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBm
aW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAg
ICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IDAyOGU4YzZlM2U4ODY0Y2MxNjU1OTBhNDljYmFlZTdkOGJiNmE1
YmIuLjJhYzI1ZGNkMzllNDgwZGY5MzZjNmFlYjc5ZWMyMGFmZWMyZDQ0MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWIKIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgotICAgIFZlY3RvcjxjaGFy
PiBvdmVycmlkZUJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAg
ICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMo
KS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVy
cmlkZUJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG92ZXJyaWRlQnVmZmVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDQ3ZTNjYTk2ZTkz
YzUxNDE4NDJhNzMzYmFkMTI2NGNiZjE1MjQ5MjEuLmRkYzA3MWIzYTI2YWY4MjhlYzdjNDYzZDUx
YzcxMzgwZTU3ZTkwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwg
Y29uc3QgdWludDhfdCogZGF0YSkKICAgICB9CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRh
dGFQYXlsb2FkQnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwg
c2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKICAgICBwcm9jZXNz
TmV4dFBlbmRpbmdUYXNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bS5oCmluZGV4IGM1MzYyNWExODgzOGZkMGQyNzNmNmI0NjRlOTZjMDNhYWNjMDBjMDkuLjE1MjAw
ZWNkOTE5MjY4YzM0MDdkOTE5YzA2NjcxOGM5MzI0NjE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydFN0cmVhbVdpdGhSZXNwb25zZShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiAKICAgICAv
LyBGSVhNRTogQ2FuIHRoZXNlIGJlIG1hZGUgcHJpdmF0ZT8KLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCmluZGV4IDU3YWE0YTgyZDZhNjcxODE1ZTQzYmE4MDU5NDg2Yjc1NjVlNTBlNjkuLjA4NjE1
ZTQ5ZjUxMzAzYTRmNTljYWQwNTM5Y2ZmZTdkOWEwNWIwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIEhvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbShOU1VSTCAqcmVzcG9uc2VVUkwsIGxvbmcg
bG9uZyBleHBlYwogICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oW2hlYWRlcnMgYnl0ZXNdKSksIFtoZWFkZXJzIGxlbmd0
aF0pOwogfQogICAgICAgICAgICAgICAgICAgICAgCi12b2lkIEhvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBfV0tQSFN0
cmVhbURpZFJlY2VpdmVEYXRhKG1faW5zdGFuY2UtPmhvc3RQcm94eSgpLT5wb3J0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5wbHVnaW5JRCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJlYW1JRCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGJ5dGVzKSksIGxlbmd0aCk7CiB9CiAgICAgCiB2b2lkIEhvc3RlZE5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRl
eCA3NTQyNjkzODEyZTc4YjdmODlhOGUzNDQwMzczMzAwOGFmYzNmMjk1Li5lZDBlMzE0M2VmOGMw
NmFjYzk4OGFhMjRhYjg4MjdhMzk4ZjViYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1
ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGg6W0pTRGF0YSBsZW5ndGhdCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogICAgICAgICBzdHJlYW0tPnN0YXJ0U3RyZWFt
V2l0aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAgc3RyZWFtLT5kaWRSZWNlaXZl
RGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pTRGF0YSBieXRlc10pLCBbSlNEYXRh
IGxlbmd0aF0pOworICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVEYXRhKDAsIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0RhdGEgbGVuZ3RoXSk7CiAgICAg
ICAgIHN0cmVhbS0+ZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJI
b3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNzYxMTcxY2VhN2NhNWZhNjcyOGM5ZGMw
MGQyZWI3YjJkMThmNzc4MC4uNjRjMjc3YjVmNDNkMTUxYmRhNDE1YmVjOWI1OWQ1ZjNjY2ZjMDg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTE5LDcg
KzUxOSw3IEBAIC0gKHZvaWQpcGx1Z2luVmlldzooTlNWaWV3ICopcGx1Z2luVmlldyByZWNlaXZl
ZERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChIb3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbSogbWFudWFsU3RyZWFtID0gX3Byb3h5LT5tYW51YWxTdHJl
YW0oKSkKLSAgICAgICAgbWFudWFsU3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgICAgIG1h
bnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKXBsdWdpblZpZXc6
KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKaW5kZXggMmJjOTc4ZDM0MDNmNzNmMWMwNjNkZjI1MjM0M2M1YjgzZWMxMzA2
Yy4uMTkzOTBiNWMwMmE3NWY3OWY5NjZmODFhNDFhMmQ3MDU2NTc4ZjA4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95U3RyZWFt
V2l0aEVycm9yKE5TRXJyb3IgKik7CiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGJlIG1hZGUg
cHJpdmF0ZT8KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCBmODg5MGQwNTE2
YjIxMmFjZmU3Njk2NjQyNWRlNTQ0MTA0YzlhNjk0Li40YjRkZGMwMDRhMjZhM2VhNjQ5YzI2OTE1
ODE0ZTU2NjIwYzk1NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KQEAgLTYxMSw3ICs2MTEsNyBA
QCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKikKICAgICBkZXN0cm95U3RyZWFtV2l0aFJlYXNvbihOUFJFU19E
T05FKTsKIH0KIAotdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkKK3ZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7
CiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05v
Q29weToodm9pZCopYnl0ZXMgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbQppbmRleCAzM2JhNTdjMTU1ZjE4YTcyMGNmYzc5ZDQ2YWYzNTVkNzhlMDk1ZTlj
Li5hOGEyZWU4MTcxYTJkYjhkODJjOGJiMDVhOTlkZDAwNDE2OWVhZWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgLSAodm9pZClwbHVnaW5WaWV3OihOU1ZpZXcgKilw
bHVnaW5WaWV3IHJlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogICAgIH0KIAogICAgIGlmIChf
bWFudWFsU3RyZWFtLT5wbHVnaW4oKSkKLSAgICAgICAgX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2
ZURhdGEoMCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBs
ZW5ndGhdKTsKKyAgICAgICAgX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZURhdGEoMCwgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwogfQog
CiAtICh2b2lkKXBsdWdpblZpZXc6KE5TVmlldyAqKXBsdWdpblZpZXcgcmVjZWl2ZWRFcnJvcjoo
TlNFcnJvciAqKWVycm9yCkBAIC0xMTI3LDcgKzExMjcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2
YVNjcmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAgICAgIAogICAgICAgICBz
dHJlYW0tPnN0YXJ0U3RyZWFtV2l0aFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAg
c3RyZWFtLT5kaWRSZWNlaXZlRGF0YSgwLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW0pTRGF0
YSBieXRlc10pLCBbSlNEYXRhIGxlbmd0aF0pOworICAgICAgICBzdHJlYW0tPmRpZFJlY2VpdmVE
YXRhKDAsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbSlNEYXRhIGJ5dGVzXSksIFtKU0Rh
dGEgbGVuZ3RoXSk7CiAgICAgICAgIHN0cmVhbS0+ZGlkRmluaXNoTG9hZGluZygwKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiZDUyMjNhMGNlMTUwY2YzNWEyOGI3
NTUwNDgwMDRjMWZjYjU0YWE2Li4xNTJmZGExZjZlZDU3ZTI5OWFkZTM0ZDA3ZWU4ZGJiNGUyYzFl
ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkg
ZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rv
cnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDYzNDIyMDA1ZmVmNGZiMDlj
ZjY3Y2EyM2RmMTAyY2E3NGM1ZmY5NWEuLjhlMWIyNDdmZjdhMjFlZTdkYjM4MWM2NDBlMTA2NWFi
OGNhYWQyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDA1LDcgKzEwMDUs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQogewogICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhC
eXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwog
ICAgIFtkYXRhU291cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpuc0RhdGEuZ2V0KCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNDEzOWJiNWE5
MTY4M2U2NWFjYzA4MjUzYmVjYjNmZGQwYWJjNjNkOS4uZmQzMTAwMzUwMWZmY2MzYzAxYTkyZjk1
N2JjMzRjZDJkYmExZjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCkBAIC05ODIsNyArOTgyLDcgQEAgLSAodm9pZClfY29tbWl0RGF0YTooTlNEYXRh
ICopZGF0YQogICAgIGF1dG8qIGRvY3VtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1l
bnQoKTsKICAgICBkb2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKF9wcml2YXRlLT5z
aG91bGRDcmVhdGVSZW5kZXJlcnMpOwogCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgY2hhciAqKVtkYXRhIGJ5dGVz
XSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgdWludDhfdCopW2RhdGEgYnl0ZXNdLCBb
ZGF0YSBsZW5ndGhdKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDViMWJmYjJkMzQxNzRjNjhhMmI0MGJkNGM3ZDFhZGI4ZDMyOWQ1ZjkuLjRkMDQwZjU2NDZl
YjgyNDFhOTJiYzdjMmRjNzhmNmRmZDk2ZGFkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBs
ZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4YWE3YWEzMWZlODI1ZWM3
OTVjZjFiM2UzZmIzZTUzYmZlNmI4NzlmLi42ZGFjMGIwNTIxODM5MTY2MjA4OTY0MWY2NWFlOTQy
YzI5Yjg5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMiw3ICsxMTIsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMWNhOGQzOGQ1MzUzMzg0NzQwOTdiYjQ5MDYwNDUzZTY1MjljOTNhOS4uOTJiN2JkNGIwMjI5
YzRlNDNmNTE0NTMwZDRiMjU1ZDgwYzUxZTY1NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFZlY3Rvcjx1aW50OF90
PiBpbnN0ZWFkIG9mIFZlY3RvcjxjaGFyPiB0byBzdG9yZSBieXRlcyBpbiBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMwor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBWZWN0b3I8
dWludDhfdD4gaW5zdGVhZCBvZiBWZWN0b3I8Y2hhcj4gdG8gc3RvcmUgYnl0ZXMgaW4gU2hhcmVk
QnVmZmVyLiBBbHNvIGhhdmUgU2hhcmVkQnVmZmVyOjpkYXRhKCkKKyAgICAgICAgcmV0dXJuIGEg
YGNvbnN0IHVpbnQ4X3QqYCBpbnN0ZWFkIG9mIGBjb25zdCBjaGFyKmAuIFRoaXMgaXMgb3VyIHBy
ZWZlcnJlZCB0eXBlIHRvIHN0b3JlIGJ5dGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tCdWZmZXIpOgorCiAyMDIxLTA2
LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgTWFrZSBhdHRyaWJ1dGVkQnVuZGxlSWRlbmRpZmllciBhIHByb3BlcnR5IGZvciBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGluc3RlYWQgb2YgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggYmVjN2QxMTllYTgxOWIwMTk5YTg3M2YwMjA3NjZkNDE5MjAxYWMyYS4uZWE3
MzJhOGUwZTBjMjZjOWQ5MGExMjM1OTQwYWNkZTU3ZTIxNjNhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEwMyw5ICsx
MDMsOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwotICAgIFZlY3Rv
cjxjaGFyPiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMigw
eDQwMDAsICdjJyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwor
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3Ro
ICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQp
CitzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQogewogICAgIC8vIGV4cGVjdGVkIGlz
IG51bGwgdGVybWluYXRlZCwgYnVmZmVyIGlzIG5vdC4KICAgICBzaXplX3QgbGVuZ3RoID0gc3Ry
bGVuKGV4cGVjdGVkKTsKQEAgLTE3MSw5ICsxNzEsOSBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZl
cihjb25zdCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4
cAogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9y
PGNoYXI+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPGNoYXI+IHMyID0g
eydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPGNoYXI+IHMzID0geydpJywgJ2onLCAn
aycsICdsJ307CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307CiAgICAgCiAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczEpKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7Ci0gICAg
YXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8Y2hhcj4+JiYgY29udGVudHMpIHsK
KyAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250
ZW50cykgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQogICAgICAgICAgICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CkBAIC0yMDksNyArMjA5LDcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBi
dWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8Y2hhcj4oeydhJywg
J2InLCAnYycsICdkJ30pKTsKKyAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsn
YScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7
CiAgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwogICAgIEVY
UEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnfX0pLmdldCgpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgaXNFcXVhbFRvKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJp
bmcpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsK
ICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>