<?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>234520</bug_id>
          
          <creation_ts>2021-12-20 12:09:04 -0800</creation_ts>
          <short_desc>Ensure file handles used in FileSystemAccess API are closed</short_desc>
          <delta_ts>2021-12-23 10:38:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825676</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-20 12:09:04 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825686</commentid>
    <comment_count>1</comment_count>
      <attachid>447617</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-20 12:28:43 -0800</bug_when>
    <thetext>Created attachment 447617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825688</commentid>
    <comment_count>2</comment_count>
      <attachid>447619</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-20 12:38:27 -0800</bug_when>
    <thetext>Created attachment 447619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825915</commentid>
    <comment_count>3</comment_count>
      <attachid>447619</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 01:17:20 -0800</bug_when>
    <thetext>Comment on attachment 447619
Patch

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

&gt; Source/WTF/wtf/CrossThreadCopier.h:182
&gt; +    static Type copy(Type&amp;&amp; source)
&gt; +    {
&gt; +        return std::make_pair(CrossThreadCopier&lt;F&gt;::copy(WTFMove(source.first)), CrossThreadCopier&lt;S&gt;::copy(WTFMove(source.second)));
&gt; +    }

Do we really want to call a cross-thread move operation &quot;copy&quot;? Maybe there’s no way to avoid it, but it seems wrong.

&gt; Source/WebCore/dom/ExceptionOr.h:222
&gt; +    static Type copy(Type&amp;&amp; source)

Same thought. This is a move, not a a copy, I think.

&gt; Source/WebCore/platform/FileHandle.h:37
&gt; +    WTF_MAKE_NONCOPYABLE(FileHandle);

I am not sure it’s better to use this macro than deleting the copy and assignment operators. We invented this macro back when there was no simple way to write this in a class. I kind of wish we didn’t use a macro for this, since it’s now a pretty simple idiom.

&gt; Source/WebCore/platform/FileHandle.h:39
&gt; +    static FileHandle adopt(FileSystem::PlatformFileHandle&amp;);

This should take an rvalue reference, not an lvalue reference. That way we can pass it a file handle returned by a function, and don’t require using a local variable for it.

&gt; Source/WebCore/platform/FileHandle.h:56
&gt; +    FileHandle isolatedCopy() &amp;&amp;;

This operation is a move, not a copy, I think. Not sure it should be named isolatedCopy.

&gt; Source/WebCore/platform/FileHandle.h:59
&gt; +    FileHandle(FileSystem::PlatformFileHandle);

This function should take an rvalue reference, and I think should do the same thing as adopt. In fact, given this can take an rvalue reference, I think we can do away with the named adopt function entirely. You’ll be able to see the adoption because the caller will use WTFMove or std::exchange.

&gt; Source/WebKit/Platform/IPC/SharedFileHandle.h:39
&gt; +    static std::optional&lt;SharedFileHandle&gt; create(FileSystem::PlatformFileHandle&amp;);

This should take an rvalue reference, not an lvalue reference. That way we can pass it a file handle returned by a function, and don’t require using a local variable for it.

&gt; Source/WebKit/Platform/IPC/SharedFileHandle.h:48
&gt; +    explicit SharedFileHandle(FileSystem::PlatformFileHandle&amp; handle)

This should take an rvalue reference, not an lvalue reference.

&gt; Source/WebKit/Platform/IPC/cocoa/SharedFileHandleCocoa.cpp:34
&gt; +std::optional&lt;SharedFileHandle&gt; SharedFileHandle::create(FileSystem::PlatformFileHandle&amp; handle)

This should take an rvalue reference, not an lvalue reference.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:152
&gt; +        auto resultValue = WTFMove(result.value());

Why do we have to move this into a local variable? Can’t we just use a reference to it in place rather than moving it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825916</commentid>
    <comment_count>4</comment_count>
      <attachid>447619</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 01:17:44 -0800</bug_when>
    <thetext>Comment on attachment 447619
Patch

This seems like an important bug fix. Can we write a test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825918</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-21 01:24:14 -0800</bug_when>
    <thetext>Looks good to me as well.
I do not really like using a PlatformFileHandle&amp;.
I would be tempted to keep using PlatformFileHandle instead even though it leaves some valid PlatformFileHandle that are adopted by FileHandle.
This seems inline with other C++ movable constructs like optional.
Or use &amp;&amp; as Darin mentionned.
 
View in context: https://bugs.webkit.org/attachment.cgi?id=447619&amp;action=review

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:91
&gt; +    WorkerGlobalScope::postFileSystemStorageTask([weakThis = WeakPtr { *this }, file = m_file.get(), size, workerThread = Ref { scope-&gt;thread() }]() mutable {

m_file.handle() reads better to me here.

&gt; Source/WebCore/platform/FileHandle.cpp:-62
&gt; -    close();

Are we sure this is not needed by some other code path?

&gt; Source/WebCore/platform/FileHandle.cpp:165
&gt; +const FileSystem::PlatformFileHandle&amp; FileHandle::get() const

get is a bit mysterious, can we rename it to handle, or platformFileHandle?

&gt; Source/WebCore/platform/FileHandle.h:-48
&gt; -

I would keep this empty line.

&gt; Source/WebCore/platform/FileHandle.h:55
&gt; +    const FileSystem::PlatformFileHandle&amp; get() const;

I would think returning by value to be good enough, since fileHandle is probably either an int or a pointer.

&gt; Source/WebCore/platform/FileHandle.h:59
&gt; +    FileHandle(FileSystem::PlatformFileHandle);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826414</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-22 15:12:01 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 447619 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447619&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/CrossThreadCopier.h:182
&gt; &gt; +    static Type copy(Type&amp;&amp; source)
&gt; &gt; +    {
&gt; &gt; +        return std::make_pair(CrossThreadCopier&lt;F&gt;::copy(WTFMove(source.first)), CrossThreadCopier&lt;S&gt;::copy(WTFMove(source.second)));
&gt; &gt; +    }
&gt; 
&gt; Do we really want to call a cross-thread move operation &quot;copy&quot;? Maybe
&gt; there’s no way to avoid it, but it seems wrong.

Yes this might be confusing; I made the change so that crossThreadCopy() can be applied on FileHandle in WorkerFileSystemConnection. I will revert this change.

&gt; 
&gt; &gt; Source/WebCore/dom/ExceptionOr.h:222
&gt; &gt; +    static Type copy(Type&amp;&amp; source)
&gt; 
&gt; Same thought. This is a move, not a a copy, I think.

Will revert it.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:37
&gt; &gt; +    WTF_MAKE_NONCOPYABLE(FileHandle);
&gt; 
&gt; I am not sure it’s better to use this macro than deleting the copy and
&gt; assignment operators. We invented this macro back when there was no simple
&gt; way to write this in a class. I kind of wish we didn’t use a macro for this,
&gt; since it’s now a pretty simple idiom.

Sure, will change to use copy and assignment operators.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:39
&gt; &gt; +    static FileHandle adopt(FileSystem::PlatformFileHandle&amp;);
&gt; 
&gt; This should take an rvalue reference, not an lvalue reference. That way we
&gt; can pass it a file handle returned by a function, and don’t require using a
&gt; local variable for it.

Sounds good.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:56
&gt; &gt; +    FileHandle isolatedCopy() &amp;&amp;;
&gt; 
&gt; This operation is a move, not a copy, I think. Not sure it should be named
&gt; isolatedCopy.

Will remove this.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:59
&gt; &gt; +    FileHandle(FileSystem::PlatformFileHandle);
&gt; 
&gt; This function should take an rvalue reference, and I think should do the
&gt; same thing as adopt. In fact, given this can take an rvalue reference, I
&gt; think we can do away with the named adopt function entirely. You’ll be able
&gt; to see the adoption because the caller will use WTFMove or std::exchange.

Sounds good.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/SharedFileHandle.h:39
&gt; &gt; +    static std::optional&lt;SharedFileHandle&gt; create(FileSystem::PlatformFileHandle&amp;);
&gt; 
&gt; This should take an rvalue reference, not an lvalue reference. That way we
&gt; can pass it a file handle returned by a function, and don’t require using a
&gt; local variable for it.

Sure.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/SharedFileHandle.h:48
&gt; &gt; +    explicit SharedFileHandle(FileSystem::PlatformFileHandle&amp; handle)
&gt; 
&gt; This should take an rvalue reference, not an lvalue reference.

Will change.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/cocoa/SharedFileHandleCocoa.cpp:34
&gt; &gt; +std::optional&lt;SharedFileHandle&gt; SharedFileHandle::create(FileSystem::PlatformFileHandle&amp; handle)
&gt; 
&gt; This should take an rvalue reference, not an lvalue reference.

Will change.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:152
&gt; &gt; +        auto resultValue = WTFMove(result.value());
&gt; 
&gt; Why do we have to move this into a local variable? Can’t we just use a
&gt; reference to it in place rather than moving it?

We can; will make the change.

(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 447619 [details]
&gt; Patch
&gt; 
&gt; This seems like an important bug fix. Can we write a test?

There&apos;s an existing test for this, where we open many files via the API, and if files are not closed properly, the process will run out of file descriptors and test would fail. We used to close the file handles manually after use so the test can pass; this patch makes sure the file will be closed and we don&apos;t need to manage the close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826418</commentid>
    <comment_count>7</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-22 15:23:20 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Looks good to me as well.
&gt; I do not really like using a PlatformFileHandle&amp;.
&gt; I would be tempted to keep using PlatformFileHandle instead even though it
&gt; leaves some valid PlatformFileHandle that are adopted by FileHandle.
&gt; This seems inline with other C++ movable constructs like optional.
&gt; Or use &amp;&amp; as Darin mentionned.

Will update as Darin suggested.

&gt;  
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447619&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:91
&gt; &gt; +    WorkerGlobalScope::postFileSystemStorageTask([weakThis = WeakPtr { *this }, file = m_file.get(), size, workerThread = Ref { scope-&gt;thread() }]() mutable {
&gt; 
&gt; m_file.handle() reads better to me here.

Okay, will change.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.cpp:-62
&gt; &gt; -    close();
&gt; 
&gt; Are we sure this is not needed by some other code path?

ah nice catch; I think we need to keep this.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.cpp:165
&gt; &gt; +const FileSystem::PlatformFileHandle&amp; FileHandle::get() const
&gt; 
&gt; get is a bit mysterious, can we rename it to handle, or platformFileHandle?

Sure.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:-48
&gt; &gt; -
&gt; 
&gt; I would keep this empty line.

Sure.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:55
&gt; &gt; +    const FileSystem::PlatformFileHandle&amp; get() const;
&gt; 
&gt; I would think returning by value to be good enough, since fileHandle is
&gt; probably either an int or a pointer.

Okay.

&gt; 
&gt; &gt; Source/WebCore/platform/FileHandle.h:59
&gt; &gt; +    FileHandle(FileSystem::PlatformFileHandle);
&gt; 
&gt; explicit

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826423</commentid>
    <comment_count>8</comment_count>
      <attachid>447838</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-22 15:40:49 -0800</bug_when>
    <thetext>Created attachment 447838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826492</commentid>
    <comment_count>9</comment_count>
      <attachid>447860</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-22 21:42:47 -0800</bug_when>
    <thetext>Created attachment 447860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826570</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-23 10:37:45 -0800</bug_when>
    <thetext>Committed r287405 (245540@main): &lt;https://commits.webkit.org/245540@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447860.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826571</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-23 10:38:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/86857459&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447617</attachid>
            <date>2021-12-20 12:28:43 -0800</date>
            <delta_ts>2021-12-20 12:50:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234520-20211220122842.patch</filename>
            <type>text/plain</type>
            <size>30918</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhZGNhN2JkNDgzNWUxYjM3MGEzNWFj
MjkxYThiMDI0MjMzNjBkZTguLmQ4YzI0ZjIyYjY0NDkyMmY4OTc3NDJkYmQxZjBiN2M5Zjg1NWQ1
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5zdXJlIGZpbGUgaGFuZGxlcyB1c2VkIGluIEZpbGVT
eXN0ZW1BY2Nlc3MgQVBJIGFyZSBjbG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisKIDIwMjEtMTIt
MTcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGN1c3Rv
bSBjb3B5KCkgbWV0aG9kIGZvciBSZWY8VD4gdG8gQ3Jvc3NUaHJlYWRDb3BpZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzYTdmYmE1NzlhYzU0NWMwOTdlZjA1Yjg3MDcwMDY1OGFiODQxNmQzLi40MzdkZmI2YjEw
NmNkZDVlODFhOGE0MDI2OTdhNGQ5YzI5ZmEzNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMjEtMTItMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5zdXJlIGZpbGUgaGFuZGxlcyB1c2VkIGluIEZpbGVTeXN0ZW1BY2Nlc3MgQVBJIGFyZSBj
bG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YkNvcmU6OkZpbGVIYW5kbGUgY2xvc2VzIGZpbGUgaGFuZGxlIGluIGl0cyBkZXN0cnVjdG9yLiBS
ZXBsYWNlIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB3aXRoIAorICAgICAgICBXZWJD
b3JlOjpGaWxlSGFuZGxlIGluIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIGFuZCBXb3JrZXJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gdG8gZW5zdXJlIGZpbGUgaGFuZGxlIAorICAgICAg
ICBnZXQgY2xvc2VkIGlmIHdvcmtlciB0aHJlYWQgZmFpbHMgdG8gZXhlY3V0ZSB0aGUgY2FsbGJh
Y2sgb2YgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZSwgYW5kIGlmIAorICAgICAgICBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZSBpcyBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp3cml0ZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmRp
ZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmg6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
RmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjphZG9wdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVIYW5kbGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxl
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6b3Blbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVIYW5kbGU6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisKIDIwMjEtMTItMTcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBXaWR0
aEl0ZXJhdG9yOjphcHBseUNTU1Zpc2liaWxpdHlSdWxlcygpIHRvIGJlIGEgbGl0dGxlIG1vcmUg
ZWxlZ2FudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzZDc1OTVmNjkwZmVmYWI0M2JjNDAzMWVlMGM4YzE1NmM3ZGRm
OTA3Li44OTdkMThlMGIxOGU3MzZjY2ExMWE2MDM4NmU4YmUwMDU1YTVhYjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDIxLTEyLTIwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIEVuc3VyZSBmaWxlIGhhbmRsZXMgdXNlZCBpbiBGaWxlU3lzdGVtQWNj
ZXNzIEFQSSBhcmUgY2xvc2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ1MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB3aXRoIFdl
YkNvcmU6OkZpbGVIYW5kbGUgaW4gU2hhcmVkRmlsZUhhbmRsZSB0byBlbnN1cmUgZmlsZSBoYW5k
bGUgZ2V0IAorICAgICAgICBjbG9zZWQsIGlmIGl0J3Mgbm90IHJlbGVhc2VkIGZvciB1c2UuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU3luY0Fj
Y2Vzc0hhbmRsZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAoSVBD
OjpTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0v
SVBDL1NoYXJlZEZpbGVIYW5kbGUuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6
cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OlNoYXJlZEZpbGVIYW5k
bGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpoYW5kbGUpOiBEZWxldGVkLgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvU2hhcmVk
RmlsZUhhbmRsZUNvY29hLmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisKIDIwMjEtMTItMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQVBJOjpP
YmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2VHcm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgK
aW5kZXggMDFkMmE3NzYzM2IwYjAyY2Y0ZGY1MjUwZmZkMjM0Y2JmMDM5N2I4Ny4uODM4N2U2OWEx
Y2JmNjlmOTI0YzRlODMxY2ZlZWJiNTJhOTUzYjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENv
cGllci5oCkBAIC0xNzUsNiArMTc1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1l
IFM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6CiAgICAg
ewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoQ3Jvc3NUaHJlYWRDb3BpZXI8Rj46OmNv
cHkoc291cmNlLmZpcnN0KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8Uz46OmNvcHkoc291cmNlLnNlY29u
ZCkpOwogICAgIH0KKworICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlwZSYmIHNvdXJjZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29w
eShXVEZNb3ZlKHNvdXJjZS5maXJzdCkpLCBDcm9zc1RocmVhZENvcGllcjxTPjo6Y29weShXVEZN
b3ZlKHNvdXJjZS5zZWNvbmQpKSk7CisgICAgfQogfTsKIAogLy8gRGVmYXVsdCBzcGVjaWFsaXph
dGlvbiBmb3Igc3RkOjpvcHRpb25hbCBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vz
cy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKaW5kZXggZGYyZDUxYTI4NmY5NmYyZDc5YzFjNWI1
ZWIzZGM0MTlkZTBhM2E3My4uMGU5NWZmZGVlNGFmODU0ZTg3ZTI1M2E5Y2RlODYzNDJmNWEyZWRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCkBAIC03OSwxNyArNzksMTYgQEAg
dm9pZCBGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMSW50ZXJmYWMKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVj
dChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIAogICAgICAgICBhdXRvIFtpZGVudGlmaWVy
LCBmaWxlXSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgaWYgKGZpbGUg
PT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgaWYgKCFm
aWxlKQogICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25v
d25FcnJvciwgIkludmFsaWQgcGxhdGZvcm0gZmlsZSBoYW5kbGUiX3MgfSk7CiAKICAgICAgICAg
YXV0byogY29udGV4dCA9IHByb3RlY3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZSk7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jbG9zZVN5bmNBY2Nlc3NIYW5k
bGUoaWRlbnRpZmllciwgeyB9KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQgaGFzIHN0b3BwZWQiX3MgfSk7
CiAgICAgICAgIH0KIAotICAgICAgICBwcm9taXNlLnJlc29sdmUoRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGU6OmNyZWF0ZSgqY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgaWRlbnRpZmll
ciwgZmlsZSkpOworICAgICAgICBwcm9taXNlLnJlc29sdmUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGU6OmNyZWF0ZSgqY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgaWRlbnRpZmllciwg
V1RGTW92ZShmaWxlKSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmgKaW5kZXggMTM3YmI0OGI2YTQ5MDRlNDlmNWE1YzNjMDk0NzMyMTgwNmY3
YWVhMy4uNmVjYmJiMmMwZGExOWE0YzM4MzM2ZWMzMTdlYjljOWFjMWJkMGFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFj
Y2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU7CiBjbGFz
cyBGaWxlU3lzdGVtRmlsZUhhbmRsZTsKK2NsYXNzIEZpbGVIYW5kbGU7CiBjbGFzcyBGaWxlU3lz
dGVtSGFuZGxlQ2xvc2VTY29wZTsKIGNsYXNzIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOwog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwpAQCAtNDgsNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgU2FtZUVudHJ5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYpPjsKICAgICB1c2luZyBHZXRIYW5kbGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1IYW5kbGVD
bG9zZVNjb3BlPj4mJik+OwogICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpPjsKLSAgICB1c2luZyBH
ZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8c3RkOjpwYWlyPEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlPj4mJik+OworICAgIHVzaW5nIEdldEFjY2Vzc0hhbmRs
ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlSGFuZGxlPj4mJik+Owog
ICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+OwogICAgIHVzaW5nIEdldEhhbmRsZU5hbWVzQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKT47CiAgICAgdXNp
bmcgU3RyaW5nQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFN0
cmluZz4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAKaW5k
ZXggYzlmZTM1MGIxZjViYmU1NTdjZjBhYzRlN2M1ODZlM2RlMzc5YTQzOS4uOTg1MGNiNzMwMDYw
YTNhNTQwZDFlMDk2NDVhY2RhNzRlMzI4YWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU+IEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5
c3RlbUZpbGVIYW5kbGUmIHNvdXJjZSwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlKQorUmVm
PEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlSGFu
ZGxlJiBzb3VyY2UsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBGaWxlSGFuZGxlJiYgZmlsZSkKIHsKLSAgICBhdXRvIGhhbmRsZSA9IGFkb3B0UmVmKCpu
ZXcgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoY29udGV4dCwgc291cmNlLCBpZGVudGlmaWVy
LCBmaWxlKSk7CisgICAgYXV0byBoYW5kbGUgPSBhZG9wdFJlZigqbmV3IEZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlKGNvbnRleHQsIHNvdXJjZSwgaWRlbnRpZmllciwgV1RGTW92ZShmaWxlKSkp
OwogICAgIGhhbmRsZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0K
IAotRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlSGFuZGxlJiBz
b3VyY2UsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSkKK0ZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUhhbmRsZSYgc291cmNlLCBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZUhhbmRsZSYmIGZpbGUpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZmlsZShmaWxlKQorICAgICwgbV9m
aWxlKFdURk1vdmUoZmlsZSkpCiB7Ci0gICAgQVNTRVJUKG1fZmlsZSAhPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBBU1NFUlQobV9maWxlKTsKIAogICAgIG1f
c291cmNlLT5yZWdpc3RlclN5bmNBY2Nlc3NIYW5kbGUobV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5j
YXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBET01Qcm9taXNlRGVmCiAgICAgICAgIHJldHVy
biBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQg
aXMgaW52YWxpZCJfcyB9KTsKIAogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3Zl
KHByb21pc2UpKTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdl
VGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgc2l6ZSwg
d29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAg
V29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUuZ2V0KCksIHNpemUsIHdvcmtlclRocmVh
ZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgewogICAgICAgICB3b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
c3VjY2VzcyA9IEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlLCBzaXplKV0oYXV0byYpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNp
Z25lZExvbmdMb25nPgogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGludmFsaWQiX3MgfSk7CiAKICAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgV29ya2VyR2xvYmFs
U2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQo
KSB9XSgpIG11dGFibGUgeworICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0
b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLmdl
dCgpLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmaWxlKV0oYXV0
byYpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHVpbnQ2NF90
PiB7IHN1Y2Nlc3MudmFsdWUoKSB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOwpAQCAt
MTI0LDcgKzEyNCw3IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmZsdXNoKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybiBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQgaXMgaW52YWxp
ZCJfcyB9KTsKIAogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3ZlKHByb21pc2Up
KTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgd29ya2VyVGhyZWFkID0g
UmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgV29ya2VyR2xvYmFsU2Nv
cGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGZpbGUgPSBtX2ZpbGUuZ2V0KCksIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJl
YWQoKSB9XSgpIG11dGFibGUgewogICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3VjY2VzcyA9IEZpbGVTeXN0ZW06
OmZsdXNoRmlsZShmaWxlKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/
IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKQEAg
LTE0OSwyMCArMTQ5LDE5IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3Nl
SW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIGlmIChpc0Nsb3NpbmcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2ZpbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZSk7CiAgICAgY2xvc2VGaWxl
KCk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlRmlsZSgpCiB7
Ci0gICAgaWYgKG1fZmlsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgIGlmICghbV9maWxlKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBzY29wZSA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChzY29wZSk7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0
ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IHN0ZDo6
ZXhjaGFuZ2UobV9maWxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSwg
d29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6
cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
ZmlsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9maWxlLCB7IH0pLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBz
Y29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKGF1dG8mKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+ZGlkQ2xvc2VGaWxlKCk7CkBAIC0yMTIsMTEgKzIxMSwxMSBAQCBFeGNlcHRpb25Pcjx1bnNp
Z25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKEJ1ZmZlclNv
dXJjZSYmCiAgICAgaWYgKCFtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVu
ZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07CiAKLSAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUobV9maWxlLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6
QmVnaW5uaW5nKTsKKyAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxl
LmdldCgpLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5n
KTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gcmVhZCBhdCBvZmZzZXQiX3MgfTsKIAotICAgIHJl
c3VsdCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGUsIGJ1ZmZlci5tdXRhYmxlRGF0
YSgpLCBidWZmZXIubGVuZ3RoKCkpOworICAgIHJlc3VsdCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9t
RmlsZShtX2ZpbGUuZ2V0KCksIGJ1ZmZlci5tdXRhYmxlRGF0YSgpLCBidWZmZXIubGVuZ3RoKCkp
OwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byByZWFkIGZyb20gZmlsZSJfcyB9OwogCkBAIC0yMzMs
MTEgKzIzMiwxMSBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlOjp3cml0ZShCdWZmZXJTb3VyY2UmJgogICAgIGlmICghbV9wZW5kaW5n
UHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhhcyB1bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9Owog
Ci0gICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5h
dCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CisgICAgaW50IHJlc3Vs
dCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZS5nZXQoKSwgb3B0aW9ucy5hdCwgRmlsZVN5
c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRv
IHdyaXRlIGF0IG9mZnNldCJfcyB9OwogCi0gICAgcmVzdWx0ID0gRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9maWxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkpOworICAgIHJlc3Vs
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLmxlbmd0aCgpKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gd3JpdGUgdG8gZmlsZSJf
cyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCmluZGV4IGIwN2I5
NDAzMDAyZDdkMWRlOWFkOGEwNDA1YmQ4YTliNjY0ZmMxOWMuLjRhZDA1MjM1OGY1ZjRmZDI4OWVl
YTcwNjIyMWQ5ZTAwMjgxODNjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAj
aW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNs
dWRlICJGaWxlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YXQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSk7CisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhhbmRsZSYsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZUhhbmRsZSYmKTsKICAgICB+
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoKTsKIAogICAgIHZvaWQgdHJ1bmNhdGUodW5zaWdu
ZWQgbG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKQEAgLTU5LDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiBwcml2YXRlOgotICAg
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxl
U3lzdGVtRmlsZUhhbmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGUmJik7CiAgICAg
Ym9vbCBpc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0OwogICAgIHVzaW5nIENsb3NlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPjsKICAgICB2b2lk
IGNsb3NlSW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmKTsKQEAgLTc1LDcgKzc2LDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlZjxGaWxlU3lzdGVtRmlsZUhhbmRsZT4gbV9zb3VyY2U7CiAgICAgRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlOworICAgIEZpbGVIYW5kbGUgbV9maWxlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IG1fY2xvc2VSZXN1bHQ7CiAgICAg
VmVjdG9yPENsb3NlQ2FsbGJhY2s+IG1fY2xvc2VDYWxsYmFja3M7CiAgICAgdXNpbmcgUHJvbWlz
ZSA9IHN0ZDo6dmFyaWFudDxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4sIERPTVByb21pc2VEZWZl
cnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGNiM2VjZWJkNDE4ZjllZWY5YjRjNjNh
MGJjNGRiMjEwYWU1Y2U3M2QuLjU5ZTBhMjA0MTQ3ZTE1MzEzNGY3Yzg2ODhkZjUwZWI0ZTRlMTQz
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9X
b3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmNvbXBsZXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWUKICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OmRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVu
dGlmaWVyIGNhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlPj4mJiByZXN1bHQpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVu
dGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCBGaWxlSGFuZGxlPj4mJiByZXN1bHQpCiB7CiAgICAgaWYgKGF1dG8gY2FsbGJh
Y2sgPSBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKSkK
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKQEAgLTI1OSwxMCArMjU5LDcgQEAg
dm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRmlsZVN5c3RlbUhhbmRsZUkKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNr
SWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFp
blRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lk
ZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1
bHQpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBjcm9zc1RocmVhZFJlc3VsdCA9IHJlc3Vs
dDsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgY3Jvc3NUaHJlYWRSZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0LmV4Y2VwdGlvbigp
KTsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShb
Y2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKGNyb3NzVGhyZWFkUmVzdWx0KV0g
KGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50
aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpk
ZWZhdWx0TW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAppbmRleCBlNTc3ZmIxYjRjZWZjZTc4NmI0NDdiZWJmYjUwOTVmZWFmZWNjMWRm
Li5hODhlZWQ5OGI4ODE4NzIyNzQ5ZDc2YTVhNTU2YmU1ZWM1YzgxYzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsZUhhbmRsZTsKIGNsYXNzIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFz
cyBXb3JrZXJUaHJlYWQ7CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEdl
dEhhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtSGFu
ZGxlQ2xvc2VTY29wZT4+JiYpOwogICAgIHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZp
ZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAgICB2b2lkIGNvbXBsZXRlU3Ry
aW5nQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxTdHJpbmc+JiYpOwot
ICAgIHZvaWQgZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4
Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZT4+JiYpOworICAgIHZvaWQgZGlkQ3JlYXRl
U3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFp
cjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmKTsK
ICAgICB2b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0
aW9uT3I8dm9pZD4mJiByZXN1bHQpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJh
Y2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V4Y2VwdGlvbk9yLmgKaW5kZXggYmJmZDk2Njg1MDE2MzFmNTEyMmI5NDBkOWIwMDA0MjJlOTll
ZDA1Yy4uYzJlMTY0NmE5OWVkMTAyNTA1ZWFlMWNiNGY0MjJlMmE4NmY2MzA0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTIxOCw2ICsyMTgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdlYkNvcmU6OkV4
Y2VwdGkKICAgICAgICAgICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLmV4Y2VwdGlv
bigpKTsKICAgICAgICAgcmV0dXJuIGNyb3NzVGhyZWFkQ29weShzb3VyY2UucmV0dXJuVmFsdWUo
KSk7CiAgICAgfQorCisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsK
KyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBj
cm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVy
biBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9CiB9
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiA+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKaW5kZXggNzhiNGVlYTllNmY1ZTQyMjVjMGFlYmJkZGY0NjMxYTJlY2QzZGFm
MC4uZjdkNTA4M2MzNTVkOTE4NWIxOTFmN2JkYzdjZDFmMjQ5NDFiODdjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorRmlsZUhhbmRsZSBGaWxlSGFuZGxlOjphZG9wdChGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gRmlsZUhhbmRsZShzdGQ6
OmV4Y2hhbmdlKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkp
OworfQorCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgOiBtX3BhdGggeyBwYXRoIH0KICAgICAsIG1f
bW9kZSB7IG1vZGUgfQpAQCAtNTIsNiArNTcsMTEgQEAgRmlsZUhhbmRsZTo6RmlsZUhhbmRsZShj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlLCBPcHRpb24K
IHsKIH0KIAorRmlsZUhhbmRsZTo6RmlsZUhhbmRsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlKQorICAgIDogbV9maWxlSGFuZGxlKGhhbmRsZSkKK3sKK30KKwogRmlsZUhh
bmRsZTo6fkZpbGVIYW5kbGUoKQogewogICAgIGNsb3NlKCk7CkBAIC01OSwxMCArNjksMTIgQEAg
RmlsZUhhbmRsZTo6fkZpbGVIYW5kbGUoKQogCiBGaWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVy
YXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogewotICAgIGNsb3NlKCk7CiAgICAgbV9wYXRoID0g
V1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9kZSA9IFdURk1vdmUob3RoZXIubV9tb2Rl
KTsKICAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwg
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgbV9zaG91bGRMb2Nr
ID0gb3RoZXIubV9zaG91bGRMb2NrOworICAgIG1fbG9ja01vZGUgPSBvdGhlci5tX2xvY2tNb2Rl
OworCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC04NCw4ICs5NiwxMiBAQCBib29sIEZpbGVI
YW5kbGU6Om9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUg
bW9kZSkKIAogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsKKyAgICBpZiAobV9wYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCEqdGhpcykKICAgICAgICAg
bV9maWxlSGFuZGxlID0gbV9zaG91bGRMb2NrID8gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxl
KG1fcGF0aCwgbV9tb2RlLCBtX2xvY2tNb2RlKSA6ICBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3Bh
dGgsIG1fbW9kZSk7CisKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC05Myw2ICsxMDksNyBAQCBpbnQgRmlsZUhhbmRsZTo6cmVhZCh2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1cm4gLTE7CisKICAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3Ro
KTsKIH0KIApAQCAtMTAwLDYgKzExNyw3IEBAIGludCBGaWxlSGFuZGxlOjp3cml0ZShjb25zdCB2
b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1
cm4gLTE7CisKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxl
LCBkYXRhLCBsZW5ndGgpOwogfQogCkBAIC0xMjYsOCArMTQ0LDI3IEBAIHZvaWQgRmlsZUhhbmRs
ZTo6Y2xvc2UoKQogICAgIGlmIChtX3Nob3VsZExvY2sgJiYgKnRoaXMpIHsKICAgICAgICAgLy8g
RmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlIHJlcXVpcmVzIHRoZSBmaWxlIGhhbmRsZSB0
byBiZSB2YWxpZCB3aGlsZSBjbG9zZUZpbGUgZG9lcyBub3QKICAgICAgICAgRmlsZVN5c3RlbTo6
dW5sb2NrQW5kQ2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7Cit9CisKK0ZpbGVI
YW5kbGUgRmlsZUhhbmRsZTo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBGaWxlSGFuZGxlIHJl
c3VsdDsKKyAgICByZXN1bHQubV9wYXRoID0gV1RGTW92ZShtX3BhdGgpLmlzb2xhdGVkQ29weSgp
OworICAgIHJlc3VsdC5tX21vZGUgPSBtX21vZGU7CisgICAgcmVzdWx0Lm1fZmlsZUhhbmRsZSA9
IHN0ZDo6ZXhjaGFuZ2UobV9maWxlSGFuZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKKyAgICByZXN1bHQubV9zaG91bGRMb2NrID0gbV9zaG91bGRMb2NrOworICAg
IHJlc3VsdC5tX2xvY2tNb2RlID0gbV9sb2NrTW9kZTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2NvbnN0IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgRmlsZUhhbmRsZTo6Z2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWxlSGFuZGxlOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKaW5kZXggNTBkODI0Y2Fl
ZTliYTEyNDA5ODQzNWVhNzIxNWQxNTE3ODdkYmNlMS4uNmY1MDQ2ZTgyMWFhNzRjNzg5NWQ0ZTI5
ZGQyNDVmMzZmMTllYTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaApAQCAt
MzQsMTggKzM0LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEZpbGVIYW5kbGUgZmluYWwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbGVIYW5k
bGUpOwogcHVibGljOgorICAgIHN0YXRpYyBGaWxlSGFuZGxlIGFkb3B0KEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSYpOwogICAgIEZpbGVIYW5kbGUoKSA9IGRlZmF1bHQ7CisgICAgfkZp
bGVIYW5kbGUoKTsKICAgICBGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2Rl
Pik7Ci0gICAgRmlsZUhhbmRsZShjb25zdCBGaWxlSGFuZGxlJiBvdGhlcikgPSBkZWxldGU7CiAg
ICAgRmlsZUhhbmRsZShGaWxlSGFuZGxlJiYgb3RoZXIpOwotCi0gICAgfkZpbGVIYW5kbGUoKTsK
LQotICAgIEZpbGVIYW5kbGUmIG9wZXJhdG9yPShjb25zdCBGaWxlSGFuZGxlJiBvdGhlcikgPSBk
ZWxldGU7CiAgICAgRmlsZUhhbmRsZSYgb3BlcmF0b3I9KEZpbGVIYW5kbGUmJiBvdGhlcik7Ci0K
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7CiAKICAgICBib29sIG9wZW4oY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUpOwpAQCAtNTUsNyArNTIs
MTIgQEAgcHVibGljOgogICAgIGJvb2wgcHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBX
VEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBjb25z
dCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGdldCgpOworICAgIEZpbGVIYW5kbGUg
aXNvbGF0ZWRDb3B5KCkgJiY7CisKIHByaXZhdGU6CisgICAgRmlsZUhhbmRsZShGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUpOworCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
IH07CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMDQyOTNmOGM4MDVlZTUwZDk1NjZkYWQ5ZjdmNTRiMGMwNTMwNDFjZC4u
ZTIxODExZTc2Mjg1Nzk0MTIzOGU4NjcxNjZiZDRiODdhMzE4NzgzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5jcHAKQEAgLTM3MSwxMiArMzcxLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW4KICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGF1
dG8gcmVzdWx0ID0gaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7Ci0gICAgYXV0byBm
aWxlSGFuZGxlID0gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkuc2Vjb25kIDogSVBDOjpTaGFyZWRG
aWxlSGFuZGxlKCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLQot
ICAgIC8vIENsb3NlIHRoZSBmaWxlIGhhbmRsZSBpbiBuZXR3b3JrIHByb2Nlc3MuCi0gICAgZmls
ZUhhbmRsZS5jbG9zZSgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Y3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3Nl
U3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKaW5kZXggNjRlNDIx
NzgwMWEyMWYwNWQ4OGI0ZTYxNjhkNzBiODlmOTVhN2UwMy4uZTVlN2VmMGRkNTViMTJiYWYyZGJk
ZTY1ZjIwYmQ1M2IwZDQ1NGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkRmlsZUhhbmRsZS5jcHAKQEAgLTI4LDE1ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgSVBD
IHsKIAotdm9pZCBTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSgpCi17Ci0gICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1faGFuZGxlKTsKLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIAotc3RkOjpv
cHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKQorc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxl
PiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCiB7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkRmlsZUhhbmRsZS5oCmluZGV4IDU4NWFkOTkzNzI3MmMyZDBhYTlkNTM3YzIzN2M4M2E2YjU2
MDhiN2MuLjJjNzcwNWY1YzJiYzU1ODE5MzE2NDczOWFhYjI3ODNhOTAyNGMzNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVIYW5kbGUuaD4K
ICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKQEAgLTM1
LDIyICszNiwyMSBAQCBjbGFzcyBFbmNvZGVyOwogCiBjbGFzcyBTaGFyZWRGaWxlSGFuZGxlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBjcmVh
dGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTaGFyZWRGaWxlSGFuZGxlPiBjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlJik7CiAKICAgICBTaGFyZWRGaWxlSGFuZGxlKCkgPSBkZWZhdWx0OwotICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQotICAg
IHZvaWQgY2xvc2UoKTsKKyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIHJlbGVhc2UoKSB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1faGFuZGxlLCB7IH0pOyB9CiAKICAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4g
ZGVjb2RlKERlY29kZXImKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkRmls
ZUhhbmRsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotICAgICAgICA6
IG1faGFuZGxlKGhhbmRsZSkKKyAgICBleHBsaWNpdCBTaGFyZWRGaWxlSGFuZGxlKEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorICAgICAgICA6IG1faGFuZGxlKFdlYkNv
cmU6OkZpbGVIYW5kbGU6OmFkb3B0KGhhbmRsZSkpCiAgICAgewogICAgIH0KIAotICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIG1faGFuZGxlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvY29jb2EvU2hhcmVkRmlsZUhhbmRsZUNvY29hLmNwcAppbmRleCA2ZGE4ZGVi
NWE2NjFjMWMyYTAwNzhhZGQ0OTI3MWYyYzhiZmM5NjA2Li5mMjE3ZDk4MTMyZWMyN2NiOGZjZjhj
YmRjMjQ2YThlMDhmOTFjNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL1NoYXJlZEZpbGVIYW5kbGVDb2NvYS5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4g
U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUpCitzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6
OmNyZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBy
ZXR1cm4gU2hhcmVkRmlsZUhhbmRsZSB7IGhhbmRsZSB9OwogfQpAQCAtMzksNyArMzksNyBAQCBz
dGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6OmNyZWF0ZShG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbAogdm9pZCBTaGFyZWRGaWxlSGFuZGxlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBtYWNoX3BvcnRfbmFtZV90IGZpbGVwb3J0ID0g
TUFDSF9QT1JUX05VTEw7Ci0gICAgaWYgKGZpbGVwb3J0X21ha2Vwb3J0KG1faGFuZGxlLCAmZmls
ZXBvcnQpID09IC0xKSB7CisgICAgaWYgKGZpbGVwb3J0X21ha2Vwb3J0KG1faGFuZGxlLmdldCgp
LCAmZmlsZXBvcnQpID09IC0xKSB7CiAgICAgICAgIGVuY29kZXIgPDwgTWFjaFBvcnQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbi5jcHAKaW5kZXggM2M4N2UxZjc1NGZjNTkzNGNjYTlhOTI1ODA5NDY4ZDlmZWU4
NGU0YS4uMmZmNGM5ZmQ5YjgyMjNhNWEyMzM1MTg2MWY4OTQzNjk4ZWVjM2UxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE0OSw4ICsx
NDksOCBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0Fj
Y2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogICAgICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb24ocmVz
dWx0LmVycm9yKCkpKTsKIAotICAgICAgICBhdXRvIHJlc3VsdFZhbHVlID0gcmVzdWx0LnZhbHVl
KCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6cGFpciB7IHJlc3VsdFZhbHVlLmZp
cnN0LCByZXN1bHRWYWx1ZS5zZWNvbmQuaGFuZGxlKCkgfSk7CisgICAgICAgIGF1dG8gcmVzdWx0
VmFsdWUgPSBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpwYWlyIHsgcmVzdWx0VmFsdWUuZmlyc3QsIHJlc3VsdFZhbHVlLnNlY29uZC5yZWxl
YXNlKCkgfSk7CiAgICAgfSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="473304"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447619</attachid>
            <date>2021-12-20 12:38:27 -0800</date>
            <delta_ts>2021-12-22 15:40:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234520-20211220123827.patch</filename>
            <type>text/plain</type>
            <size>30924</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhZGNhN2JkNDgzNWUxYjM3MGEzNWFj
MjkxYThiMDI0MjMzNjBkZTguLmQ4YzI0ZjIyYjY0NDkyMmY4OTc3NDJkYmQxZjBiN2M5Zjg1NWQ1
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5zdXJlIGZpbGUgaGFuZGxlcyB1c2VkIGluIEZpbGVT
eXN0ZW1BY2Nlc3MgQVBJIGFyZSBjbG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisKIDIwMjEtMTIt
MTcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGN1c3Rv
bSBjb3B5KCkgbWV0aG9kIGZvciBSZWY8VD4gdG8gQ3Jvc3NUaHJlYWRDb3BpZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzYTdmYmE1NzlhYzU0NWMwOTdlZjA1Yjg3MDcwMDY1OGFiODQxNmQzLi40MzdkZmI2YjEw
NmNkZDVlODFhOGE0MDI2OTdhNGQ5YzI5ZmEzNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMjEtMTItMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5zdXJlIGZpbGUgaGFuZGxlcyB1c2VkIGluIEZpbGVTeXN0ZW1BY2Nlc3MgQVBJIGFyZSBj
bG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YkNvcmU6OkZpbGVIYW5kbGUgY2xvc2VzIGZpbGUgaGFuZGxlIGluIGl0cyBkZXN0cnVjdG9yLiBS
ZXBsYWNlIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB3aXRoIAorICAgICAgICBXZWJD
b3JlOjpGaWxlSGFuZGxlIGluIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIGFuZCBXb3JrZXJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gdG8gZW5zdXJlIGZpbGUgaGFuZGxlIAorICAgICAg
ICBnZXQgY2xvc2VkIGlmIHdvcmtlciB0aHJlYWQgZmFpbHMgdG8gZXhlY3V0ZSB0aGUgY2FsbGJh
Y2sgb2YgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZSwgYW5kIGlmIAorICAgICAgICBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZSBpcyBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp3cml0ZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lz
dGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmRp
ZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmg6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
RmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjphZG9wdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVIYW5kbGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxl
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6b3Blbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVIYW5kbGU6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisKIDIwMjEtMTItMTcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBXaWR0
aEl0ZXJhdG9yOjphcHBseUNTU1Zpc2liaWxpdHlSdWxlcygpIHRvIGJlIGEgbGl0dGxlIG1vcmUg
ZWxlZ2FudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzZDc1OTVmNjkwZmVmYWI0M2JjNDAzMWVlMGM4YzE1NmM3ZGRm
OTA3Li44OTdkMThlMGIxOGU3MzZjY2ExMWE2MDM4NmU4YmUwMDU1YTVhYjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDIxLTEyLTIwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIEVuc3VyZSBmaWxlIGhhbmRsZXMgdXNlZCBpbiBGaWxlU3lzdGVtQWNj
ZXNzIEFQSSBhcmUgY2xvc2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ1MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB3aXRoIFdl
YkNvcmU6OkZpbGVIYW5kbGUgaW4gU2hhcmVkRmlsZUhhbmRsZSB0byBlbnN1cmUgZmlsZSBoYW5k
bGUgZ2V0IAorICAgICAgICBjbG9zZWQsIGlmIGl0J3Mgbm90IHJlbGVhc2VkIGZvciB1c2UuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU3luY0Fj
Y2Vzc0hhbmRsZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAoSVBD
OjpTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0v
SVBDL1NoYXJlZEZpbGVIYW5kbGUuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6
cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OlNoYXJlZEZpbGVIYW5k
bGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpoYW5kbGUpOiBEZWxldGVkLgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvU2hhcmVk
RmlsZUhhbmRsZUNvY29hLmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisKIDIwMjEtMTItMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQVBJOjpP
YmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2VHcm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgK
aW5kZXggMDFkMmE3NzYzM2IwYjAyY2Y0ZGY1MjUwZmZkMjM0Y2JmMDM5N2I4Ny4uODM4N2U2OWEx
Y2JmNjlmOTI0YzRlODMxY2ZlZWJiNTJhOTUzYjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENv
cGllci5oCkBAIC0xNzUsNiArMTc1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1l
IFM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6CiAgICAg
ewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoQ3Jvc3NUaHJlYWRDb3BpZXI8Rj46OmNv
cHkoc291cmNlLmZpcnN0KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8Uz46OmNvcHkoc291cmNlLnNlY29u
ZCkpOwogICAgIH0KKworICAgIHN0YXRpYyBUeXBlIGNvcHkoVHlwZSYmIHNvdXJjZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihDcm9zc1RocmVhZENvcGllcjxGPjo6Y29w
eShXVEZNb3ZlKHNvdXJjZS5maXJzdCkpLCBDcm9zc1RocmVhZENvcGllcjxTPjo6Y29weShXVEZN
b3ZlKHNvdXJjZS5zZWNvbmQpKSk7CisgICAgfQogfTsKIAogLy8gRGVmYXVsdCBzcGVjaWFsaXph
dGlvbiBmb3Igc3RkOjpvcHRpb25hbCBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vz
cy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKaW5kZXggZGYyZDUxYTI4NmY5NmYyZDc5YzFjNWI1
ZWIzZGM0MTlkZTBhM2E3My4uMGU5NWZmZGVlNGFmODU0ZTg3ZTI1M2E5Y2RlODYzNDJmNWEyZWRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCkBAIC03OSwxNyArNzksMTYgQEAg
dm9pZCBGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShET01Qcm9t
aXNlRGVmZXJyZWQ8SURMSW50ZXJmYWMKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVj
dChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIAogICAgICAgICBhdXRvIFtpZGVudGlmaWVy
LCBmaWxlXSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgaWYgKGZpbGUg
PT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgaWYgKCFm
aWxlKQogICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25v
d25FcnJvciwgIkludmFsaWQgcGxhdGZvcm0gZmlsZSBoYW5kbGUiX3MgfSk7CiAKICAgICAgICAg
YXV0byogY29udGV4dCA9IHByb3RlY3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZSk7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jbG9zZVN5bmNBY2Nlc3NIYW5k
bGUoaWRlbnRpZmllciwgeyB9KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQgaGFzIHN0b3BwZWQiX3MgfSk7
CiAgICAgICAgIH0KIAotICAgICAgICBwcm9taXNlLnJlc29sdmUoRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGU6OmNyZWF0ZSgqY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgaWRlbnRpZmll
ciwgZmlsZSkpOworICAgICAgICBwcm9taXNlLnJlc29sdmUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGU6OmNyZWF0ZSgqY29udGV4dCwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgaWRlbnRpZmllciwg
V1RGTW92ZShmaWxlKSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmgKaW5kZXggMTM3YmI0OGI2YTQ5MDRlNDlmNWE1YzNjMDk0NzMyMTgwNmY3
YWVhMy4uNmVjYmJiMmMwZGExOWE0YzM4MzM2ZWMzMTdlYjljOWFjMWJkMGFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFj
Y2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU7CiBjbGFz
cyBGaWxlU3lzdGVtRmlsZUhhbmRsZTsKK2NsYXNzIEZpbGVIYW5kbGU7CiBjbGFzcyBGaWxlU3lz
dGVtSGFuZGxlQ2xvc2VTY29wZTsKIGNsYXNzIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOwog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwpAQCAtNDgsNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgU2FtZUVudHJ5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYpPjsKICAgICB1c2luZyBHZXRIYW5kbGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1IYW5kbGVD
bG9zZVNjb3BlPj4mJik+OwogICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpPjsKLSAgICB1c2luZyBH
ZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8c3RkOjpwYWlyPEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlPj4mJik+OworICAgIHVzaW5nIEdldEFjY2Vzc0hhbmRs
ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlSGFuZGxlPj4mJik+Owog
ICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+OwogICAgIHVzaW5nIEdldEhhbmRsZU5hbWVzQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKT47CiAgICAgdXNp
bmcgU3RyaW5nQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFN0
cmluZz4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAKaW5k
ZXggYzlmZTM1MGIxZjViYmU1NTdjZjBhYzRlN2M1ODZlM2RlMzc5YTQzOS4uOTg1MGNiNzMwMDYw
YTNhNTQwZDFlMDk2NDVhY2RhNzRlMzI4YWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU+IEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5
c3RlbUZpbGVIYW5kbGUmIHNvdXJjZSwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlKQorUmVm
PEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlSGFu
ZGxlJiBzb3VyY2UsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBGaWxlSGFuZGxlJiYgZmlsZSkKIHsKLSAgICBhdXRvIGhhbmRsZSA9IGFkb3B0UmVmKCpu
ZXcgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoY29udGV4dCwgc291cmNlLCBpZGVudGlmaWVy
LCBmaWxlKSk7CisgICAgYXV0byBoYW5kbGUgPSBhZG9wdFJlZigqbmV3IEZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlKGNvbnRleHQsIHNvdXJjZSwgaWRlbnRpZmllciwgV1RGTW92ZShmaWxlKSkp
OwogICAgIGhhbmRsZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0K
IAotRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlSGFuZGxlJiBz
b3VyY2UsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSkKK0ZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUhhbmRsZSYgc291cmNlLCBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZUhhbmRsZSYmIGZpbGUpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fZmlsZShmaWxlKQorICAgICwgbV9m
aWxlKFdURk1vdmUoZmlsZSkpCiB7Ci0gICAgQVNTRVJUKG1fZmlsZSAhPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBBU1NFUlQobV9maWxlKTsKIAogICAgIG1f
c291cmNlLT5yZWdpc3RlclN5bmNBY2Nlc3NIYW5kbGUobV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5j
YXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBET01Qcm9taXNlRGVmCiAgICAgICAgIHJldHVy
biBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQg
aXMgaW52YWxpZCJfcyB9KTsKIAogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3Zl
KHByb21pc2UpKTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdl
VGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgc2l6ZSwg
d29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAg
V29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUuZ2V0KCksIHNpemUsIHdvcmtlclRocmVh
ZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgewogICAgICAgICB3b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
c3VjY2VzcyA9IEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlLCBzaXplKV0oYXV0byYpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNp
Z25lZExvbmdMb25nPgogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGludmFsaWQiX3MgfSk7CiAKICAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgV29ya2VyR2xvYmFs
U2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQo
KSB9XSgpIG11dGFibGUgeworICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0
b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLmdl
dCgpLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmaWxlKV0oYXV0
byYpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHVpbnQ2NF90
PiB7IHN1Y2Nlc3MudmFsdWUoKSB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOwpAQCAt
MTI0LDcgKzEyNCw3IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmZsdXNoKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybiBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNvbnRleHQgaXMgaW52YWxp
ZCJfcyB9KTsKIAogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3ZlKHByb21pc2Up
KTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgd29ya2VyVGhyZWFkID0g
UmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgV29ya2VyR2xvYmFsU2Nv
cGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGZpbGUgPSBtX2ZpbGUuZ2V0KCksIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJl
YWQoKSB9XSgpIG11dGFibGUgewogICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3VjY2VzcyA9IEZpbGVTeXN0ZW06
OmZsdXNoRmlsZShmaWxlKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/
IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKQEAg
LTE0OSwyMCArMTQ5LDE5IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3Nl
SW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIGlmIChpc0Nsb3NpbmcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2ZpbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZSk7CiAgICAgY2xvc2VGaWxl
KCk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlRmlsZSgpCiB7
Ci0gICAgaWYgKG1fZmlsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgIGlmICghbV9maWxlKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBzY29wZSA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChzY29wZSk7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0
ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IHN0ZDo6
ZXhjaGFuZ2UobV9maWxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSwg
d29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6
cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
ZmlsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9maWxlLCB7IH0pLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBz
Y29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKGF1dG8mKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+ZGlkQ2xvc2VGaWxlKCk7CkBAIC0yMTIsMTEgKzIxMSwxMSBAQCBFeGNlcHRpb25Pcjx1bnNp
Z25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKEJ1ZmZlclNv
dXJjZSYmCiAgICAgaWYgKCFtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVu
ZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07CiAKLSAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUobV9maWxlLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6
QmVnaW5uaW5nKTsKKyAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxl
LmdldCgpLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5n
KTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gcmVhZCBhdCBvZmZzZXQiX3MgfTsKIAotICAgIHJl
c3VsdCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGUsIGJ1ZmZlci5tdXRhYmxlRGF0
YSgpLCBidWZmZXIubGVuZ3RoKCkpOworICAgIHJlc3VsdCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9t
RmlsZShtX2ZpbGUuZ2V0KCksIGJ1ZmZlci5tdXRhYmxlRGF0YSgpLCBidWZmZXIubGVuZ3RoKCkp
OwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byByZWFkIGZyb20gZmlsZSJfcyB9OwogCkBAIC0yMzMs
MTEgKzIzMiwxMSBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlOjp3cml0ZShCdWZmZXJTb3VyY2UmJgogICAgIGlmICghbV9wZW5kaW5n
UHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhhcyB1bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9Owog
Ci0gICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5h
dCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CisgICAgaW50IHJlc3Vs
dCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZS5nZXQoKSwgb3B0aW9ucy5hdCwgRmlsZVN5
c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRv
IHdyaXRlIGF0IG9mZnNldCJfcyB9OwogCi0gICAgcmVzdWx0ID0gRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9maWxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkpOworICAgIHJlc3Vs
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLmxlbmd0aCgpKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gd3JpdGUgdG8gZmlsZSJf
cyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCmluZGV4IGIwN2I5
NDAzMDAyZDdkMWRlOWFkOGEwNDA1YmQ4YTliNjY0ZmMxOWMuLjRhZDA1MjM1OGY1ZjRmZDI4OWVl
YTcwNjIyMWQ5ZTAwMjgxODNjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAj
aW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNs
dWRlICJGaWxlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YXQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSk7CisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhhbmRsZSYsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZUhhbmRsZSYmKTsKICAgICB+
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoKTsKIAogICAgIHZvaWQgdHJ1bmNhdGUodW5zaWdu
ZWQgbG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKQEAgLTU5LDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiBwcml2YXRlOgotICAg
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxl
U3lzdGVtRmlsZUhhbmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGUmJik7CiAgICAg
Ym9vbCBpc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0OwogICAgIHVzaW5nIENsb3NlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPjsKICAgICB2b2lk
IGNsb3NlSW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmKTsKQEAgLTc1LDcgKzc2LDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlZjxGaWxlU3lzdGVtRmlsZUhhbmRsZT4gbV9zb3VyY2U7CiAgICAgRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlOworICAgIEZpbGVIYW5kbGUgbV9maWxlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IG1fY2xvc2VSZXN1bHQ7CiAgICAg
VmVjdG9yPENsb3NlQ2FsbGJhY2s+IG1fY2xvc2VDYWxsYmFja3M7CiAgICAgdXNpbmcgUHJvbWlz
ZSA9IHN0ZDo6dmFyaWFudDxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4sIERPTVByb21pc2VEZWZl
cnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGNiM2VjZWJkNDE4ZjllZWY5YjRjNjNh
MGJjNGRiMjEwYWU1Y2U3M2QuLjU5ZTBhMjA0MTQ3ZTE1MzEzNGY3Yzg2ODhkZjUwZWI0ZTRlMTQz
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9X
b3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmNvbXBsZXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWUKICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OmRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVu
dGlmaWVyIGNhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlPj4mJiByZXN1bHQpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVu
dGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCBGaWxlSGFuZGxlPj4mJiByZXN1bHQpCiB7CiAgICAgaWYgKGF1dG8gY2FsbGJh
Y2sgPSBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKSkK
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKQEAgLTI1OSwxMCArMjU5LDcgQEAg
dm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRmlsZVN5c3RlbUhhbmRsZUkKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNr
SWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFp
blRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lk
ZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1
bHQpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBjcm9zc1RocmVhZFJlc3VsdCA9IHJlc3Vs
dDsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgY3Jvc3NUaHJlYWRSZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0LmV4Y2VwdGlvbigp
KTsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShb
Y2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKGNyb3NzVGhyZWFkUmVzdWx0KV0g
KGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50
aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpk
ZWZhdWx0TW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAppbmRleCBlNTc3ZmIxYjRjZWZjZTc4NmI0NDdiZWJmYjUwOTVmZWFmZWNjMWRm
Li5hODhlZWQ5OGI4ODE4NzIyNzQ5ZDc2YTVhNTU2YmU1ZWM1YzgxYzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsZUhhbmRsZTsKIGNsYXNzIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFz
cyBXb3JrZXJUaHJlYWQ7CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEdl
dEhhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtSGFu
ZGxlQ2xvc2VTY29wZT4+JiYpOwogICAgIHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZp
ZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAgICB2b2lkIGNvbXBsZXRlU3Ry
aW5nQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxTdHJpbmc+JiYpOwot
ICAgIHZvaWQgZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4
Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZT4+JiYpOworICAgIHZvaWQgZGlkQ3JlYXRl
U3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFp
cjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmKTsK
ICAgICB2b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0
aW9uT3I8dm9pZD4mJiByZXN1bHQpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJh
Y2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V4Y2VwdGlvbk9yLmgKaW5kZXggYmJmZDk2Njg1MDE2MzFmNTEyMmI5NDBkOWIwMDA0MjJlOTll
ZDA1Yy4uYzJlMTY0NmE5OWVkMTAyNTA1ZWFlMWNiNGY0MjJlMmE4NmY2MzA0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTIxOCw2ICsyMTgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdlYkNvcmU6OkV4
Y2VwdGkKICAgICAgICAgICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLmV4Y2VwdGlv
bigpKTsKICAgICAgICAgcmV0dXJuIGNyb3NzVGhyZWFkQ29weShzb3VyY2UucmV0dXJuVmFsdWUo
KSk7CiAgICAgfQorCisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQorICAgIHsK
KyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBj
cm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVy
biBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9CiB9
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiA+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKaW5kZXggNzhiNGVlYTllNmY1ZTQyMjVjMGFlYmJkZGY0NjMxYTJlY2QzZGFm
MC4uZjdkNTA4M2MzNTVkOTE4NWIxOTFmN2JkYzdjZDFmMjQ5NDFiODdjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorRmlsZUhhbmRsZSBGaWxlSGFuZGxlOjphZG9wdChGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gRmlsZUhhbmRsZShzdGQ6
OmV4Y2hhbmdlKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkp
OworfQorCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgOiBtX3BhdGggeyBwYXRoIH0KICAgICAsIG1f
bW9kZSB7IG1vZGUgfQpAQCAtNTIsNiArNTcsMTEgQEAgRmlsZUhhbmRsZTo6RmlsZUhhbmRsZShj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlLCBPcHRpb24K
IHsKIH0KIAorRmlsZUhhbmRsZTo6RmlsZUhhbmRsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlKQorICAgIDogbV9maWxlSGFuZGxlKGhhbmRsZSkKK3sKK30KKwogRmlsZUhh
bmRsZTo6fkZpbGVIYW5kbGUoKQogewogICAgIGNsb3NlKCk7CkBAIC01OSwxMCArNjksMTIgQEAg
RmlsZUhhbmRsZTo6fkZpbGVIYW5kbGUoKQogCiBGaWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVy
YXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogewotICAgIGNsb3NlKCk7CiAgICAgbV9wYXRoID0g
V1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9kZSA9IFdURk1vdmUob3RoZXIubV9tb2Rl
KTsKICAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwg
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgbV9zaG91bGRMb2Nr
ID0gb3RoZXIubV9zaG91bGRMb2NrOworICAgIG1fbG9ja01vZGUgPSBvdGhlci5tX2xvY2tNb2Rl
OworCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC04NCw4ICs5NiwxMiBAQCBib29sIEZpbGVI
YW5kbGU6Om9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUg
bW9kZSkKIAogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsKKyAgICBpZiAobV9wYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCEqdGhpcykKICAgICAgICAg
bV9maWxlSGFuZGxlID0gbV9zaG91bGRMb2NrID8gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxl
KG1fcGF0aCwgbV9tb2RlLCBtX2xvY2tNb2RlKSA6ICBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3Bh
dGgsIG1fbW9kZSk7CisKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC05Myw2ICsxMDksNyBAQCBpbnQgRmlsZUhhbmRsZTo6cmVhZCh2b2lkKiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1cm4gLTE7CisKICAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3Ro
KTsKIH0KIApAQCAtMTAwLDYgKzExNyw3IEBAIGludCBGaWxlSGFuZGxlOjp3cml0ZShjb25zdCB2
b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1
cm4gLTE7CisKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxl
LCBkYXRhLCBsZW5ndGgpOwogfQogCkBAIC0xMjYsOCArMTQ0LDI3IEBAIHZvaWQgRmlsZUhhbmRs
ZTo6Y2xvc2UoKQogICAgIGlmIChtX3Nob3VsZExvY2sgJiYgKnRoaXMpIHsKICAgICAgICAgLy8g
RmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlIHJlcXVpcmVzIHRoZSBmaWxlIGhhbmRsZSB0
byBiZSB2YWxpZCB3aGlsZSBjbG9zZUZpbGUgZG9lcyBub3QKICAgICAgICAgRmlsZVN5c3RlbTo6
dW5sb2NrQW5kQ2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7Cit9CisKK0ZpbGVI
YW5kbGUgRmlsZUhhbmRsZTo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICBGaWxlSGFuZGxlIHJl
c3VsdDsKKyAgICByZXN1bHQubV9wYXRoID0gV1RGTW92ZShtX3BhdGgpLmlzb2xhdGVkQ29weSgp
OworICAgIHJlc3VsdC5tX21vZGUgPSBtX21vZGU7CisgICAgcmVzdWx0Lm1fZmlsZUhhbmRsZSA9
IHN0ZDo6ZXhjaGFuZ2UobV9maWxlSGFuZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKKyAgICByZXN1bHQubV9zaG91bGRMb2NrID0gbV9zaG91bGRMb2NrOworICAg
IHJlc3VsdC5tX2xvY2tNb2RlID0gbV9sb2NrTW9kZTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2NvbnN0IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgRmlsZUhhbmRsZTo6Z2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWxlSGFuZGxlOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKaW5kZXggNTBkODI0Y2Fl
ZTliYTEyNDA5ODQzNWVhNzIxNWQxNTE3ODdkYmNlMS4uNWViOTg4MDVkMDZjOWNmOWU2MGM3ZWMy
YTdmZmJmOWMwZjE2MjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaApAQCAt
MzQsMTggKzM0LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEZpbGVIYW5kbGUgZmluYWwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbGVIYW5k
bGUpOwogcHVibGljOgorICAgIHN0YXRpYyBGaWxlSGFuZGxlIGFkb3B0KEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSYpOwogICAgIEZpbGVIYW5kbGUoKSA9IGRlZmF1bHQ7CisgICAgfkZp
bGVIYW5kbGUoKTsKICAgICBGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2Rl
Pik7Ci0gICAgRmlsZUhhbmRsZShjb25zdCBGaWxlSGFuZGxlJiBvdGhlcikgPSBkZWxldGU7CiAg
ICAgRmlsZUhhbmRsZShGaWxlSGFuZGxlJiYgb3RoZXIpOwotCi0gICAgfkZpbGVIYW5kbGUoKTsK
LQotICAgIEZpbGVIYW5kbGUmIG9wZXJhdG9yPShjb25zdCBGaWxlSGFuZGxlJiBvdGhlcikgPSBk
ZWxldGU7CiAgICAgRmlsZUhhbmRsZSYgb3BlcmF0b3I9KEZpbGVIYW5kbGUmJiBvdGhlcik7Ci0K
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7CiAKICAgICBib29sIG9wZW4oY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUpOwpAQCAtNTUsNyArNTIs
MTIgQEAgcHVibGljOgogICAgIGJvb2wgcHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBX
VEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBjb25z
dCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGdldCgpIGNvbnN0OworICAgIEZpbGVI
YW5kbGUgaXNvbGF0ZWRDb3B5KCkgJiY7CisKIHByaXZhdGU6CisgICAgRmlsZUhhbmRsZShGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpOworCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkIH07CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRs
ZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggMDQyOTNmOGM4MDVlZTUwZDk1NjZkYWQ5ZjdmNTRiMGMwNTMw
NDFjZC4uZTIxODExZTc2Mjg1Nzk0MTIzOGU4NjcxNjZiZDRiODdhMzE4NzgzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTM3MSwxMiArMzcxLDcgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW4KICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7Ci0gICAg
YXV0byBmaWxlSGFuZGxlID0gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkuc2Vjb25kIDogSVBDOjpT
aGFyZWRGaWxlSGFuZGxlKCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQp
KTsKLQotICAgIC8vIENsb3NlIHRoZSBmaWxlIGhhbmRsZSBpbiBuZXR3b3JrIHByb2Nlc3MuCi0g
ICAgZmlsZUhhbmRsZS5jbG9zZSgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Y3Jl
YXRlU3luY0FjY2Vzc0hhbmRsZSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKaW5kZXgg
NjRlNDIxNzgwMWEyMWYwNWQ4OGI0ZTYxNjhkNzBiODlmOTVhN2UwMy4uZTVlN2VmMGRkNTViMTJi
YWYyZGJkZTY1ZjIwYmQ1M2IwZDQ1NGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKQEAgLTI4LDE1ICsyOCwxMSBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotdm9pZCBTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSgpCi17Ci0gICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIAot
c3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUo
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKQorc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxl
SGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUpCiB7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkRmlsZUhhbmRsZS5oCmluZGV4IDU4NWFkOTkzNzI3MmMyZDBhYTlkNTM3YzIzN2M4
M2E2YjU2MDhiN2MuLjJjNzcwNWY1YzJiYzU1ODE5MzE2NDczOWFhYjI3ODNhOTAyNGMzNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVIYW5k
bGUuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
QEAgLTM1LDIyICszNiwyMSBAQCBjbGFzcyBFbmNvZGVyOwogCiBjbGFzcyBTaGFyZWRGaWxlSGFu
ZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxl
PiBjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlJik7CiAKICAgICBTaGFyZWRGaWxlSGFuZGxlKCkgPSBkZWZhdWx0OwotICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsg
fQotICAgIHZvaWQgY2xvc2UoKTsKKyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIHJlbGVhc2UoKSB7
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1faGFuZGxlLCB7IH0pOyB9CiAKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhh
bmRsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hh
cmVkRmlsZUhhbmRsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotICAg
ICAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICBleHBsaWNpdCBTaGFyZWRGaWxlSGFuZGxlKEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorICAgICAgICA6IG1faGFuZGxl
KFdlYkNvcmU6OkZpbGVIYW5kbGU6OmFkb3B0KGhhbmRsZSkpCiAgICAgewogICAgIH0KIAotICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZSB7IEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIG1faGFu
ZGxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvU2hhcmVkRmlsZUhhbmRsZUNvY29hLmNwcAppbmRleCA2
ZGE4ZGViNWE2NjFjMWMyYTAwNzhhZGQ0OTI3MWYyYzhiZmM5NjA2Li5mMjE3ZDk4MTMyZWMyN2Ni
OGZjZjhjYmRjMjQ2YThlMDhmOTFjNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL1NoYXJlZEZpbGVIYW5kbGVDb2NvYS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhh
bmRsZT4gU2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUpCitzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVI
YW5kbGU6OmNyZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsK
ICAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRsZSB7IGhhbmRsZSB9OwogfQpAQCAtMzksNyArMzks
NyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6OmNy
ZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbAogdm9pZCBTaGFyZWRGaWxlSGFuZGxlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBtYWNoX3BvcnRfbmFtZV90IGZpbGVw
b3J0ID0gTUFDSF9QT1JUX05VTEw7Ci0gICAgaWYgKGZpbGVwb3J0X21ha2Vwb3J0KG1faGFuZGxl
LCAmZmlsZXBvcnQpID09IC0xKSB7CisgICAgaWYgKGZpbGVwb3J0X21ha2Vwb3J0KG1faGFuZGxl
LmdldCgpLCAmZmlsZXBvcnQpID09IC0xKSB7CiAgICAgICAgIGVuY29kZXIgPDwgTWFjaFBvcnQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggM2M4N2UxZjc1NGZjNTkzNGNjYTlhOTI1ODA5NDY4
ZDlmZWU4NGU0YS4uMmZmNGM5ZmQ5YjgyMjNhNWEyMzM1MTg2MWY4OTQzNjk4ZWVjM2UxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTE0
OSw4ICsxNDksOCBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRl
U3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogICAgICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRp
b24ocmVzdWx0LmVycm9yKCkpKTsKIAotICAgICAgICBhdXRvIHJlc3VsdFZhbHVlID0gcmVzdWx0
LnZhbHVlKCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6cGFpciB7IHJlc3VsdFZh
bHVlLmZpcnN0LCByZXN1bHRWYWx1ZS5zZWNvbmQuaGFuZGxlKCkgfSk7CisgICAgICAgIGF1dG8g
cmVzdWx0VmFsdWUgPSBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpwYWlyIHsgcmVzdWx0VmFsdWUuZmlyc3QsIHJlc3VsdFZhbHVlLnNlY29u
ZC5yZWxlYXNlKCkgfSk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447838</attachid>
            <date>2021-12-22 15:40:49 -0800</date>
            <delta_ts>2021-12-22 21:42:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234520-20211222154049.patch</filename>
            <type>text/plain</type>
            <size>29858</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3MjM0NTk3ZDM3NzkwZWNiMjQ4ZTA5
MzgyMzcwZWM5NGVkZjk0OGYuLjM0ZDY5MzQyNjQ3NDE5NGY3OWUwNzc0OTBhY2YxMTIxNjU3Yjg4
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5zdXJlIGZpbGUgaGFuZGxlcyB1c2VkIGluIEZpbGVT
eXN0ZW1BY2Nlc3MgQVBJIGFyZSBjbG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisKIDIwMjEtMTItMjIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUHJlZmVy
ZW5jZXMgdGhhdCByZWFkIGZyb20gTlNVc2VyRGVmYXVsdHMgbmVlZCB0byBiZSBpbml0aWFsaWVk
IGZyb20gcGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZmZjQ4OTkxMjBi
Njg1NTJmZTkzYWE1ZmIyMTgwZjkwYjI1OGFmY2UuLjc2MWUyOTg4YTM0MTIwMzg1ZGY2ZGJmYjYz
ODQwMjIwNTdjYmNlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0xMi0yMiAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgZmlsZSBo
YW5kbGVzIHVzZWQgaW4gRmlsZVN5c3RlbUFjY2VzcyBBUEkgYXJlIGNsb3NlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBj
bG9zZXMgZmlsZSBoYW5kbGUgaW4gaXRzIGRlc3RydWN0b3IuIFJlcGxhY2UgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIHdpdGggCisgICAgICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgaW4g
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUgYW5kIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbiB0byBlbnN1cmUgZmlsZSBoYW5kbGUgCisgICAgICAgIGdldCBjbG9zZWQgaWYgd29y
a2VyIHRocmVhZCBmYWlscyB0byBleGVjdXRlIHRoZSBjYWxsYmFjayBvZiBjcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlLCBhbmQgaWYgCisgICAgICAgIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIGlz
IGRlc3Ryb3llZC4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRs
ZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
dHJ1bmNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmdldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpj
bG9zZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGU6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGU6OndyaXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vzc0hh
bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVIYW5kbGU6OkZp
bGVIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVIYW5kbGU6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUhhbmRsZTo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjp3cml0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlSGFuZGxlOjpoYW5kbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUu
aDoKKwogMjAyMS0xMi0yMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xhc3NdIDpoYXMoKSBzZWxlY3RvciBpbnZhbGlkYXRpb24g
aXNzdWUgd2l0aCB0b2dnbGluZyA6Y2hlY2tlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOGNkY2Y3NDJmOWE2ZDNh
ODcyNjYwNzRhMzE5ZGFmNDA5ZWVmYjZjLi5iYTE1M2JmOTBkMTc3YzdiMTA0ZDhhYWZhZjBmMGJm
NThhMTdhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTIyICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEVuc3VyZSBmaWxlIGhhbmRsZXMg
dXNlZCBpbiBGaWxlU3lzdGVtQWNjZXNzIEFQSSBhcmUgY2xvc2VkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNlIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSB3aXRoIFdlYkNvcmU6OkZpbGVIYW5kbGUgaW4gU2hhcmVkRmlsZUhhbmRsZSB0
byBlbnN1cmUgZmlsZSBoYW5kbGUgZ2V0IAorICAgICAgICBjbG9zZWQsIGlmIGl0J3Mgbm90IHJl
bGVhc2VkIGZvciB1c2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJl
ZEZpbGVIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNs
b3NlKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5o
OgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpyZWxlYXNlKToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkRmlsZUhhbmRsZTo6U2hhcmVkRmlsZUhhbmRsZSk6CisgICAgICAgIChJUEM6OlNo
YXJlZEZpbGVIYW5kbGU6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwOgor
ICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAoSVBDOjpT
aGFyZWRGaWxlSGFuZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxl
SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKwogMjAy
MS0xMi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcmVmZXJlbmNlcyB0aGF0IHJlYWQgZnJvbSBOU1VzZXJEZWZhdWx0cyBuZWVkIHRvIGJlIGlu
aXRpYWxpZWQgZnJvbSBwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1G
aWxlSGFuZGxlLmNwcAppbmRleCBkZjJkNTFhMjg2Zjk2ZjJkNzljMWM1YjVlYjNkYzQxOWRlMGEz
YTczLi4wZTk1ZmZkZWU0YWY4NTRlODdlMjUzYTljZGU4NjM0MmY1YTJlZGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9G
aWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc5LDE3ICs3OSwxNiBAQCB2b2lkIEZpbGVTeXN0
ZW1GaWxlSGFuZGxlOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhYwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogCiAgICAgICAgIGF1dG8gW2lkZW50aWZpZXIsIGZpbGVdID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICBpZiAoZmlsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICBpZiAoIWZpbGUpCiAgICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiSW52
YWxpZCBwbGF0Zm9ybSBmaWxlIGhhbmRsZSJfcyB9KTsKIAogICAgICAgICBhdXRvKiBjb250ZXh0
ID0gcHJvdGVjdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICBpZiAo
IWNvbnRleHQpIHsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNsb3NlU3luY0FjY2Vzc0hhbmRsZShpZGVudGlmaWVy
LCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBoYXMgc3RvcHBlZCJfcyB9KTsKICAgICAgICAgfQog
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y3Jl
YXRlKCpjb250ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpLCBpZGVudGlmaWVyLCBmaWxlKSk7Cisg
ICAgICAgIHByb21pc2UucmVzb2x2ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y3JlYXRl
KCpjb250ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGZpbGUp
KSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAppbmRleCAxMzdiYjQ4YjZhNDkwNGU0OWY1YTVjM2MwOTQ3MzIxODA2ZjdhZWEzLi42ZWNiYmIy
YzBkYTE5YTRjMzgzMzZlYzMxN2ViOWM5YWMxYmQwYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZTsKIGNsYXNzIEZpbGVTeXN0ZW1G
aWxlSGFuZGxlOworY2xhc3MgRmlsZUhhbmRsZTsKIGNsYXNzIEZpbGVTeXN0ZW1IYW5kbGVDbG9z
ZVNjb3BlOwogY2xhc3MgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRXhjZXB0aW9uT3I7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBTYW1lRW50cnlDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8Ym9vbD4mJik+OwogICAgIHVzaW5nIEdldEhhbmRsZUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUhhbmRsZUNsb3NlU2NvcGU+PiYm
KT47CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik+OwotICAgIHVzaW5nIEdldEFjY2Vzc0hhbmRs
ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGU+PiYmKT47CisgICAgdXNpbmcgR2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmKT47CiAgICAgdXNpbmcgVm9p
ZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT47
CiAgICAgdXNpbmcgR2V0SGFuZGxlTmFtZXNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpPjsKICAgICB1c2luZyBTdHJpbmdDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U3RyaW5nPiYmKT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcAppbmRleCBjOWZlMzUwYjFm
NWJiZTU1N2NmMGFjNGU3YzU4NmUzZGUzNzlhNDM5Li42NDZlY2YwZjAwZTg3MzEzOTYyNjQyOTUz
NzAzYTg3ZTA0MDI0YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZS5jcHAKQEAgLTM1LDIwICszNSwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZT4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUhhbmRs
ZSYgc291cmNlLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUpCitSZWY8RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmIHNvdXJjZSwg
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVIYW5k
bGUmJiBmaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZShjb250ZXh0LCBzb3VyY2UsIGlkZW50aWZpZXIsIGZpbGUpKTsKKyAg
ICBhdXRvIGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUo
Y29udGV4dCwgc291cmNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGZpbGUpKSk7CiAgICAgaGFuZGxl
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCi1GaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmIHNvdXJjZSwgRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlKQorRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZp
bGVTeXN0ZW1GaWxlSGFuZGxlJiBzb3VyY2UsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBGaWxlSGFuZGxlJiYgZmlsZSkKICAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQotICAgICwgbV9maWxlKGZpbGUpCisgICAgLCBtX2ZpbGUoV1RGTW92ZShm
aWxlKSkKIHsKLSAgICBBU1NFUlQobV9maWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpOworICAgIEFTU0VSVChtX2ZpbGUpOwogCiAgICAgbV9zb3VyY2UtPnJlZ2lz
dGVyU3luY0FjY2Vzc0hhbmRsZShtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KQEAgLTg4LDcgKzg4
LDcgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6dHJ1bmNhdGUodW5zaWduZWQg
bG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWYKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9z
IH0pOwogCiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOwot
ICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCBzaXplLCB3b3JrZXJUaHJlYWQg
PSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICBXb3JrZXJHbG9iYWxT
Y29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgZmlsZSA9IG1fZmlsZS5oYW5kbGUoKSwgc2l6ZSwgd29ya2VyVGhyZWFkID0gUmVmIHsg
c2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdWNjZXNzID0g
RmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZpbGUsIHNpemUpXShhdXRvJikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBs
ZXRlUHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dm9pZD4geyB9IDogRXhjZXB0aW9uIHsg
VW5rbm93bkVycm9yIH0pOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGU6OmdldFNpemUoRE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xv
bmc+CiAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkNvbnRleHQgaXMgaW52YWxpZCJfcyB9KTsKIAogICAgIG1fcGVuZGluZ1Byb21p
c2VzLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9z
dEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmls
ZSA9IG1fZmlsZSwgd29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0
YWJsZSB7CisgICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2so
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUuaGFuZGxlKCksIHdv
cmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgewogICAgICAg
ICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgc3VjY2VzcyA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGUpXShhdXRvJikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1Ro
aXMtPmNvbXBsZXRlUHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dWludDY0X3Q+IHsgc3Vj
Y2Vzcy52YWx1ZSgpIH0gOiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2goRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9zIH0p
OwogCiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOwotICAg
IFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBz
Y29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9z
dEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmls
ZSA9IG1fZmlsZS5oYW5kbGUoKSwgd29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgp
IH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdWNjZXNzID0gRmlsZVN5c3RlbTo6Zmx1
c2hGaWxlKGZpbGUpXShhdXRvJikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlUHJvbWlzZShzdWNjZXNzID8gRXhj
ZXB0aW9uT3I8dm9pZD4geyB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOwpAQCAtMTQ5
LDIwICsxNDksMTkgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VJbnRl
cm5hbChDbG9zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgaWYgKGlzQ2xvc2luZykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fZmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICBBU1NFUlQobV9maWxlKTsKICAgICBjbG9zZUZpbGUoKTsK
IH0KIAogdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VGaWxlKCkKIHsKLSAg
ICBpZiAobV9maWxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgaWYgKCFtX2ZpbGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHNjb3BlID0gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
QVNTRVJUKHNjb3BlKTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0
b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gc3RkOjpleGNo
YW5nZShtX2ZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpLCB3b3Jr
ZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0
RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxl
ID0gc3RkOjpleGNoYW5nZShtX2ZpbGUsIHsgfSksIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3Bl
LT50aHJlYWQoKSB9XSgpIG11dGFibGUgewogICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oYXV0byYpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5k
aWRDbG9zZUZpbGUoKTsKQEAgLTIxMiwxMSArMjExLDExIEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVk
IGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnJlYWQoQnVmZmVyU291cmNl
JiYKICAgICBpZiAoIW1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5p
c2hlZCBvcGVyYXRpb24iX3MgfTsKIAotICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVr
RmlsZShtX2ZpbGUsIG9wdGlvbnMuYXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOworICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUuaGFu
ZGxlKCksIG9wdGlvbnMuYXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcp
OwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byByZWFkIGF0IG9mZnNldCJfcyB9OwogCi0gICAgcmVz
dWx0ID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZSwgYnVmZmVyLm11dGFibGVEYXRh
KCksIGJ1ZmZlci5sZW5ndGgoKSk7CisgICAgcmVzdWx0ID0gRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKG1fZmlsZS5oYW5kbGUoKSwgYnVmZmVyLm11dGFibGVEYXRhKCksIGJ1ZmZlci5sZW5ndGgo
KSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHJlYWQgZnJvbSBmaWxlIl9zIH07CiAKQEAgLTIz
MywxMSArMjMyLDExIEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRlKEJ1ZmZlclNvdXJjZSYmCiAgICAgaWYgKCFtX3BlbmRp
bmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVuZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07
CiAKLSAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlLCBvcHRpb25z
LmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKKyAgICBpbnQgcmVz
dWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlLmhhbmRsZSgpLCBvcHRpb25zLmF0LCBG
aWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKICAgICBpZiAocmVzdWx0ID09
IC0xKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWls
ZWQgdG8gd3JpdGUgYXQgb2Zmc2V0Il9zIH07CiAKLSAgICByZXN1bHQgPSBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX2ZpbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSk7CisgICAg
cmVzdWx0ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlLmhhbmRsZSgpLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byB3cml0ZSB0
byBmaWxlIl9zIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgKaW5k
ZXggYjA3Yjk0MDMwMDJkN2QxZGU5YWQ4YTA0MDViZDhhOWI2NjRmYzE5Yy4uNGFkMDUyMzU4ZjVm
NGZkMjg5ZWVhNzA2MjIxZDllMDAyODE4M2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKICNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgIkZpbGVIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBhdDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhh
bmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1GaWxlSGFu
ZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlSGFuZGxlJiYp
OwogICAgIH5GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSgpOwogCiAgICAgdm9pZCB0cnVuY2F0
ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwpA
QCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZh
dGU6Ci0gICAgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIEZpbGVTeXN0ZW1GaWxlSGFuZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhh
bmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZUhhbmRsZSYm
KTsKICAgICBib29sIGlzQ2xvc2luZ09yQ2xvc2VkKCkgY29uc3Q7CiAgICAgdXNpbmcgQ2xvc2VD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+Owog
ICAgIHZvaWQgY2xvc2VJbnRlcm5hbChDbG9zZUNhbGxiYWNrJiYpOwpAQCAtNzUsNyArNzYsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPiBtX3NvdXJjZTsKICAg
ICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGU7CisgICAgRmlsZUhhbmRsZSBt
X2ZpbGU7CiAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV9jbG9zZVJlc3Vs
dDsKICAgICBWZWN0b3I8Q2xvc2VDYWxsYmFjaz4gbV9jbG9zZUNhbGxiYWNrczsKICAgICB1c2lu
ZyBQcm9taXNlID0gc3RkOjp2YXJpYW50PERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiwgRE9NUHJv
bWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dv
cmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggY2IzZWNlYmQ0MThmOWVl
ZjliNGM2M2EwYmM0ZGIyMTBhZTVjZTczZC4uMmZkYmM4YzkzMDVhMzc1NWE2ZDI1NjFjOGIzMzdj
ZWRiMDRiOGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbi5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Y29tcGxldGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lkZW50aWZp
ZQogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIFdvcmtlckZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxs
YmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGU+PiYmIHJlc3VsdCkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpkaWRDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKENhbGxiYWNrSWRlbnRpZmllciBjYWxs
YmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fZ2V0QWNjZXNzSGFuZGxDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50
aWZpZXIpKQogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMjU5LDEwICsy
NTksOSBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxlSQogCiAgICAgY2FsbE9uTWFpblRocmVhZChb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQo
KSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50
aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIGNyb3NzVGhyZWFkUmVzdWx0
ID0gcmVzdWx0OwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICBjcm9zc1RocmVhZFJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQuZXhj
ZXB0aW9uKCkpOwotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tG
b3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUoY3Jvc3NUaHJlYWRS
ZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShyZXN1bHQuZXhjZXB0aW9uKCkpOworICAgICAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uaAppbmRleCBlNTc3ZmIxYjRjZWZjZTc4NmI0NDdiZWJmYjUwOTVmZWFmZWNjMWRmLi5h
ODhlZWQ5OGI4ODE4NzIyNzQ5ZDc2YTVhNTU2YmU1ZWM1YzgxYzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsZUhhbmRsZTsKIGNsYXNzIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBX
b3JrZXJUaHJlYWQ7CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEdldEhh
bmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtSGFuZGxl
Q2xvc2VTY29wZT4+JiYpOwogICAgIHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZpZXIs
IEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAgICB2b2lkIGNvbXBsZXRlU3RyaW5n
Q2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxTdHJpbmc+JiYpOwotICAg
IHZvaWQgZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2Vw
dGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZT4+JiYpOworICAgIHZvaWQgZGlkQ3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmKTsKICAg
ICB2b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9u
T3I8dm9pZD4mJiByZXN1bHQpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJhY2tJ
ZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggNzhiNGVlYTllNmY1ZTQyMjVjMGFlYmJkZGY0
NjMxYTJlY2QzZGFmMC4uZDZlYWUzODc2OTQ1YmYxMDI3OThlOTcyMDY1NjJkODVmYmFmOGJmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTUyLDYgKzUyLDExIEBA
IEZpbGVIYW5kbGU6OkZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGUgbW9kZSwgT3B0aW9uCiB7CiB9CiAKK0ZpbGVIYW5kbGU6OkZpbGVIYW5kbGUo
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiYgaGFuZGxlKQorICAgIDogbV9maWxlSGFu
ZGxlKFdURk1vdmUoaGFuZGxlKSkKK3sKK30KKwogRmlsZUhhbmRsZTo6fkZpbGVIYW5kbGUoKQog
ewogICAgIGNsb3NlKCk7CkBAIC02Myw2ICs2OCw5IEBAIEZpbGVIYW5kbGUmIEZpbGVIYW5kbGU6
Om9wZXJhdG9yPShGaWxlSGFuZGxlJiYgb3RoZXIpCiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhl
ci5tX3BhdGgpOwogICAgIG1fbW9kZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKICAgICBtX2Zp
bGVIYW5kbGUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgbV9zaG91bGRMb2NrID0gb3RoZXIubV9z
aG91bGRMb2NrOworICAgIG1fbG9ja01vZGUgPSBvdGhlci5tX2xvY2tNb2RlOworCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCkBAIC04NCw4ICs5MiwxMiBAQCBib29sIEZpbGVIYW5kbGU6Om9wZW4o
Y29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbW9kZSkKIAogYm9v
bCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCEqdGhpcykKICAgICAgICAgbV9maWxlSGFuZGxl
ID0gbV9zaG91bGRMb2NrID8gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKG1fcGF0aCwgbV9t
b2RlLCBtX2xvY2tNb2RlKSA6ICBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BhdGgsIG1fbW9kZSk7
CisKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQogCkBAIC05Myw2ICsx
MDUsNyBAQCBpbnQgRmlsZUhhbmRsZTo6cmVhZCh2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewog
ICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1cm4gLTE7CisKICAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIApAQCAt
MTAwLDYgKzExMyw3IEBAIGludCBGaWxlSGFuZGxlOjp3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKQogewogICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1cm4gLTE7CisKICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5n
dGgpOwogfQogCkBAIC0xMjYsOCArMTQwLDE1IEBAIHZvaWQgRmlsZUhhbmRsZTo6Y2xvc2UoKQog
ICAgIGlmIChtX3Nob3VsZExvY2sgJiYgKnRoaXMpIHsKICAgICAgICAgLy8gRmlsZVN5c3RlbTo6
dW5sb2NrQW5kQ2xvc2VGaWxlIHJlcXVpcmVzIHRoZSBmaWxlIGhhbmRsZSB0byBiZSB2YWxpZCB3
aGlsZSBjbG9zZUZpbGUgZG9lcyBub3QKICAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7Cit9CisKK0ZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBGaWxlSGFuZGxlOjpoYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2ZpbGVIYW5kbGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVIYW5kbGUuaAppbmRleCA1MGQ4MjRjYWVlOWJhMTI0MDk4NDM1ZWE3MjE1ZDE1MTc4
N2RiY2UxLi5mMjM2YjQyODZhZDI3OWM5MzQ0NjI4MWQyY2I3NzBhOTkwMzE5NWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCkBAIC0zNiwxNSArMzYsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7CiBwdWJs
aWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKKyAgICB+RmlsZUhhbmRsZSgpOwogICAg
IEZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUp
OwogICAgIEZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGUsIE9wdGlvblNldDxGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU+KTsKLSAgICBGaWxlSGFu
ZGxlKGNvbnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZp
bGVIYW5kbGUmJiBvdGhlcik7Ci0KLSAgICB+RmlsZUhhbmRsZSgpOwotCi0gICAgRmlsZUhhbmRs
ZSYgb3BlcmF0b3I9KGNvbnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxl
SGFuZGxlJiBvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKTsKKyAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmKSA9IGRlbGV0ZTsKKyAgICBGaWxlSGFuZGxlJiBvcGVyYXRvcj0oY29u
c3QgRmlsZUhhbmRsZSYpID0gZGVsZXRlOworICAgIGV4cGxpY2l0IEZpbGVIYW5kbGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiYpOwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0OwogCkBAIC01NSw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIHByaW50Zihj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CiAgICAg
dm9pZCBjbG9zZSgpOwogCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlIG1fbW9kZSB7IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKaW5kZXggNzNhYTY3NzIxODMwOTg1ODRl
MWYxYmUxMDk5Y2RmMzUwMDIwZmZiMy4uOWI4YzA0ZGRmMWNiM2FkOGZlNzYxNWI0M2EzYWQyMTBi
ZjFkY2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCkBAIC0xNzIsNyArMTcy
LDcgQEAgRXhwZWN0ZWQ8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRsZUluZm8s
IEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGUKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKIAotICAgIGF1dG8gaXBjSGFu
ZGxlID0gSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoaGFuZGxlKTsKKyAgICBhdXRvIGlw
Y0hhbmRsZSA9IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKHN0ZDo6ZXhjaGFuZ2UoaGFu
ZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSk7CiAgICAgaWYgKCFp
cGNIYW5kbGUpIHsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5k
Tm90U3VwcG9ydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDQyOTNmOGM4
MDVlZTUwZDk1NjZkYWQ5ZjdmNTRiMGMwNTMwNDFjZC4uZTIxODExZTc2Mjg1Nzk0MTIzOGU4Njcx
NjZiZDRiODdhMzE4NzgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTM3MSwx
MiArMzcxLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW4KICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlLT5jcmVh
dGVTeW5jQWNjZXNzSGFuZGxlKCk7Ci0gICAgYXV0byBmaWxlSGFuZGxlID0gcmVzdWx0ID8gcmVz
dWx0LnZhbHVlKCkuc2Vjb25kIDogSVBDOjpTaGFyZWRGaWxlSGFuZGxlKCk7Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLQotICAgIC8vIENsb3NlIHRoZSBmaWxlIGhh
bmRsZSBpbiBuZXR3b3JrIHByb2Nlc3MuCi0gICAgZmlsZUhhbmRsZS5jbG9zZSgpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkRmlsZUhhbmRsZS5jcHAKaW5kZXggNjRlNDIxNzgwMWEyMWYwNWQ4OGI0ZTYxNjhkNzBi
ODlmOTVhN2UwMy4uZDMwYjI3YzRmMmY2MTI4MTQwODBiNDZhOWQyNTczMTEwMjM5MmQ3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKQEAg
LTI4LDE1ICsyOCwxMyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotdm9pZCBTaGFyZWRGaWxlSGFu
ZGxlOjpjbG9zZSgpCi17Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKLX0K
LQogI2lmICFQTEFURk9STShDT0NPQSkKIAotc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxl
PiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
KQorc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVh
dGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiYgaGFuZGxlKQogeworICAgIGF1dG8g
Y3VycmVudEhhbmRsZSA9IFdUTUZvdmUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoY3VycmVudEhhbmRsZSk7CisKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKaW5kZXggNTg1YWQ5
OTM3MjcyYzJkMGFhOWQ1MzdjMjM3YzgzYTZiNTYwOGI3Yy4uNDgzYzc3NDlmMWY4MmY4YjBkMDIx
MDMwM2YzNTQ1NWIzNTJmMThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEZpbGVIYW5kbGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZUhhbmRsZS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIApAQCAtMzUsMjIgKzM2LDIxIEBAIGNsYXNzIEVuY29kZXI7
CiAKIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IGNyZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IGNyZWF0
ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmJik7CiAKICAgICBTaGFyZWRGaWxlSGFu
ZGxlKCkgPSBkZWZhdWx0OwotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQotICAgIHZvaWQgY2xvc2UoKTsKKyAgICBXZWJDb3Jl
OjpGaWxlSGFuZGxlIHJlbGVhc2UoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1faGFuZGxlLCB7
IH0pOyB9CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkRmlsZUhhbmRsZShGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlKQotICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICBleHBs
aWNpdCBTaGFyZWRGaWxlSGFuZGxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYmIGhh
bmRsZSkKKyAgICAgICAgOiBtX2hhbmRsZShXVEZNb3ZlKGhhbmRsZSkpCiAgICAgewogICAgIH0K
IAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZSB7IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlSGFuZGxl
IG1faGFuZGxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvU2hhcmVkRmlsZUhhbmRsZUNvY29hLmNwcApp
bmRleCA2ZGE4ZGViNWE2NjFjMWMyYTAwNzhhZGQ0OTI3MWYyYzhiZmM5NjA2Li5jN2ZiM2M2NTJi
MDQzYTYxNWI1MjJjNDg2M2I3MTM0M2E5ZjY5YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL1NoYXJlZEZpbGVIYW5kbGVDb2NvYS5jcHAKQEAg
LTMxLDE1ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotc3RkOjpvcHRpb25hbDxTaGFy
ZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gU2hh
cmVkRmlsZUhhbmRsZTo6Y3JlYXRlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYmIGhh
bmRsZSkKIHsKLSAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRsZSB7IGhhbmRsZSB9OworICAgIHJl
dHVybiBTaGFyZWRGaWxlSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpIH07CiB9CiAKIHZvaWQgU2hh
cmVkRmlsZUhhbmRsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgbWFj
aF9wb3J0X25hbWVfdCBmaWxlcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwotICAgIGlmIChmaWxlcG9y
dF9tYWtlcG9ydChtX2hhbmRsZSwgJmZpbGVwb3J0KSA9PSAtMSkgeworICAgIGlmIChmaWxlcG9y
dF9tYWtlcG9ydChtX2hhbmRsZS5oYW5kbGUoKSwgJmZpbGVwb3J0KSA9PSAtMSkgewogICAgICAg
ICBlbmNvZGVyIDw8IE1hY2hQb3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01Nyw3
ICs1Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gU2hhcmVkRmlsZUhhbmRs
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGZkID09IC0xKQogICAgICAgICBy
ZXR1cm4gU2hhcmVkRmlsZUhhbmRsZSB7IH07CiAKLSAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRs
ZTo6Y3JlYXRlKGZkKTsKKyAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKFdURk1v
dmUoZmQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDNjODdlMWY3NTRmYzU5MzRjY2E5YTky
NTgwOTQ2OGQ5ZmVlODRlNGEuLmJhMjFlNGQ4YjQ3NGQ1ZGEwYTFlYmM0NzdhMTAzZDgyOWM1ZWEx
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CkBAIC0xNDksOCArMTQ5LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUgKICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRv
RXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CiAKLSAgICAgICAgYXV0byByZXN1bHRWYWx1ZSA9
IHJlc3VsdC52YWx1ZSgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnBhaXIgeyBy
ZXN1bHRWYWx1ZS5maXJzdCwgcmVzdWx0VmFsdWUuc2Vjb25kLmhhbmRsZSgpIH0pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnBhaXIgeyByZXN1bHQudmFsdWUoKS5maXJzdCwgcmVz
dWx0LnZhbHVlKCkuc2Vjb25kLnJlbGVhc2UoKSB9KTsKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447860</attachid>
            <date>2021-12-22 21:42:47 -0800</date>
            <delta_ts>2021-12-23 10:37:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234520-20211222214246.patch</filename>
            <type>text/plain</type>
            <size>29858</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI3MjM0NTk3ZDM3NzkwZWNiMjQ4ZTA5
MzgyMzcwZWM5NGVkZjk0OGYuLjM0ZDY5MzQyNjQ3NDE5NGY3OWUwNzc0OTBhY2YxMTIxNjU3Yjg4
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5zdXJlIGZpbGUgaGFuZGxlcyB1c2VkIGluIEZpbGVT
eXN0ZW1BY2Nlc3MgQVBJIGFyZSBjbG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisKIDIwMjEtMTItMjIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUHJlZmVy
ZW5jZXMgdGhhdCByZWFkIGZyb20gTlNVc2VyRGVmYXVsdHMgbmVlZCB0byBiZSBpbml0aWFsaWVk
IGZyb20gcGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZmZjQ4OTkxMjBi
Njg1NTJmZTkzYWE1ZmIyMTgwZjkwYjI1OGFmY2UuLjc2MWUyOTg4YTM0MTIwMzg1ZGY2ZGJmYjYz
ODQwMjIwNTdjYmNlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0xMi0yMiAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgZmlsZSBo
YW5kbGVzIHVzZWQgaW4gRmlsZVN5c3RlbUFjY2VzcyBBUEkgYXJlIGNsb3NlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBj
bG9zZXMgZmlsZSBoYW5kbGUgaW4gaXRzIGRlc3RydWN0b3IuIFJlcGxhY2UgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIHdpdGggCisgICAgICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgaW4g
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUgYW5kIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbiB0byBlbnN1cmUgZmlsZSBoYW5kbGUgCisgICAgICAgIGdldCBjbG9zZWQgaWYgd29y
a2VyIHRocmVhZCBmYWlscyB0byBleGVjdXRlIHRoZSBjYWxsYmFjayBvZiBjcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlLCBhbmQgaWYgCisgICAgICAgIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIGlz
IGRlc3Ryb3llZC4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRs
ZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
dHJ1bmNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmdldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpj
bG9zZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGU6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGU6OndyaXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vzc0hh
bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVIYW5kbGU6OkZp
bGVIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVIYW5kbGU6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUhhbmRsZTo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjp3cml0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlSGFuZGxlOjpoYW5kbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUu
aDoKKwogMjAyMS0xMi0yMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgWzpoYXMoKSBwc2V1ZG8tY2xhc3NdIDpoYXMoKSBzZWxlY3RvciBpbnZhbGlkYXRpb24g
aXNzdWUgd2l0aCB0b2dnbGluZyA6Y2hlY2tlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOGNkY2Y3NDJmOWE2ZDNh
ODcyNjYwNzRhMzE5ZGFmNDA5ZWVmYjZjLi5iYTE1M2JmOTBkMTc3YzdiMTA0ZDhhYWZhZjBmMGJm
NThhMTdhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTIyICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEVuc3VyZSBmaWxlIGhhbmRsZXMg
dXNlZCBpbiBGaWxlU3lzdGVtQWNjZXNzIEFQSSBhcmUgY2xvc2VkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNlIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSB3aXRoIFdlYkNvcmU6OkZpbGVIYW5kbGUgaW4gU2hhcmVkRmlsZUhhbmRsZSB0
byBlbnN1cmUgZmlsZSBoYW5kbGUgZ2V0IAorICAgICAgICBjbG9zZWQsIGlmIGl0J3Mgbm90IHJl
bGVhc2VkIGZvciB1c2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJl
ZEZpbGVIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNs
b3NlKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5o
OgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpyZWxlYXNlKToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkRmlsZUhhbmRsZTo6U2hhcmVkRmlsZUhhbmRsZSk6CisgICAgICAgIChJUEM6OlNo
YXJlZEZpbGVIYW5kbGU6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwOgor
ICAgICAgICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAoSVBDOjpT
aGFyZWRGaWxlSGFuZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRGaWxl
SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKwogMjAy
MS0xMi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcmVmZXJlbmNlcyB0aGF0IHJlYWQgZnJvbSBOU1VzZXJEZWZhdWx0cyBuZWVkIHRvIGJlIGlu
aXRpYWxpZWQgZnJvbSBwbGF0Zm9ybUluaXRpYWxpemVTdG9yZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1G
aWxlSGFuZGxlLmNwcAppbmRleCBkZjJkNTFhMjg2Zjk2ZjJkNzljMWM1YjVlYjNkYzQxOWRlMGEz
YTczLi4wZTk1ZmZkZWU0YWY4NTRlODdlMjUzYTljZGU4NjM0MmY1YTJlZGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9G
aWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc5LDE3ICs3OSwxNiBAQCB2b2lkIEZpbGVTeXN0
ZW1GaWxlSGFuZGxlOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhYwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogCiAgICAgICAgIGF1dG8gW2lkZW50aWZpZXIsIGZpbGVdID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICBpZiAoZmlsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICBpZiAoIWZpbGUpCiAgICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiSW52
YWxpZCBwbGF0Zm9ybSBmaWxlIGhhbmRsZSJfcyB9KTsKIAogICAgICAgICBhdXRvKiBjb250ZXh0
ID0gcHJvdGVjdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgICAgICBpZiAo
IWNvbnRleHQpIHsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNsb3NlU3luY0FjY2Vzc0hhbmRsZShpZGVudGlmaWVy
LCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBoYXMgc3RvcHBlZCJfcyB9KTsKICAgICAgICAgfQog
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y3Jl
YXRlKCpjb250ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpLCBpZGVudGlmaWVyLCBmaWxlKSk7Cisg
ICAgICAgIHByb21pc2UucmVzb2x2ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y3JlYXRl
KCpjb250ZXh0LCBwcm90ZWN0ZWRUaGlzLmdldCgpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGZpbGUp
KSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAppbmRleCAxMzdiYjQ4YjZhNDkwNGU0OWY1YTVjM2MwOTQ3MzIxODA2ZjdhZWEzLi42ZWNiYmIy
YzBkYTE5YTRjMzgzMzZlYzMxN2ViOWM5YWMxYmQwYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZTsKIGNsYXNzIEZpbGVTeXN0ZW1G
aWxlSGFuZGxlOworY2xhc3MgRmlsZUhhbmRsZTsKIGNsYXNzIEZpbGVTeXN0ZW1IYW5kbGVDbG9z
ZVNjb3BlOwogY2xhc3MgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRXhjZXB0aW9uT3I7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBTYW1lRW50cnlDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8Ym9vbD4mJik+OwogICAgIHVzaW5nIEdldEhhbmRsZUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUhhbmRsZUNsb3NlU2NvcGU+PiYm
KT47CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik+OwotICAgIHVzaW5nIEdldEFjY2Vzc0hhbmRs
ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGU+PiYmKT47CisgICAgdXNpbmcgR2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmKT47CiAgICAgdXNpbmcgVm9p
ZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT47
CiAgICAgdXNpbmcgR2V0SGFuZGxlTmFtZXNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpPjsKICAgICB1c2luZyBTdHJpbmdDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U3RyaW5nPiYmKT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcAppbmRleCBjOWZlMzUwYjFm
NWJiZTU1N2NmMGFjNGU3YzU4NmUzZGUzNzlhNDM5Li42NDZlY2YwZjAwZTg3MzEzOTYyNjQyOTUz
NzAzYTg3ZTA0MDI0YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZS5jcHAKQEAgLTM1LDIwICszNSwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZT4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUhhbmRs
ZSYgc291cmNlLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUpCitSZWY8RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmIHNvdXJjZSwg
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVIYW5k
bGUmJiBmaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZShjb250ZXh0LCBzb3VyY2UsIGlkZW50aWZpZXIsIGZpbGUpKTsKKyAg
ICBhdXRvIGhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUo
Y29udGV4dCwgc291cmNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGZpbGUpKSk7CiAgICAgaGFuZGxl
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCi1GaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmIHNvdXJjZSwgRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlKQorRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZp
bGVTeXN0ZW1GaWxlSGFuZGxlJiBzb3VyY2UsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBGaWxlSGFuZGxlJiYgZmlsZSkKICAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQotICAgICwgbV9maWxlKGZpbGUpCisgICAgLCBtX2ZpbGUoV1RGTW92ZShm
aWxlKSkKIHsKLSAgICBBU1NFUlQobV9maWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpOworICAgIEFTU0VSVChtX2ZpbGUpOwogCiAgICAgbV9zb3VyY2UtPnJlZ2lz
dGVyU3luY0FjY2Vzc0hhbmRsZShtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KQEAgLTg4LDcgKzg4
LDcgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6dHJ1bmNhdGUodW5zaWduZWQg
bG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWYKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9z
IH0pOwogCiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOwot
ICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCBzaXplLCB3b3JrZXJUaHJlYWQg
PSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICBXb3JrZXJHbG9iYWxT
Y29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgZmlsZSA9IG1fZmlsZS5oYW5kbGUoKSwgc2l6ZSwgd29ya2VyVGhyZWFkID0gUmVmIHsg
c2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdWNjZXNzID0g
RmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZpbGUsIHNpemUpXShhdXRvJikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBs
ZXRlUHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dm9pZD4geyB9IDogRXhjZXB0aW9uIHsg
VW5rbm93bkVycm9yIH0pOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGU6OmdldFNpemUoRE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xv
bmc+CiAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkNvbnRleHQgaXMgaW52YWxpZCJfcyB9KTsKIAogICAgIG1fcGVuZGluZ1Byb21p
c2VzLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9z
dEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmls
ZSA9IG1fZmlsZSwgd29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0
YWJsZSB7CisgICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2so
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUuaGFuZGxlKCksIHdv
cmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgewogICAgICAg
ICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgc3VjY2VzcyA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGUpXShhdXRvJikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1Ro
aXMtPmNvbXBsZXRlUHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dWludDY0X3Q+IHsgc3Vj
Y2Vzcy52YWx1ZSgpIH0gOiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2goRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9zIH0p
OwogCiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOwotICAg
IFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBz
Y29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9z
dEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmls
ZSA9IG1fZmlsZS5oYW5kbGUoKSwgd29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgp
IH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdWNjZXNzID0gRmlsZVN5c3RlbTo6Zmx1
c2hGaWxlKGZpbGUpXShhdXRvJikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlUHJvbWlzZShzdWNjZXNzID8gRXhj
ZXB0aW9uT3I8dm9pZD4geyB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOwpAQCAtMTQ5
LDIwICsxNDksMTkgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VJbnRl
cm5hbChDbG9zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgaWYgKGlzQ2xvc2luZykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fZmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICBBU1NFUlQobV9maWxlKTsKICAgICBjbG9zZUZpbGUoKTsK
IH0KIAogdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VGaWxlKCkKIHsKLSAg
ICBpZiAobV9maWxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgaWYgKCFtX2ZpbGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHNjb3BlID0gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
QVNTRVJUKHNjb3BlKTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0
b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gc3RkOjpleGNo
YW5nZShtX2ZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpLCB3b3Jr
ZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0
RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxl
ID0gc3RkOjpleGNoYW5nZShtX2ZpbGUsIHsgfSksIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3Bl
LT50aHJlYWQoKSB9XSgpIG11dGFibGUgewogICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oYXV0byYpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5k
aWRDbG9zZUZpbGUoKTsKQEAgLTIxMiwxMSArMjExLDExIEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVk
IGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnJlYWQoQnVmZmVyU291cmNl
JiYKICAgICBpZiAoIW1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5p
c2hlZCBvcGVyYXRpb24iX3MgfTsKIAotICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVr
RmlsZShtX2ZpbGUsIG9wdGlvbnMuYXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOworICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUuaGFu
ZGxlKCksIG9wdGlvbnMuYXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcp
OwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byByZWFkIGF0IG9mZnNldCJfcyB9OwogCi0gICAgcmVz
dWx0ID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZSwgYnVmZmVyLm11dGFibGVEYXRh
KCksIGJ1ZmZlci5sZW5ndGgoKSk7CisgICAgcmVzdWx0ID0gRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKG1fZmlsZS5oYW5kbGUoKSwgYnVmZmVyLm11dGFibGVEYXRhKCksIGJ1ZmZlci5sZW5ndGgo
KSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHJlYWQgZnJvbSBmaWxlIl9zIH07CiAKQEAgLTIz
MywxMSArMjMyLDExIEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRlKEJ1ZmZlclNvdXJjZSYmCiAgICAgaWYgKCFtX3BlbmRp
bmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVuZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07
CiAKLSAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlLCBvcHRpb25z
LmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKKyAgICBpbnQgcmVz
dWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlLmhhbmRsZSgpLCBvcHRpb25zLmF0LCBG
aWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKICAgICBpZiAocmVzdWx0ID09
IC0xKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWls
ZWQgdG8gd3JpdGUgYXQgb2Zmc2V0Il9zIH07CiAKLSAgICByZXN1bHQgPSBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX2ZpbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSk7CisgICAg
cmVzdWx0ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlLmhhbmRsZSgpLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byB3cml0ZSB0
byBmaWxlIl9zIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgKaW5k
ZXggYjA3Yjk0MDMwMDJkN2QxZGU5YWQ4YTA0MDViZDhhOWI2NjRmYzE5Yy4uNGFkMDUyMzU4ZjVm
NGZkMjg5ZWVhNzA2MjIxZDllMDAyODE4M2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKICNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgIkZpbGVIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBhdDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhh
bmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1GaWxlSGFu
ZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlSGFuZGxlJiYp
OwogICAgIH5GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSgpOwogCiAgICAgdm9pZCB0cnVuY2F0
ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwpA
QCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZh
dGU6Ci0gICAgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIEZpbGVTeXN0ZW1GaWxlSGFuZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhh
bmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZUhhbmRsZSYm
KTsKICAgICBib29sIGlzQ2xvc2luZ09yQ2xvc2VkKCkgY29uc3Q7CiAgICAgdXNpbmcgQ2xvc2VD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+Owog
ICAgIHZvaWQgY2xvc2VJbnRlcm5hbChDbG9zZUNhbGxiYWNrJiYpOwpAQCAtNzUsNyArNzYsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPiBtX3NvdXJjZTsKICAg
ICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGU7CisgICAgRmlsZUhhbmRsZSBt
X2ZpbGU7CiAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV9jbG9zZVJlc3Vs
dDsKICAgICBWZWN0b3I8Q2xvc2VDYWxsYmFjaz4gbV9jbG9zZUNhbGxiYWNrczsKICAgICB1c2lu
ZyBQcm9taXNlID0gc3RkOjp2YXJpYW50PERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiwgRE9NUHJv
bWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dv
cmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggY2IzZWNlYmQ0MThmOWVl
ZjliNGM2M2EwYmM0ZGIyMTBhZTVjZTczZC4uMmZkYmM4YzkzMDVhMzc1NWE2ZDI1NjFjOGIzMzdj
ZWRiMDRiOGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbi5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Y29tcGxldGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lkZW50aWZp
ZQogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIFdvcmtlckZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxs
YmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGU+PiYmIHJlc3VsdCkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpkaWRDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKENhbGxiYWNrSWRlbnRpZmllciBjYWxs
YmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fZ2V0QWNjZXNzSGFuZGxDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50
aWZpZXIpKQogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMjU5LDEwICsy
NTksOSBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxlSQogCiAgICAgY2FsbE9uTWFpblRocmVhZChb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQo
KSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50
aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIGNyb3NzVGhyZWFkUmVzdWx0
ID0gcmVzdWx0OwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICBjcm9zc1RocmVhZFJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQuZXhj
ZXB0aW9uKCkpOwotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tG
b3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUoY3Jvc3NUaHJlYWRS
ZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShyZXN1bHQuZXhjZXB0aW9uKCkpOworICAgICAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uaAppbmRleCBlNTc3ZmIxYjRjZWZjZTc4NmI0NDdiZWJmYjUwOTVmZWFmZWNjMWRmLi5h
ODhlZWQ5OGI4ODE4NzIyNzQ5ZDc2YTVhNTU2YmU1ZWM1YzgxYzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsZUhhbmRsZTsKIGNsYXNzIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBX
b3JrZXJUaHJlYWQ7CkBAIC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEdldEhh
bmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtSGFuZGxl
Q2xvc2VTY29wZT4+JiYpOwogICAgIHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZpZXIs
IEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAgICB2b2lkIGNvbXBsZXRlU3RyaW5n
Q2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxTdHJpbmc+JiYpOwotICAg
IHZvaWQgZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2Vw
dGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZT4+JiYpOworICAgIHZvaWQgZGlkQ3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVIYW5kbGU+PiYmKTsKICAg
ICB2b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9u
T3I8dm9pZD4mJiByZXN1bHQpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJhY2tJ
ZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggNzhiNGVlYTllNmY1ZTQyMjVjMGFlYmJkZGY0
NjMxYTJlY2QzZGFmMC4uZDZlYWUzODc2OTQ1YmYxMDI3OThlOTcyMDY1NjJkODVmYmFmOGJmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTUyLDYgKzUyLDExIEBA
IEZpbGVIYW5kbGU6OkZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGUgbW9kZSwgT3B0aW9uCiB7CiB9CiAKK0ZpbGVIYW5kbGU6OkZpbGVIYW5kbGUo
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiYgaGFuZGxlKQorICAgIDogbV9maWxlSGFu
ZGxlKFdURk1vdmUoaGFuZGxlKSkKK3sKK30KKwogRmlsZUhhbmRsZTo6fkZpbGVIYW5kbGUoKQog
ewogICAgIGNsb3NlKCk7CkBAIC02Myw2ICs2OCw5IEBAIEZpbGVIYW5kbGUmIEZpbGVIYW5kbGU6
Om9wZXJhdG9yPShGaWxlSGFuZGxlJiYgb3RoZXIpCiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhl
ci5tX3BhdGgpOwogICAgIG1fbW9kZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKICAgICBtX2Zp
bGVIYW5kbGUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgbV9zaG91bGRMb2NrID0gb3RoZXIubV9z
aG91bGRMb2NrOworICAgIG1fbG9ja01vZGUgPSBvdGhlci5tX2xvY2tNb2RlOworCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCkBAIC04NCw4ICs5MiwxMiBAQCBib29sIEZpbGVIYW5kbGU6Om9wZW4o
Y29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbW9kZSkKIAogYm9v
bCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCEqdGhpcykKICAgICAgICAgbV9maWxlSGFuZGxl
ID0gbV9zaG91bGRMb2NrID8gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKG1fcGF0aCwgbV9t
b2RlLCBtX2xvY2tNb2RlKSA6ICBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BhdGgsIG1fbW9kZSk7
CisKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQogCkBAIC05Myw2ICsx
MDUsNyBAQCBpbnQgRmlsZUhhbmRsZTo6cmVhZCh2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKQogewog
ICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1cm4gLTE7CisKICAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cmVhZEZyb21GaWxlKG1fZmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIApAQCAt
MTAwLDYgKzExMyw3IEBAIGludCBGaWxlSGFuZGxlOjp3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKQogewogICAgIGlmICghb3BlbigpKQogICAgICAgICByZXR1cm4gLTE7CisKICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBkYXRhLCBsZW5n
dGgpOwogfQogCkBAIC0xMjYsOCArMTQwLDE1IEBAIHZvaWQgRmlsZUhhbmRsZTo6Y2xvc2UoKQog
ICAgIGlmIChtX3Nob3VsZExvY2sgJiYgKnRoaXMpIHsKICAgICAgICAgLy8gRmlsZVN5c3RlbTo6
dW5sb2NrQW5kQ2xvc2VGaWxlIHJlcXVpcmVzIHRoZSBmaWxlIGhhbmRsZSB0byBiZSB2YWxpZCB3
aGlsZSBjbG9zZUZpbGUgZG9lcyBub3QKICAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7Cit9CisKK0ZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBGaWxlSGFuZGxlOjpoYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2ZpbGVIYW5kbGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVIYW5kbGUuaAppbmRleCA1MGQ4MjRjYWVlOWJhMTI0MDk4NDM1ZWE3MjE1ZDE1MTc4
N2RiY2UxLi5mMjM2YjQyODZhZDI3OWM5MzQ0NjI4MWQyY2I3NzBhOTkwMzE5NWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCkBAIC0zNiwxNSArMzYsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7CiBwdWJs
aWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKKyAgICB+RmlsZUhhbmRsZSgpOwogICAg
IEZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUp
OwogICAgIEZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGUsIE9wdGlvblNldDxGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU+KTsKLSAgICBGaWxlSGFu
ZGxlKGNvbnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZp
bGVIYW5kbGUmJiBvdGhlcik7Ci0KLSAgICB+RmlsZUhhbmRsZSgpOwotCi0gICAgRmlsZUhhbmRs
ZSYgb3BlcmF0b3I9KGNvbnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxl
SGFuZGxlJiBvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKTsKKyAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmKSA9IGRlbGV0ZTsKKyAgICBGaWxlSGFuZGxlJiBvcGVyYXRvcj0oY29u
c3QgRmlsZUhhbmRsZSYpID0gZGVsZXRlOworICAgIGV4cGxpY2l0IEZpbGVIYW5kbGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiYpOwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0OwogCkBAIC01NSw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIHByaW50Zihj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CiAgICAg
dm9pZCBjbG9zZSgpOwogCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlIG1fbW9kZSB7IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKaW5kZXggNzNhYTY3NzIxODMwOTg1ODRl
MWYxYmUxMDk5Y2RmMzUwMDIwZmZiMy4uOWI4YzA0ZGRmMWNiM2FkOGZlNzYxNWI0M2EzYWQyMTBi
ZjFkY2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCkBAIC0xNzIsNyArMTcy
LDcgQEAgRXhwZWN0ZWQ8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRsZUluZm8s
IEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGUKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKIAotICAgIGF1dG8gaXBjSGFu
ZGxlID0gSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoaGFuZGxlKTsKKyAgICBhdXRvIGlw
Y0hhbmRsZSA9IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKHN0ZDo6ZXhjaGFuZ2UoaGFu
ZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSk7CiAgICAgaWYgKCFp
cGNIYW5kbGUpIHsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5k
Tm90U3VwcG9ydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDQyOTNmOGM4
MDVlZTUwZDk1NjZkYWQ5ZjdmNTRiMGMwNTMwNDFjZC4uZTIxODExZTc2Mjg1Nzk0MTIzOGU4Njcx
NjZiZDRiODdhMzE4NzgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTM3MSwx
MiArMzcxLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW4KICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlLT5jcmVh
dGVTeW5jQWNjZXNzSGFuZGxlKCk7Ci0gICAgYXV0byBmaWxlSGFuZGxlID0gcmVzdWx0ID8gcmVz
dWx0LnZhbHVlKCkuc2Vjb25kIDogSVBDOjpTaGFyZWRGaWxlSGFuZGxlKCk7Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLQotICAgIC8vIENsb3NlIHRoZSBmaWxlIGhh
bmRsZSBpbiBuZXR3b3JrIHByb2Nlc3MuCi0gICAgZmlsZUhhbmRsZS5jbG9zZSgpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkRmlsZUhhbmRsZS5jcHAKaW5kZXggNjRlNDIxNzgwMWEyMWYwNWQ4OGI0ZTYxNjhkNzBi
ODlmOTVhN2UwMy4uNDc4YTY2NTZjYzg0OWZkNGE5Yjc5MDhmNjAxMTExMjk2NTVlOGZmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKQEAg
LTI4LDE1ICsyOCwxMyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotdm9pZCBTaGFyZWRGaWxlSGFu
ZGxlOjpjbG9zZSgpCi17Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKLX0K
LQogI2lmICFQTEFURk9STShDT0NPQSkKIAotc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxl
PiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
KQorc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVh
dGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiYgaGFuZGxlKQogeworICAgIGF1dG8g
Y3VycmVudEhhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoY3VycmVudEhhbmRsZSk7CisKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKaW5kZXggNTg1YWQ5
OTM3MjcyYzJkMGFhOWQ1MzdjMjM3YzgzYTZiNTYwOGI3Yy4uNDgzYzc3NDlmMWY4MmY4YjBkMDIx
MDMwM2YzNTQ1NWIzNTJmMThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEZpbGVIYW5kbGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZUhhbmRsZS5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIApAQCAtMzUsMjIgKzM2LDIxIEBAIGNsYXNzIEVuY29kZXI7
CiAKIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IGNyZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IGNyZWF0
ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmJik7CiAKICAgICBTaGFyZWRGaWxlSGFu
ZGxlKCkgPSBkZWZhdWx0OwotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQotICAgIHZvaWQgY2xvc2UoKTsKKyAgICBXZWJDb3Jl
OjpGaWxlSGFuZGxlIHJlbGVhc2UoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1faGFuZGxlLCB7
IH0pOyB9CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkRmlsZUhhbmRsZShGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlKQotICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICBleHBs
aWNpdCBTaGFyZWRGaWxlSGFuZGxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYmIGhh
bmRsZSkKKyAgICAgICAgOiBtX2hhbmRsZShXVEZNb3ZlKGhhbmRsZSkpCiAgICAgewogICAgIH0K
IAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZSB7IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlSGFuZGxl
IG1faGFuZGxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvU2hhcmVkRmlsZUhhbmRsZUNvY29hLmNwcApp
bmRleCA2ZGE4ZGViNWE2NjFjMWMyYTAwNzhhZGQ0OTI3MWYyYzhiZmM5NjA2Li5jN2ZiM2M2NTJi
MDQzYTYxNWI1MjJjNDg2M2I3MTM0M2E5ZjY5YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9TaGFyZWRGaWxlSGFuZGxlQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL1NoYXJlZEZpbGVIYW5kbGVDb2NvYS5jcHAKQEAg
LTMxLDE1ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotc3RkOjpvcHRpb25hbDxTaGFy
ZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gU2hh
cmVkRmlsZUhhbmRsZTo6Y3JlYXRlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYmIGhh
bmRsZSkKIHsKLSAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRsZSB7IGhhbmRsZSB9OworICAgIHJl
dHVybiBTaGFyZWRGaWxlSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpIH07CiB9CiAKIHZvaWQgU2hh
cmVkRmlsZUhhbmRsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgbWFj
aF9wb3J0X25hbWVfdCBmaWxlcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwotICAgIGlmIChmaWxlcG9y
dF9tYWtlcG9ydChtX2hhbmRsZSwgJmZpbGVwb3J0KSA9PSAtMSkgeworICAgIGlmIChmaWxlcG9y
dF9tYWtlcG9ydChtX2hhbmRsZS5oYW5kbGUoKSwgJmZpbGVwb3J0KSA9PSAtMSkgewogICAgICAg
ICBlbmNvZGVyIDw8IE1hY2hQb3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01Nyw3
ICs1Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gU2hhcmVkRmlsZUhhbmRs
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGZkID09IC0xKQogICAgICAgICBy
ZXR1cm4gU2hhcmVkRmlsZUhhbmRsZSB7IH07CiAKLSAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRs
ZTo6Y3JlYXRlKGZkKTsKKyAgICByZXR1cm4gU2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKFdURk1v
dmUoZmQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDNjODdlMWY3NTRmYzU5MzRjY2E5YTky
NTgwOTQ2OGQ5ZmVlODRlNGEuLmJhMjFlNGQ4YjQ3NGQ1ZGEwYTFlYmM0NzdhMTAzZDgyOWM1ZWEx
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CkBAIC0xNDksOCArMTQ5LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUgKICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRv
RXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CiAKLSAgICAgICAgYXV0byByZXN1bHRWYWx1ZSA9
IHJlc3VsdC52YWx1ZSgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnBhaXIgeyBy
ZXN1bHRWYWx1ZS5maXJzdCwgcmVzdWx0VmFsdWUuc2Vjb25kLmhhbmRsZSgpIH0pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnBhaXIgeyByZXN1bHQudmFsdWUoKS5maXJzdCwgcmVz
dWx0LnZhbHVlKCkuc2Vjb25kLnJlbGVhc2UoKSB9KTsKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>