<?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>234103</bug_id>
          
          <creation_ts>2021-12-09 14:41:27 -0800</creation_ts>
          <short_desc>Add FileSystem function to read a file at a path</short_desc>
          <delta_ts>2021-12-10 16:37:21 -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>Web Template Framework</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="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>saam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1822346</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 14:41:27 -0800</bug_when>
    <thetext>There&apos;s lots of code that wants to load a file into a buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822347</commentid>
    <comment_count>1</comment_count>
      <attachid>446610</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 14:41:54 -0800</bug_when>
    <thetext>Created attachment 446610
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822440</commentid>
    <comment_count>2</comment_count>
      <attachid>446636</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 17:07:17 -0800</bug_when>
    <thetext>Created attachment 446636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822444</commentid>
    <comment_count>3</comment_count>
      <attachid>446638</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 17:11:36 -0800</bug_when>
    <thetext>Created attachment 446638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822445</commentid>
    <comment_count>4</comment_count>
      <attachid>446639</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 17:14:35 -0800</bug_when>
    <thetext>Created attachment 446639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822449</commentid>
    <comment_count>5</comment_count>
      <attachid>446639</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 17:17:33 -0800</bug_when>
    <thetext>Comment on attachment 446639
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:543
&gt; +    auto handle = FileSystem::openFile(path, FileSystem::FileOpenMode::Read);

if (FileSystem::isHandleValid(handle)) return std::nullopt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822451</commentid>
    <comment_count>6</comment_count>
      <attachid>446639</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 17:19:53 -0800</bug_when>
    <thetext>Comment on attachment 446639
Patch

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

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:543
&gt;&gt; +    auto handle = FileSystem::openFile(path, FileSystem::FileOpenMode::Read);
&gt; 
&gt; if (FileSystem::isHandleValid(handle)) return std::nullopt;

The first line of `readEntireFile` is that check so I didn&apos;t want to do that check twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822459</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 17:39:34 -0800</bug_when>
    <thetext>ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822512</commentid>
    <comment_count>8</comment_count>
      <attachid>446660</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-09 22:02:09 -0800</bug_when>
    <thetext>Created attachment 446660
Patch

Adding another usage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822820</commentid>
    <comment_count>9</comment_count>
      <attachid>446660</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-10 11:01:05 -0800</bug_when>
    <thetext>Comment on attachment 446660
Patch

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

&gt; Source/JavaScriptCore/inspector/remote/socket/RemoteInspectorSocket.cpp:268
&gt; +    return contents.has_value() ? String::adopt(WTFMove(contents.value())) : emptyString();

You may remove has_value(), std::optional supports operator bool; and you already use &quot;content ? ... : ... &quot; below.

&gt; Source/WTF/wtf/FileSystem.cpp:538
&gt; +std::optional&lt;Vector&lt;uint8_t&gt;&gt; readEntireFileAt(const String&amp; path)

We don&apos;t use &quot;At&quot; for functions that takes path string parameter in FileSystem.h/.cpp, so it seems better to just use &quot;readEntireFile&quot;.

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:118
&gt; +    if (!buffer.has_value()) {

has_value() not needed.

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:158
&gt; +    if (!buffer.has_value()) {

Ditto.

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:-227
&gt; -bool CurlCacheEntry::loadFileToBuffer(const String&amp; filepath, Vector&lt;uint8_t&gt;&amp; buffer)

Do you need to remove its definition in header file?

&gt; Source/WebCore/platform/network/curl/CurlCacheManager.cpp:106
&gt; +    if (!buffer.has_value()) {

has_value() not needed.

&gt; Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp:830
&gt; +    EXPECT_FALSE(FileSystem::readEntireFile(FileSystem::invalidPlatformFileHandle).has_value());
&gt; +    EXPECT_FALSE(FileSystem::readEntireFileAt(emptyString()).has_value());
&gt; +    EXPECT_FALSE(FileSystem::readEntireFileAt(FileSystem::pathByAppendingComponent(tempEmptyFolderPath(), &quot;does-not-exist&quot;)).has_value());
&gt; +    EXPECT_FALSE(FileSystem::readEntireFileAt(tempEmptyFilePath()).has_value());
&gt; +
&gt; +    auto buffer = FileSystem::readEntireFileAt(tempFilePath());
&gt; +    EXPECT_TRUE(buffer.has_value());

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822828</commentid>
    <comment_count>10</comment_count>
      <attachid>446660</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-10 11:17:02 -0800</bug_when>
    <thetext>Comment on attachment 446660
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:540
&gt; +    if (path.isEmpty())

Also, I&apos;m not sure if this does anything.  Won&apos;t openFile return an invalid file handle if given an empty path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822829</commentid>
    <comment_count>11</comment_count>
      <attachid>446766</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-10 11:17:32 -0800</bug_when>
    <thetext>Created attachment 446766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822834</commentid>
    <comment_count>12</comment_count>
      <attachid>446768</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-10 11:23:16 -0800</bug_when>
    <thetext>Created attachment 446768
Patch

Addressing both reviewer feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822835</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-10 11:24:19 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Comment on attachment 446660 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446660&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:540
&gt; &gt; +    if (path.isEmpty())
&gt; 
&gt; Also, I&apos;m not sure if this does anything.  Won&apos;t openFile return an invalid
&gt; file handle if given an empty path?

The tests say yes so removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822871</commentid>
    <comment_count>14</comment_count>
      <attachid>446768</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-10 12:04:57 -0800</bug_when>
    <thetext>Comment on attachment 446768
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:541
&gt; +    auto contents = readEntireFile(handle);

readEntireFile calls readFromFile once.  readFromFile can return a positive number of bytes indicating that the file was partially read successfully and you need to call it again to read the rest.  I think it would be worth fixing that while making more functionality rely on it just working.  Otherwise we will increase the number of times a file read is reported to fail, especially with larger files.
It would probably also be worth returning failure if the large allocation fails instead of crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822961</commentid>
    <comment_count>15</comment_count>
      <attachid>446807</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-10 14:01:16 -0800</bug_when>
    <thetext>Created attachment 446807
Patch

Read in a loop until all the contents are read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822966</commentid>
    <comment_count>16</comment_count>
      <attachid>446808</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-10 14:09:00 -0800</bug_when>
    <thetext>Created attachment 446808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823007</commentid>
    <comment_count>17</comment_count>
      <attachid>446808</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-10 14:54:20 -0800</bug_when>
    <thetext>Comment on attachment 446808
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:531
&gt; +    unsigned totalBytesRead = 0;

nit: this might limit the capability to 4GB.  size_t would increase that to the size of the virtual address space.

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:123
&gt; +    if (auto bufferSize = buffer.value().size())

nit: buffer-&gt;size() would also work

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:124
&gt; +        job-&gt;getInternal()-&gt;client()-&gt;didReceiveBuffer(job, SharedBuffer::create(WTFMove(buffer.value())), bufferSize);

nit: WTFMove(*buffer) would also work.  I don&apos;t actually care about this though.

&gt; Source/WebCore/rendering/RenderThemeWin.cpp:1028
&gt; -        return String();
&gt; +        return emptyString();

Why was this change made?  I guess it makes it more consistent with the !USE(CF) path, but why not change that to be a null string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823020</commentid>
    <comment_count>18</comment_count>
      <attachid>446825</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-10 15:08:19 -0800</bug_when>
    <thetext>Created attachment 446825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823091</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-10 16:36:37 -0800</bug_when>
    <thetext>Committed r286883 (245113@main): &lt;https://commits.webkit.org/245113@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446825.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823093</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-10 16:37:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/86345889&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446610</attachid>
            <date>2021-12-09 14:41:54 -0800</date>
            <delta_ts>2021-12-09 17:07:17 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>10454</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXggOWE2ODc2
NTdjODZiLi4wOThhNjFkYzA2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXQuY3BwCkBAIC0yNjMsMTkgKzI2Myw5IEBAIFN0cmluZyBSZW1vdGVJbnNwZWN0b3I6
OmJhY2tlbmRDb21tYW5kcygpIGNvbnN0CiAgICAgaWYgKG1fYmFja2VuZENvbW1hbmRzUGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKG1fYmFja2VuZENvbW1hbmRzUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGNvbnRlbnRzID0gRmlsZVN5c3RlbTo6
cmVhZEVudGlyZUZpbGVBdChtX2JhY2tlbmRDb21tYW5kc1BhdGgpOwogCi0gICAgU3RyaW5nIHJl
c3VsdDsKLSAgICBpZiAoYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaGFuZGxlKSkg
ewotICAgICAgICBWZWN0b3I8TENoYXI+IGJ1ZmZlcigqc2l6ZSk7Ci0gICAgICAgIGludCBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCAq
c2l6ZSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oYnl0ZXNSZWFkKSA9PSAqc2l6ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFN0cmluZzo6YWRv
cHQoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY29udGVudHMuaGFzX3ZhbHVl
KCkgPyBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY29udGVudHMudmFsdWUoKSkpIDogZW1wdHlTdHJp
bmcoKTsKIH0KIAogLy8gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCBoYW5kbGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmNjkwNDkyOGVmNTUuLjVhMTMzNTQ1ODdmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKQEAgLTUzNSw2ICs1MzUsMTkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRF
bnRpcmVGaWxlQXQoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gYWN0dWFsUGF0aCA9
IFN0cmluZzo6ZnJvbVVURjgoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpKTsKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFjdHVhbFBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBjb250ZW50cyA9IHJl
YWRFbnRpcmVGaWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
CisKKyAgICByZXR1cm4gY29udGVudHM7Cit9CisKIHZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmll
ZFNpbmNlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBXYWxsVGltZSB0aW1lKQogewogICAgIC8v
IFRoaXMgZnVuY3Rpb24gbWF5IGRlbGV0ZSBkaXJlY3RvcnkgZm9sZGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CmluZGV4IGZkODUzYTQ5YWFjOC4uYTAxYjM5NDIyZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0x
NDgsNiArMTQ4LDcgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIHVzaW5nIFNhbHQgPSBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDg+OwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2Fs
dD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gcmVhZEVudGlyZUZpbGVBdChjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAvLyBQcmVmaXgg
aXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVs
bCBwYXRoLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZm
aXggPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggNjhjYWYwNTQ2YjYyLi45MTBlMTAyNTQ2NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcApAQCAtMTE0LDEyICsxMTQsMTQgQEAgYm9vbCBDdXJsQ2FjaGVFbnRy
eTo6cmVhZENhY2hlZERhdGEoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKICAgICBBU1NFUlQoam9i
LT5jbGllbnQoKSk7CiAKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIGlmICghbG9h
ZEZpbGVUb0J1ZmZlcihtX2NvbnRlbnRGaWxlbmFtZSwgYnVmZmVyKSkKKyAgICBhdXRvIGJ1ZmZl
ciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlQXQobV9jb250ZW50RmlsZW5hbWUpOworICAg
IGlmICghYnVmZmVyLmhhc192YWx1ZSgpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIHRvIHJlYWQgY2FjaGVkIGNvbnRlbnRcbiIsIG1fY29u
dGVudEZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAKLSAgICBpZiAoYXV0byBidWZmZXJTaXplID0gYnVmZmVyLnNpemUoKSkKLSAgICAgICAg
am9iLT5nZXRJbnRlcm5hbCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSksIGJ1ZmZlclNpemUpOworICAgIGlmIChh
dXRvIGJ1ZmZlclNpemUgPSBidWZmZXIudmFsdWUoKS5zaXplKCkpCisgICAgICAgIGpvYi0+Z2V0
SW50ZXJuYWwoKS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoam9iLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSksIGJ1ZmZlclNpemUpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0xNTIsMTEgKzE1NCwxMyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojpz
YXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBi
b29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkUmVzcG9uc2VIZWFkZXJzKCkKIHsKLSAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwotICAgIGlmICghbG9hZEZpbGVUb0J1ZmZlcihtX2hlYWRlckZpbGVu
YW1lLCBidWZmZXIpKQorICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZp
bGVBdChtX2hlYWRlckZpbGVuYW1lKTsKKyAgICBpZiAoIWJ1ZmZlci5oYXNfdmFsdWUoKSkgewor
ICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyB0byBy
ZWFkIGNhY2hlZCBoZWFkZXJzXG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBTdHJpbmcgaGVhZGVyQ29udGVu
dCA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBTdHJpbmcgaGVh
ZGVyQ29udGVudCA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOwogICAg
IFZlY3RvcjxTdHJpbmc+IGhlYWRlckZpZWxkcyA9IGhlYWRlckNvbnRlbnQuc3BsaXQoJ1xuJyk7
CiAKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMu
YmVnaW4oKTsKQEAgLTIyNCw0NCArMjI4LDYgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJh
dGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogICAgIG1fYmFzZW5hbWUgPSBiYXNl
TmFtZUJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZp
bGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKLXsKLSAgICAvLyBPcGVuIHRoZSBmaWxlCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGlucHV0RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVwYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChpbnB1dEZpbGUpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENv
dWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVT
eXN0ZW06OmZpbGVTaXplKGZpbGVwYXRoKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAg
IExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVz
XG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaW5wdXRGaWxlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8v
IExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNpemUoKmZp
bGVzaXplKTsKLSAgICBpbnQgYnVmZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFk
U2l6ZSA9IDQwOTY7Ci0gICAgaW50IGJ5dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUgKCpmaWxlc2l6
ZSA+IGJ1ZmZlclBvc2l0aW9uKSB7Ci0gICAgICAgIGlmICgqZmlsZXNpemUgLSBidWZmZXJQb3Np
dGlvbiA8IGJ1ZmZlclJlYWRTaXplKQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSAqZmls
ZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKLQotICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVt
OjpyZWFkRnJvbUZpbGUoaW5wdXRGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24s
IGJ1ZmZlclJlYWRTaXplKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6
ZSkgewotICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IHJl
YWQgZnJvbSAlc1xuIiwgZmlsZXBhdGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNpemU7
Ci0gICAgfQotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgIHJldHVy
biB0cnVlOwotfQotCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjppbnZhbGlkYXRlKCkKIHsKICAgICBj
bG9zZUNvbnRlbnRGaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggMTZmZjE2ZjhjZDRjLi5j
NWEwYWQ0NDQ1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTExMCwzMSArMTEwLDE2IEBAIHZv
aWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gZmlsZXNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShpbmRleEZpbGVQYXRo
KTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJy
b3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBpbmRleEZpbGVQYXRoLmxhdGlu
MSgpLmRhdGEoKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOwor
ICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoaW5kZXhGaWxlKTsK
KyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBpZiAoIWJ1ZmZlci5o
YXNfdmFsdWUoKSkgeworICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBu
b3QgcmVhZCAlc1xuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVy
Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICBidWZmZXIucmVzaXplKCpmaWxlc2l6ZSk7
Ci0gICAgaW50IGJ1ZmZlclBvc2l0aW9uID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSBJ
T19CVUZGRVJTSVpFOwotICAgIHdoaWxlICgqZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewot
ICAgICAgICBpZiAoKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkK
LSAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247
Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGluZGV4RmlsZSwgYnVmZmVyLmRh
dGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGJ1ZmZlclBv
c2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaW5kZXhGaWxlKTsKLQogICAgIC8vIENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCi0gICAg
U3RyaW5nIGhlYWRlckNvbnRlbnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgYXV0byBoZWFkZXJDb250ZW50ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZl
ci52YWx1ZSgpKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gaW5kZXhVUkxzID0gaGVhZGVyQ29udGVu
dC5zcGxpdCgnXG4nKTsKLSAgICBidWZmZXIuY2xlYXIoKTsKIAogICAgIC8vIEFkZCBlbnRyaWVz
IHRvIGluZGV4CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5kZXhV
UkxzLmJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNw
cAppbmRleCAwZDQ1YWQ1ZTkyMzAuLmRmYzQwZTg5NjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCkBAIC0xMDIwLDU2ICsxMDIwLDIwIEBAIENvbG9y
IFJlbmRlclRoZW1lV2luOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQsIE9wdGlv
blNldDxTdHlsZUNvbG9yT3B0CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCi1zdGF0aWMgdm9pZCBm
aWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlLCBsb25nIGxvbmcgZmlsZXNpemUsIFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQotewot
ICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNp
emUoZmlsZXNpemUgKyAxKTsKLQotICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAgaW50
IGJ1ZmZlclJlYWRTaXplID0gNDA5NjsKLSAgICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICB3aGls
ZSAoZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewotICAgICAgICBpZiAoZmlsZXNpemUgLSBi
dWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRTaXplKQotICAgICAgICAgICAgYnVmZmVyUmVhZFNp
emUgPSBmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwotCi0gICAgICAgIGJ5dGVzUmVhZCA9IEZp
bGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRp
b24sIGJ1ZmZlclJlYWRTaXplKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFk
U2l6ZSkgewotICAgICAgICAgICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBidWZmZXJQb3NpdGlvbiArPSBidWZmZXJSZWFkU2l6ZTsK
LSAgICB9Ci0KLSAgICBidWZmZXJbZmlsZXNpemVdID0gMDsKLX0KLQogU3RyaW5nIFJlbmRlclRo
ZW1lV2luOjpzdHJpbmdXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
cmVxdWVzdGVkVVJMUmVmID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3ZWJLaXRC
dW5kbGUoKSwgbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDApKTsKICAgICBpZiAoIXJlcXVlc3RlZFVSTFJlZikKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFVJbnQ4IHJl
cXVlc3RlZEZpbGVQYXRoW01BWF9QQVRIXTsKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHJlcXVlc3RlZFVSTFJlZi5nZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQ
YXRoLCBNQVhfUEFUSCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVh
ZCk7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5k
bGUpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBhdXRvIGZpbGVzaXplID0gRmls
ZVN5c3RlbTo6ZmlsZVNpemUocmVxdWVzdGVkRmlsZUhhbmRsZSk7Ci0gICAgaWYgKCFmaWxlc2l6
ZSkgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9CisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGZpbGVDb250ZW50czsKLSAgICBmaWxsQnVm
ZmVyV2l0aENvbnRlbnRzT2ZGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUsICpmaWxlc2l6ZSwgZmls
ZUNvbnRlbnRzKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRs
ZSk7CisgICAgYXV0byBjb250ZW50cyA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlQXQocmVx
dWVzdGVkRmlsZVBhdGgpOwogCi0gICAgcmV0dXJuIFN0cmluZyhmaWxlQ29udGVudHMuZGF0YSgp
LCAqZmlsZXNpemUpOworICAgIHJldHVybiBjb250ZW50cyA/IFN0cmluZzo6YWRvcHQoV1RGTW92
ZShjb250ZW50cy52YWx1ZSgpKSkgOiBlbXB0eVN0cmluZygpOwogI2Vsc2UKICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446636</attachid>
            <date>2021-12-09 17:07:17 -0800</date>
            <delta_ts>2021-12-09 17:11:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>4386</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOTBhNmY5MDZkOGNkLi41YWE2NWYwYjUzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjEtMTItMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgRmlsZVN5c3RlbSBmdW5jdGlvbiB0byByZWFkIGEgZmlsZSBhdCBhIHBhdGgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDEwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVt
OjpyZWFkRW50aXJlRmlsZUF0IHdoaWNoIHRha2VzIGEgcGF0aCBhbmQgYXR0ZW1wdHMgdG8gcmVh
ZCB0aGUgd2hvbGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGUgaW50byBhIFZlY3Rvcjx1
aW50OF90Pi4gSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGVtcHR5IHRoZW4gaXQgcmV0
dXJucworICAgICAgICBudWxsb3B0LiBJbnRlcm5hbGx5IGl0IG1hbmFnZXMgdGhlIG9wZW5pbmcg
YW5kIGNsb3Npbmcgb2YgdGhlIGZpbGUgdG8gcHJldmVudCBmaWxlIGhhbmRsZXMKKyAgICAgICAg
ZnJvbSBsZWFraW5nLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGVBdCk6CisgICAgICAgICogd3RmL0Zp
bGVTeXN0ZW0uaDoKKwogMjAyMS0xMi0wOSAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODY3NTQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IGY2OTA0OTI4ZWY1NS4uNWExMzM1NDU4N2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtNTM1LDYgKzUzNSwxOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
cmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGVB
dChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBhY3R1YWxQYXRoID0gU3RyaW5nOjpm
cm9tVVRGOChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkpOworICAg
IGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWN0dWFsUGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gcmVhZEVudGlyZUZp
bGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIHJl
dHVybiBjb250ZW50czsKK30KKwogdm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCiB7CiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggZmQ4
NTNhNDlhYWM4Li5hMDFiMzk0MjJmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0OCw2ICsxNDgs
NyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogdXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWlu
dDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JN
YWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUp
OworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFk
RW50aXJlRmlsZUF0KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRo
ZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCiBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUx
NDU3MGNhMTBhLi5iMzhiY2U2OWNmYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0wOSAgRG9uIE9sbXN0
ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGZ1
bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciByZWFkRW50aXJlRmlsZUF0Lgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTA4ICBCSiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogcHJvdmlkZSBh
IHdheSBmb3IgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGNsaWVudHMgdG8gYmUgdG8gbm90aWZpZWQg
d2hlbiBhbiBleHRlbnNpb24gdGFiIG5hdmlnYXRlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTgzYjI5YWQ5OTAuLmNhZDVjM2Q1MDUzYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTgx
OSw0ICs4MTksMTcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFsUGF0aCkKICAgICBFWFBF
Q1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50cyhzdWJGb2xkZXJQYXRoLCB7ICIuLiIsICIuIiwgIi4iLCAic3ViZm9sZGVyIiB9
KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJGb2xkZXJQYXRoLnV0ZjgoKS5kYXRhKCkpOyAv
LyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFuZCAiLiIKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCByZWFkRW50aXJlRmlsZSkKK3sKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVu
dGlyZUZpbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkuaGFzX3ZhbHVl
KCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZUF0KGVtcHR5
U3RyaW5nKCkpLmhhc192YWx1ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVh
ZEVudGlyZUZpbGVBdChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKSkuaGFzX3ZhbHVlKCkpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZUF0KHRlbXBFbXB0eUZpbGVQYXRo
KCkpLmhhc192YWx1ZSgpKTsKKworICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVu
dGlyZUZpbGVBdCh0ZW1wRmlsZVBhdGgoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLmhhc192
YWx1ZSgpKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZl
ci52YWx1ZSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKGNvbnRlbnRzLnV0ZjgoKS5kYXRhKCksIEZp
bGVTeXN0ZW1UZXN0RGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446638</attachid>
            <date>2021-12-09 17:11:36 -0800</date>
            <delta_ts>2021-12-09 17:14:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>14992</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdjOTRlMzdlMTQ0Yy4uOWVhYmExMDVmOTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0wOSAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlQXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OmJhY2tl
bmRDb21tYW5kcyBjb25zdCk6CisKIDIwMjEtMTItMDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUHJvY2VkdXJlOjpzZXROZWVkc1BDVG9PcmlnaW5NYXAgc2hv
dWxkIGNhbGwgQ29kZTo6Zm9yY2VQcmVzZXJ2YXRpb25PZkIzT3JpZ2lucwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCA5YTY4NzY1N2M4NmIuLjA5OGE2
MWRjMDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
QEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1h
bmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29tbWFuZHNQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQp
OwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmls
ZUF0KG1fYmFja2VuZENvbW1hbmRzUGF0aCk7CiAKLSAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlm
IChhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShoYW5kbGUpKSB7Ci0gICAgICAgIFZl
Y3RvcjxMQ2hhcj4gYnVmZmVyKCpzaXplKTsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksICpzaXplKTsKLSAgICAg
ICAgaWYgKGJ5dGVzUmVhZCA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRlc1JlYWQp
ID09ICpzaXplKQotICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjb250ZW50cy5oYXNfdmFsdWUoKSA/IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShjb250ZW50cy52YWx1ZSgpKSkgOiBlbXB0eVN0cmluZygpOwogfQogCiAv
LyBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50IGhhbmRsZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwYTZmOTA2
ZDhjZC4uNWFhNjVmMGI1MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEyLTA5ICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIEZpbGVTeXN0
ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZp
bGVBdCB3aGljaCB0YWtlcyBhIHBhdGggYW5kIGF0dGVtcHRzIHRvIHJlYWQgdGhlIHdob2xlIGNv
bnRlbnRzCisgICAgICAgIG9mIHRoZSBmaWxlIGludG8gYSBWZWN0b3I8dWludDhfdD4uIElmIHRo
ZSBmaWxlIGlzIG5vdCBmb3VuZCBvciBpcyBlbXB0eSB0aGVuIGl0IHJldHVybnMKKyAgICAgICAg
bnVsbG9wdC4gSW50ZXJuYWxseSBpdCBtYW5hZ2VzIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIG9m
IHRoZSBmaWxlIHRvIHByZXZlbnQgZmlsZSBoYW5kbGVzCisgICAgICAgIGZyb20gbGVha2luZy4K
KworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OnJlYWRFbnRpcmVGaWxlQXQpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisK
IDIwMjEtMTItMDkgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg2NzU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBm
NjkwNDkyOGVmNTUuLjVhMTMzNTQ1ODdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUzNSw2
ICs1MzUsMTkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlQXQoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGF1dG8gYWN0dWFsUGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpKTsKKyAgICBhdXRvIGhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFjdHVhbFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6UmVhZCk7CisgICAgYXV0byBjb250ZW50cyA9IHJlYWRFbnRpcmVGaWxlKGhhbmRsZSk7Cisg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gY29udGVudHM7
Cit9CisKIHZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBXYWxsVGltZSB0aW1lKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGRlbGV0
ZSBkaXJlY3RvcnkgZm9sZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGZkODUzYTQ5YWFjOC4uYTAx
YjM5NDIyZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDgsNiArMTQ4LDcgQEAgaW5saW5lIGJv
b2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1
cm4gaGFuZGxlICE9IGkKIHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+OwogV1RG
X0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGVBdChj
b25zdCBTdHJpbmcmIHBhdGgpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hv
dWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZv
cm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDBkMDViNWY2ZmJmYi4uNTEwMzNkNmQ2NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjEtMTItMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAg
ICAgICBBZGQgRmlsZVN5c3RlbSBmdW5jdGlvbiB0byByZWFkIGEgZmlsZSBhdCBhIHBhdGgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDEwMworCisg
ICAgICAgIFVzZSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZUF0LgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnN0cmluZ1dp
dGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQnVmZmVyV2l0aENvbnRl
bnRzT2ZGaWxlKTogRGVsZXRlZC4KKwogMjAyMS0xMi0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CiAKICAgICAgICAgQW4gYDxpbnB1dD5gIHRoYXQncyBiZWVuIGF1dG9maWxs
ZWQgd2l0aCBvYnNjdXJlZCBjb250ZW50IHNob3VsZCBzdGlsbCBiZSBlZGl0YWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5jcHAKaW5kZXggNjhjYWYwNTQ2YjYyLi45MTBlMTAyNTQ2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApA
QCAtMTE0LDEyICsxMTQsMTQgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cmVhZENhY2hlZERhdGEo
UmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKICAgICBBU1NFUlQoam9iLT5jbGllbnQoKSk7CiAKLSAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIGlmICghbG9hZEZpbGVUb0J1ZmZlcihtX2Nv
bnRlbnRGaWxlbmFtZSwgYnVmZmVyKSkKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlQXQobV9jb250ZW50RmlsZW5hbWUpOworICAgIGlmICghYnVmZmVyLmhhc192
YWx1ZSgpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBv
cGVuICVzIHRvIHJlYWQgY2FjaGVkIGNvbnRlbnRcbiIsIG1fY29udGVudEZpbGVuYW1lLmxhdGlu
MSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBpZiAoYXV0
byBidWZmZXJTaXplID0gYnVmZmVyLnNpemUoKSkKLSAgICAgICAgam9iLT5nZXRJbnRlcm5hbCgp
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSksIGJ1ZmZlclNpemUpOworICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBi
dWZmZXIudmFsdWUoKS5zaXplKCkpCisgICAgICAgIGpvYi0+Z2V0SW50ZXJuYWwoKS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoam9iLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlci52YWx1ZSgpKSksIGJ1ZmZlclNpemUpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
NTIsMTEgKzE1NCwxMyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJz
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBib29sIEN1cmxDYWNoZUVudHJ5
Ojpsb2FkUmVzcG9uc2VIZWFkZXJzKCkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwot
ICAgIGlmICghbG9hZEZpbGVUb0J1ZmZlcihtX2hlYWRlckZpbGVuYW1lLCBidWZmZXIpKQorICAg
IGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdChtX2hlYWRlckZpbGVu
YW1lKTsKKyAgICBpZiAoIWJ1ZmZlci5oYXNfdmFsdWUoKSkgeworICAgICAgICBMT0coTmV0d29y
aywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyB0byByZWFkIGNhY2hlZCBoZWFkZXJz
XG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAKLSAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZyhidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGhl
YWRlckZpZWxkcyA9IGhlYWRlckNvbnRlbnQuc3BsaXQoJ1xuJyk7CiAKICAgICBWZWN0b3I8U3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMuYmVnaW4oKTsKQEAgLTIyNCw0
NCArMjI4LDYgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29u
c3QgQ1N0cmluZyYgdXJsKQogICAgIG1fYmFzZW5hbWUgPSBiYXNlTmFtZUJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIAotYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKLXsKLSAgICAvLyBPcGVu
IHRoZSBmaWxlCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7
Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZv
ciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZp
bGVwYXRoKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2Fj
aGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIExvYWQgdGhlIGZpbGUgY29u
dGVudCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNpemUoKmZpbGVzaXplKTsKLSAgICBpbnQg
YnVmZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IDQwOTY7Ci0gICAg
aW50IGJ5dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUgKCpmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9u
KSB7Ci0gICAgICAgIGlmICgqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRT
aXplKQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSAqZmlsZXNpemUgLSBidWZmZXJQb3Np
dGlvbjsKLQotICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5w
dXRGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsK
LSAgICAgICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewotICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IHJlYWQgZnJvbSAlc1xuIiwgZmls
ZXBhdGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShpbnB1dEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNpemU7Ci0gICAgfQotICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lk
IEN1cmxDYWNoZUVudHJ5OjppbnZhbGlkYXRlKCkKIHsKICAgICBjbG9zZUNvbnRlbnRGaWxlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggMTZmZjE2ZjhjZDRjLi5jNWEwYWQ0NDQ1MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKQEAgLTExMCwzMSArMTEwLDE2IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdl
cjo6bG9hZEluZGV4KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZmlsZXNp
emUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShpbmRleEZpbGVQYXRoKTsKLSAgICBpZiAoIWZpbGVz
aXplKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQg
ZmlsZSBzaXplIG9mICVzXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIGF1dG8gYnVmZmVyID0g
RmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBpZiAoIWJ1ZmZlci5oYXNfdmFsdWUoKSkgeworICAg
ICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCAlc1xuIiwgaW5k
ZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVyCi0gICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlcjsKLSAgICBidWZmZXIucmVzaXplKCpmaWxlc2l6ZSk7Ci0gICAgaW50IGJ1ZmZlclBv
c2l0aW9uID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSBJT19CVUZGRVJTSVpFOwotICAg
IHdoaWxlICgqZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewotICAgICAgICBpZiAoKmZpbGVz
aXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKLSAgICAgICAgICAgIGJ1ZmZl
clJlYWRTaXplID0gKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247Ci0KLSAgICAgICAgRmlsZVN5
c3RlbTo6cmVhZEZyb21GaWxlKGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0
aW9uLCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJl
YWRTaXplOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKLQog
ICAgIC8vIENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCi0gICAgU3RyaW5nIGhlYWRlckNvbnRl
bnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgYXV0byBoZWFk
ZXJDb250ZW50ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7CiAgICAg
VmVjdG9yPFN0cmluZz4gaW5kZXhVUkxzID0gaGVhZGVyQ29udGVudC5zcGxpdCgnXG4nKTsKLSAg
ICBidWZmZXIuY2xlYXIoKTsKIAogICAgIC8vIEFkZCBlbnRyaWVzIHRvIGluZGV4CiAgICAgVmVj
dG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5kZXhVUkxzLmJlZ2luKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCAwZDQ1YWQ1ZTky
MzAuLmRmYzQwZTg5NjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVXaW4uY3BwCkBAIC0xMDIwLDU2ICsxMDIwLDIwIEBAIENvbG9yIFJlbmRlclRoZW1lV2luOjpz
eXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQsIE9wdGlvblNldDxTdHlsZUNvbG9yT3B0
CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCi1zdGF0aWMgdm9pZCBmaWxsQnVmZmVyV2l0aENvbnRl
bnRzT2ZGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBsb25nIGxvbmcg
ZmlsZXNpemUsIFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQotewotICAgIC8vIExvYWQgdGhlIGZp
bGUgY29udGVudCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNpemUoZmlsZXNpemUgKyAxKTsK
LQotICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAgaW50IGJ1ZmZlclJlYWRTaXplID0g
NDA5NjsKLSAgICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICB3aGlsZSAoZmlsZXNpemUgPiBidWZm
ZXJQb3NpdGlvbikgewotICAgICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1
ZmZlclJlYWRTaXplKQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6ZSAtIGJ1
ZmZlclBvc2l0aW9uOwotCi0gICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9t
RmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXpl
KTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewotICAgICAgICAg
ICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBidWZmZXJQb3NpdGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKLSAgICB9Ci0KLSAgICBidWZm
ZXJbZmlsZXNpemVdID0gMDsKLX0KLQogU3RyaW5nIFJlbmRlclRoZW1lV2luOjpzdHJpbmdXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7
CiAjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVxdWVzdGVkVVJMUmVmID0g
YWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3ZWJLaXRCdW5kbGUoKSwgbmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKICAg
ICBpZiAoIXJlcXVlc3RlZFVSTFJlZikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFVJbnQ4IHJlcXVlc3RlZEZpbGVQYXRoW01B
WF9QQVRIXTsKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVl
c3RlZFVSTFJlZi5nZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhfUEFUSCkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVk
RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUpKQotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0KLSAgICBhdXRvIGZpbGVzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
cmVxdWVzdGVkRmlsZUhhbmRsZSk7Ci0gICAgaWYgKCFmaWxlc2l6ZSkgewotICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICB9CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IGZpbGVDb250ZW50czsKLSAgICBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUsICpmaWxlc2l6ZSwgZmlsZUNvbnRlbnRzKTsKLSAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CisgICAgYXV0byBjb250
ZW50cyA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlQXQocmVxdWVzdGVkRmlsZVBhdGgpOwog
Ci0gICAgcmV0dXJuIFN0cmluZyhmaWxlQ29udGVudHMuZGF0YSgpLCAqZmlsZXNpemUpOworICAg
IHJldHVybiBjb250ZW50cyA/IFN0cmluZzo6YWRvcHQoV1RGTW92ZShjb250ZW50cy52YWx1ZSgp
KSkgOiBlbXB0eVN0cmluZygpOwogI2Vsc2UKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDhlMTQ1NzBjYTEwYS4uYjM4YmNlNjljZmE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTItMDkgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAgICBBZGQgRmlsZVN5c3Rl
bSBmdW5jdGlvbiB0byByZWFkIGEgZmlsZSBhdCBhIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDEwMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgcmVhZEVudGlyZUZpbGVB
dC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wOCAgQkogQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IHByb3Zp
ZGUgYSB3YXkgZm9yIF9XS0luc3BlY3RvckV4dGVuc2lvbiBjbGllbnRzIHRvIGJlIHRvIG5vdGlm
aWVkIHdoZW4gYW4gZXh0ZW5zaW9uIHRhYiBuYXZpZ2F0ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggODU4M2IyOWFkOTkwLi5jYWQ1YzNkNTA1
M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBA
IC04MTksNCArODE5LDE3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcmVhbFBhdGgpCiAgICAg
RVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMoc3ViRm9sZGVyUGF0aCwgeyAiLi4iLCAiLiIsICIuIiwgInN1YmZvbGRl
ciIgfSkpLnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkU3ViRm9sZGVyUGF0aC51dGY4KCkuZGF0YSgp
KTsgLy8gU2hvdWxkIHJlc29sdmUgIi4uIiBhbmQgIi4iCiB9CiAKK1RFU1RfRihGaWxlU3lzdGVt
VGVzdCwgcmVhZEVudGlyZUZpbGUpCit7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpLmhhc192
YWx1ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdChl
bXB0eVN0cmluZygpKS5oYXNfdmFsdWUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06
OnJlYWRFbnRpcmVGaWxlQXQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRl
bXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0IikpLmhhc192YWx1ZSgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdCh0ZW1wRW1wdHlGaWxl
UGF0aCgpKS5oYXNfdmFsdWUoKSk7CisKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlQXQodGVtcEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci5o
YXNfdmFsdWUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShi
dWZmZXIudmFsdWUoKSkpOworICAgIEVYUEVDVF9TVFJFUShjb250ZW50cy51dGY4KCkuZGF0YSgp
LCBGaWxlU3lzdGVtVGVzdERhdGEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446639</attachid>
            <date>2021-12-09 17:14:35 -0800</date>
            <delta_ts>2021-12-09 22:02:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>14901</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdjOTRlMzdlMTQ0Yy4uOWVhYmExMDVmOTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0wOSAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlQXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OmJhY2tl
bmRDb21tYW5kcyBjb25zdCk6CisKIDIwMjEtMTItMDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUHJvY2VkdXJlOjpzZXROZWVkc1BDVG9PcmlnaW5NYXAgc2hv
dWxkIGNhbGwgQ29kZTo6Zm9yY2VQcmVzZXJ2YXRpb25PZkIzT3JpZ2lucwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCA5YTY4NzY1N2M4NmIuLjA5OGE2
MWRjMDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
QEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1h
bmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29tbWFuZHNQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQp
OwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmls
ZUF0KG1fYmFja2VuZENvbW1hbmRzUGF0aCk7CiAKLSAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlm
IChhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShoYW5kbGUpKSB7Ci0gICAgICAgIFZl
Y3RvcjxMQ2hhcj4gYnVmZmVyKCpzaXplKTsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksICpzaXplKTsKLSAgICAg
ICAgaWYgKGJ5dGVzUmVhZCA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRlc1JlYWQp
ID09ICpzaXplKQotICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjb250ZW50cy5oYXNfdmFsdWUoKSA/IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShjb250ZW50cy52YWx1ZSgpKSkgOiBlbXB0eVN0cmluZygpOwogfQogCiAv
LyBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50IGhhbmRsZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwYTZmOTA2
ZDhjZC4uNWFhNjVmMGI1MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEyLTA5ICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIEZpbGVTeXN0
ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZp
bGVBdCB3aGljaCB0YWtlcyBhIHBhdGggYW5kIGF0dGVtcHRzIHRvIHJlYWQgdGhlIHdob2xlIGNv
bnRlbnRzCisgICAgICAgIG9mIHRoZSBmaWxlIGludG8gYSBWZWN0b3I8dWludDhfdD4uIElmIHRo
ZSBmaWxlIGlzIG5vdCBmb3VuZCBvciBpcyBlbXB0eSB0aGVuIGl0IHJldHVybnMKKyAgICAgICAg
bnVsbG9wdC4gSW50ZXJuYWxseSBpdCBtYW5hZ2VzIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIG9m
IHRoZSBmaWxlIHRvIHByZXZlbnQgZmlsZSBoYW5kbGVzCisgICAgICAgIGZyb20gbGVha2luZy4K
KworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OnJlYWRFbnRpcmVGaWxlQXQpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisK
IDIwMjEtMTItMDkgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg2NzU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBm
NjkwNDkyOGVmNTUuLmViYzc2ZmNkMmFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUzNSw2
ICs1MzUsMTggQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlQXQoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gcmVh
ZEVudGlyZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsK
KworICAgIHJldHVybiBjb250ZW50czsKK30KKwogdm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVk
U2luY2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
aW5kZXggZmQ4NTNhNDlhYWM4Li5hMDFiMzk0MjJmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0
OCw2ICsxNDgsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogdXNpbmcgU2FsdCA9IHN0ZDo6
YXJyYXk8dWludDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0
PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRF
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiByZWFkRW50aXJlRmlsZUF0KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKIC8vIFByZWZpeCBp
cyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxs
IHBhdGguCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZp
eCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwNWI1ZjZmYmZiLi41MTAzM2Q2ZDY1YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMi0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJl
YWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlQXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojpsb2FkUmVzcG9uc2VIZWFkZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUpOiBEZWxldGVkLgorCiAyMDIxLTEyLTA5
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBgPGlucHV0
PmAgdGhhdCdzIGJlZW4gYXV0b2ZpbGxlZCB3aXRoIG9ic2N1cmVkIGNvbnRlbnQgc2hvdWxkIHN0
aWxsIGJlIGVkaXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA2OGNhZjA1NDZiNjIuLjkxMGUxMDI1
NDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xMTQsMTIgKzExNCwxNCBAQCBib29sIEN1cmxDYWNo
ZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIEFTU0VS
VChqb2ItPmNsaWVudCgpKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgaWYg
KCFsb2FkRmlsZVRvQnVmZmVyKG1fY29udGVudEZpbGVuYW1lLCBidWZmZXIpKQorICAgIGF1dG8g
YnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdChtX2NvbnRlbnRGaWxlbmFtZSk7
CisgICAgaWYgKCFidWZmZXIuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJD
YWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgdG8gcmVhZCBjYWNoZWQgY29udGVudFxuIiwg
bV9jb250ZW50RmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KIAotICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIuc2l6ZSgpKQotICAg
ICAgICBqb2ItPmdldEludGVybmFsKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGpvYiwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKSwgYnVmZmVyU2l6ZSk7CisgICAg
aWYgKGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci52YWx1ZSgpLnNpemUoKSkKKyAgICAgICAgam9i
LT5nZXRJbnRlcm5hbCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKSwgYnVmZmVyU2l6ZSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1MiwxMSArMTU0LDEzIEBAIGJvb2wgQ3VybENhY2hlRW50
cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiAKIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgaWYgKCFsb2FkRmlsZVRvQnVmZmVyKG1faGVhZGVy
RmlsZW5hbWUsIGJ1ZmZlcikpCisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50
aXJlRmlsZUF0KG1faGVhZGVyRmlsZW5hbWUpOworICAgIGlmICghYnVmZmVyLmhhc192YWx1ZSgp
KSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVz
IHRvIHJlYWQgY2FjaGVkIGhlYWRlcnNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIFN0cmluZyBoZWFkZXJD
b250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIFN0cmlu
ZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7
CiAgICAgVmVjdG9yPFN0cmluZz4gaGVhZGVyRmllbGRzID0gaGVhZGVyQ29udGVudC5zcGxpdCgn
XG4nKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlckZp
ZWxkcy5iZWdpbigpOwpAQCAtMjI0LDQ0ICsyMjgsNiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5Ojpn
ZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCiAgICAgbV9iYXNlbmFtZSA9
IGJhc2VOYW1lQnVpbGRlci50b1N0cmluZygpOwogfQogCi1ib29sIEN1cmxDYWNoZUVudHJ5Ojps
b2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyKQotewotICAgIC8vIE9wZW4gdGhlIGZpbGUKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZXBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJv
cjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEo
KSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIGZpbGVzaXplID0g
RmlsZVN5c3RlbTo6ZmlsZVNpemUoZmlsZXBhdGgpOwotICAgIGlmICghZmlsZXNpemUpIHsKLSAg
ICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUg
b2YgJXNcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVyCi0gICAgYnVmZmVyLnJlc2l6
ZSgqZmlsZXNpemUpOwotICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAgaW50IGJ1ZmZl
clJlYWRTaXplID0gNDA5NjsKLSAgICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICB3aGlsZSAoKmZp
bGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKCpmaWxlc2l6ZSAtIGJ1ZmZl
clBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCi0gICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9
ICpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwotCi0gICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3Np
dGlvbiwgYnVmZmVyUmVhZFNpemUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJl
YWRTaXplKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBu
b3QgcmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBidWZmZXJQb3NpdGlvbiArPSBidWZmZXJSZWFk
U2l6ZTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQ3VybENhY2hlRW50cnk6OmludmFsaWRhdGUoKQogewog
ICAgIGNsb3NlQ29udGVudEZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAxNmZmMTZmOGNk
NGMuLmM1YTBhZDQ0NDUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTEwLDMxICsxMTAsMTYg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGluZGV4Rmls
ZVBhdGgpOwotICAgIGlmICghZmlsZXNpemUpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNo
ZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIGluZGV4RmlsZVBhdGgu
bGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGluZGV4Rmls
ZSk7CisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShpbmRleEZp
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIGlmICghYnVm
ZmVyLmhhc192YWx1ZSgpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENv
dWxkIG5vdCByZWFkICVzXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBi
dWZmZXIKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwotICAgIGJ1ZmZlci5yZXNpemUoKmZpbGVz
aXplKTsKLSAgICBpbnQgYnVmZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6
ZSA9IElPX0JVRkZFUlNJWkU7Ci0gICAgd2hpbGUgKCpmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9u
KSB7Ci0gICAgICAgIGlmICgqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRT
aXplKQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSAqZmlsZXNpemUgLSBidWZmZXJQb3Np
dGlvbjsKLQotICAgICAgICBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZm
ZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKLSAgICAgICAgYnVm
ZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNpemU7Ci0gICAgfQotICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShpbmRleEZpbGUpOwotCiAgICAgLy8gQ3JlYXRlIHN0cmluZ3MgZnJvbSBidWZmZXIK
LSAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICBhdXRvIGhlYWRlckNvbnRlbnQgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUo
YnVmZmVyLnZhbHVlKCkpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBpbmRleFVSTHMgPSBoZWFkZXJD
b250ZW50LnNwbGl0KCdcbicpOwotICAgIGJ1ZmZlci5jbGVhcigpOwogCiAgICAgLy8gQWRkIGVu
dHJpZXMgdG8gaW5kZXgKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBp
bmRleFVSTHMuYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uY3BwCmluZGV4IDBkNDVhZDVlOTIzMC4uZGZjNDBlODk2NGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwMjAsNTYgKzEwMjAsMjAgQEAg
Q29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwg
T3B0aW9uU2V0PFN0eWxlQ29sb3JPcHQKIH0KIAogI2lmIEVOQUJMRShWSURFTykKLXN0YXRpYyB2
b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIp
Ci17Ci0gICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVyCi0gICAgYnVmZmVy
LnJlc2l6ZShmaWxlc2l6ZSArIDEpOwotCi0gICAgaW50IGJ1ZmZlclBvc2l0aW9uID0gMDsKLSAg
ICBpbnQgYnVmZmVyUmVhZFNpemUgPSA0MDk2OwotICAgIGludCBieXRlc1JlYWQgPSAwOwotICAg
IHdoaWxlIChmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChmaWxlc2l6
ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCi0gICAgICAgICAgICBidWZmZXJS
ZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247Ci0KLSAgICAgICAgYnl0ZXNSZWFk
ID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQ
b3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZl
clJlYWRTaXplKSB7Ci0gICAgICAgICAgICBidWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRT
aXplOwotICAgIH0KLQotICAgIGJ1ZmZlcltmaWxlc2l6ZV0gPSAwOwotfQotCiBTdHJpbmcgUmVu
ZGVyVGhlbWVXaW46OnN0cmluZ1dpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiByZXF1ZXN0ZWRVUkxSZWYgPSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdl
YktpdEJ1bmRsZSgpLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCkpOwogICAgIGlmICghcmVxdWVzdGVkVVJMUmVmKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgVUlu
dDggcmVxdWVzdGVkRmlsZVBhdGhbTUFYX1BBVEhdOwogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVkVVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVk
RmlsZVBhdGgsIE1BWF9QQVRIKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lz
dGVtOjpvcGVuRmlsZShyZXF1ZXN0ZWRGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVkRmls
ZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGF1dG8gZmlsZXNpemUg
PSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKLSAgICBpZiAoIWZp
bGVzaXplKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFu
ZGxlKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKLSAgICBWZWN0b3I8dWludDhfdD4gZmlsZUNvbnRlbnRzOwotICAgIGZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSwgKmZpbGVzaXpl
LCBmaWxlQ29udGVudHMpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxl
SGFuZGxlKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVB
dChyZXF1ZXN0ZWRGaWxlUGF0aCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGZpbGVDb250ZW50cy5k
YXRhKCksICpmaWxlc2l6ZSk7CisgICAgcmV0dXJuIGNvbnRlbnRzID8gU3RyaW5nOjphZG9wdChX
VEZNb3ZlKGNvbnRlbnRzLnZhbHVlKCkpKSA6IGVtcHR5U3RyaW5nKCk7CiAjZWxzZQogICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUxNDU3MGNhMTBhLi5iMzhiY2U2OWNmYTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0xMi0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgor
CisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3RzIGZvciByZWFkRW50aXJlRmlsZUF0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
CiAyMDIxLTEyLTA4ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2Nv
YV0gV2ViIEluc3BlY3RvcjogcHJvdmlkZSBhIHdheSBmb3IgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
IGNsaWVudHMgdG8gYmUgdG8gbm90aWZpZWQgd2hlbiBhbiBleHRlbnNpb24gdGFiIG5hdmlnYXRl
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4
NTgzYjI5YWQ5OTAuLmNhZDVjM2Q1MDUzYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTgxOSw0ICs4MTksMTcgQEAgVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCByZWFsUGF0aCkKICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgo
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRoLCB7ICIu
LiIsICIuIiwgIi4iLCAic3ViZm9sZGVyIiB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJG
b2xkZXJQYXRoLnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFuZCAiLiIK
IH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFkRW50aXJlRmlsZSkKK3sKKyAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkuaGFzX3ZhbHVlKCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpyZWFkRW50aXJlRmlsZUF0KGVtcHR5U3RyaW5nKCkpLmhhc192YWx1ZSgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdChGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhp
c3QiKSkuaGFzX3ZhbHVlKCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50
aXJlRmlsZUF0KHRlbXBFbXB0eUZpbGVQYXRoKCkpLmhhc192YWx1ZSgpKTsKKworICAgIGF1dG8g
YnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdCh0ZW1wRmlsZVBhdGgoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLmhhc192YWx1ZSgpKTsKKyAgICBhdXRvIGNvbnRlbnRzID0g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7CisgICAgRVhQRUNUX1NUUkVR
KGNvbnRlbnRzLnV0ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW1UZXN0RGF0YSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="commit-queue"
          id="472090"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446660</attachid>
            <date>2021-12-09 22:02:09 -0800</date>
            <delta_ts>2021-12-10 11:17:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>15350</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdjOTRlMzdlMTQ0Yy4uOWVhYmExMDVmOTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0wOSAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlQXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OmJhY2tl
bmRDb21tYW5kcyBjb25zdCk6CisKIDIwMjEtMTItMDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUHJvY2VkdXJlOjpzZXROZWVkc1BDVG9PcmlnaW5NYXAgc2hv
dWxkIGNhbGwgQ29kZTo6Zm9yY2VQcmVzZXJ2YXRpb25PZkIzT3JpZ2lucwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCA5YTY4NzY1N2M4NmIuLjA5OGE2
MWRjMDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
QEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1h
bmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29tbWFuZHNQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQp
OwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmls
ZUF0KG1fYmFja2VuZENvbW1hbmRzUGF0aCk7CiAKLSAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlm
IChhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShoYW5kbGUpKSB7Ci0gICAgICAgIFZl
Y3RvcjxMQ2hhcj4gYnVmZmVyKCpzaXplKTsKLSAgICAgICAgaW50IGJ5dGVzUmVhZCA9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksICpzaXplKTsKLSAgICAg
ICAgaWYgKGJ5dGVzUmVhZCA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRlc1JlYWQp
ID09ICpzaXplKQotICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjb250ZW50cy5oYXNfdmFsdWUoKSA/IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShjb250ZW50cy52YWx1ZSgpKSkgOiBlbXB0eVN0cmluZygpOwogfQogCiAv
LyBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50IGhhbmRsZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwYTZmOTA2
ZDhjZC4uNWFhNjVmMGI1MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEyLTA5ICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIEZpbGVTeXN0
ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZp
bGVBdCB3aGljaCB0YWtlcyBhIHBhdGggYW5kIGF0dGVtcHRzIHRvIHJlYWQgdGhlIHdob2xlIGNv
bnRlbnRzCisgICAgICAgIG9mIHRoZSBmaWxlIGludG8gYSBWZWN0b3I8dWludDhfdD4uIElmIHRo
ZSBmaWxlIGlzIG5vdCBmb3VuZCBvciBpcyBlbXB0eSB0aGVuIGl0IHJldHVybnMKKyAgICAgICAg
bnVsbG9wdC4gSW50ZXJuYWxseSBpdCBtYW5hZ2VzIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIG9m
IHRoZSBmaWxlIHRvIHByZXZlbnQgZmlsZSBoYW5kbGVzCisgICAgICAgIGZyb20gbGVha2luZy4K
KworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OnJlYWRFbnRpcmVGaWxlQXQpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisK
IDIwMjEtMTItMDkgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg2NzU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBm
NjkwNDkyOGVmNTUuLmViYzc2ZmNkMmFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUzNSw2
ICs1MzUsMTggQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlQXQoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gcmVh
ZEVudGlyZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsK
KworICAgIHJldHVybiBjb250ZW50czsKK30KKwogdm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVk
U2luY2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
aW5kZXggZmQ4NTNhNDlhYWM4Li5hMDFiMzk0MjJmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0
OCw2ICsxNDgsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogdXNpbmcgU2FsdCA9IHN0ZDo6
YXJyYXk8dWludDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0
PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRF
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiByZWFkRW50aXJlRmlsZUF0KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKIC8vIFByZWZpeCBp
cyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxs
IHBhdGguCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZp
eCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwNWI1ZjZmYmZiLi41MTAzM2Q2ZDY1YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMi0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJl
YWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlQXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojpsb2FkUmVzcG9uc2VIZWFkZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUpOiBEZWxldGVkLgorCiAyMDIxLTEyLTA5
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBgPGlucHV0
PmAgdGhhdCdzIGJlZW4gYXV0b2ZpbGxlZCB3aXRoIG9ic2N1cmVkIGNvbnRlbnQgc2hvdWxkIHN0
aWxsIGJlIGVkaXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA2OGNhZjA1NDZiNjIuLjkxMGUxMDI1
NDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xMTQsMTIgKzExNCwxNCBAQCBib29sIEN1cmxDYWNo
ZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIEFTU0VS
VChqb2ItPmNsaWVudCgpKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgaWYg
KCFsb2FkRmlsZVRvQnVmZmVyKG1fY29udGVudEZpbGVuYW1lLCBidWZmZXIpKQorICAgIGF1dG8g
YnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGVBdChtX2NvbnRlbnRGaWxlbmFtZSk7
CisgICAgaWYgKCFidWZmZXIuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJD
YWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgdG8gcmVhZCBjYWNoZWQgY29udGVudFxuIiwg
bV9jb250ZW50RmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KIAotICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIuc2l6ZSgpKQotICAg
ICAgICBqb2ItPmdldEludGVybmFsKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGpvYiwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKSwgYnVmZmVyU2l6ZSk7CisgICAg
aWYgKGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci52YWx1ZSgpLnNpemUoKSkKKyAgICAgICAgam9i
LT5nZXRJbnRlcm5hbCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKSwgYnVmZmVyU2l6ZSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1MiwxMSArMTU0LDEzIEBAIGJvb2wgQ3VybENhY2hlRW50
cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiAKIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgaWYgKCFsb2FkRmlsZVRvQnVmZmVyKG1faGVhZGVy
RmlsZW5hbWUsIGJ1ZmZlcikpCisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50
aXJlRmlsZUF0KG1faGVhZGVyRmlsZW5hbWUpOworICAgIGlmICghYnVmZmVyLmhhc192YWx1ZSgp
KSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVz
IHRvIHJlYWQgY2FjaGVkIGhlYWRlcnNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIFN0cmluZyBoZWFkZXJD
b250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIFN0cmlu
ZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7
CiAgICAgVmVjdG9yPFN0cmluZz4gaGVhZGVyRmllbGRzID0gaGVhZGVyQ29udGVudC5zcGxpdCgn
XG4nKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlckZp
ZWxkcy5iZWdpbigpOwpAQCAtMjI0LDQ0ICsyMjgsNiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5Ojpn
ZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCiAgICAgbV9iYXNlbmFtZSA9
IGJhc2VOYW1lQnVpbGRlci50b1N0cmluZygpOwogfQogCi1ib29sIEN1cmxDYWNoZUVudHJ5Ojps
b2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyKQotewotICAgIC8vIE9wZW4gdGhlIGZpbGUKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZXBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJv
cjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEo
KSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIGZpbGVzaXplID0g
RmlsZVN5c3RlbTo6ZmlsZVNpemUoZmlsZXBhdGgpOwotICAgIGlmICghZmlsZXNpemUpIHsKLSAg
ICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUg
b2YgJXNcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVyCi0gICAgYnVmZmVyLnJlc2l6
ZSgqZmlsZXNpemUpOwotICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAgaW50IGJ1ZmZl
clJlYWRTaXplID0gNDA5NjsKLSAgICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICB3aGlsZSAoKmZp
bGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKCpmaWxlc2l6ZSAtIGJ1ZmZl
clBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCi0gICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9
ICpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwotCi0gICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3Np
dGlvbiwgYnVmZmVyUmVhZFNpemUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJl
YWRTaXplKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBu
b3QgcmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBidWZmZXJQb3NpdGlvbiArPSBidWZmZXJSZWFk
U2l6ZTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQ3VybENhY2hlRW50cnk6OmludmFsaWRhdGUoKQogewog
ICAgIGNsb3NlQ29udGVudEZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAxNmZmMTZmOGNk
NGMuLjU2MGZlMWQ5M2U1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTAxLDQwICsxMDEsMTYg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGly
KTsKLSAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7Ci0KLSAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgewotICAgICAgICBMT0coTmV0
d29yaywgIkNhY2hlIFdhcm5pbmc6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBpbmRl
eEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBhdXRvIGZpbGVzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaW5kZXhGaWxlUGF0aCk7Ci0g
ICAgaWYgKCFmaWxlc2l6ZSkgewotICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBD
b3VsZCBub3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5k
YXRhKCkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBT
dHJpbmcgaW5kZXhGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX2NhY2hlRGlyLCAiaW5kZXguZGF0Il9zKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0
ZW06OnJlYWRFbnRpcmVGaWxlQXQoaW5kZXhGaWxlUGF0aCk7CisgICAgaWYgKCFidWZmZXIuaGFz
X3ZhbHVlKCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90
IHJlYWQgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgot
ICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0gICAgYnVmZmVyLnJlc2l6ZSgqZmlsZXNpemUpOwot
ICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAgaW50IGJ1ZmZlclJlYWRTaXplID0gSU9f
QlVGRkVSU0laRTsKLSAgICB3aGlsZSAoKmZpbGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsKLSAg
ICAgICAgaWYgKCpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCi0g
ICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9ICpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwot
Ci0gICAgICAgIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShpbmRleEZpbGUsIGJ1ZmZlci5kYXRh
KCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwotICAgICAgICBidWZmZXJQb3Np
dGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGluZGV4RmlsZSk7Ci0KICAgICAvLyBDcmVhdGUgc3RyaW5ncyBmcm9tIGJ1ZmZlcgotICAgIFN0
cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OworICAgIGF1dG8gaGVhZGVyQ29udGVudCA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIu
dmFsdWUoKSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGluZGV4VVJMcyA9IGhlYWRlckNvbnRlbnQu
c3BsaXQoJ1xuJyk7Ci0gICAgYnVmZmVyLmNsZWFyKCk7CiAKICAgICAvLyBBZGQgZW50cmllcyB0
byBpbmRleAogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGluZGV4VVJM
cy5iZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAK
aW5kZXggMGQ0NWFkNWU5MjMwLi5kZmM0MGU4OTY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtMTAyMCw1NiArMTAyMCwyMCBAQCBDb2xvciBS
ZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBPcHRpb25T
ZXQ8U3R5bGVDb2xvck9wdAogfQogCiAjaWYgRU5BQkxFKFZJREVPKQotc3RhdGljIHZvaWQgZmls
bEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKLXsKLSAg
ICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKLSAgICBidWZmZXIucmVzaXpl
KGZpbGVzaXplICsgMSk7Ci0KLSAgICBpbnQgYnVmZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBi
dWZmZXJSZWFkU2l6ZSA9IDQwOTY7Ci0gICAgaW50IGJ5dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUg
KGZpbGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVm
ZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKLSAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXpl
ID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKLQotICAgICAgICBieXRlc1JlYWQgPSBGaWxl
U3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9u
LCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgIT0gYnVmZmVyUmVhZFNp
emUpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNpemU7Ci0g
ICAgfQotCi0gICAgYnVmZmVyW2ZpbGVzaXplXSA9IDA7Ci19Ci0KIFN0cmluZyBSZW5kZXJUaGVt
ZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJl
cXVlc3RlZFVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwod2ViS2l0QnVu
ZGxlKCksIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgdHlwZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCAwKSk7CiAgICAgaWYgKCFyZXF1ZXN0ZWRVUkxSZWYpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBVSW50OCByZXF1
ZXN0ZWRGaWxlUGF0aFtNQVhfUEFUSF07CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0
aCwgTUFYX1BBVEgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQp
OwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVT
eXN0ZW06OmZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUpOwotICAgIGlmICghZmlsZXNpemUp
IHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOwot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBmaWxlQ29udGVudHM7Ci0gICAgZmlsbEJ1ZmZl
cldpdGhDb250ZW50c09mRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCAqZmlsZXNpemUsIGZpbGVD
b250ZW50cyk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUp
OworICAgIGF1dG8gY29udGVudHMgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZUF0KHJlcXVl
c3RlZEZpbGVQYXRoKTsKIAotICAgIHJldHVybiBTdHJpbmcoZmlsZUNvbnRlbnRzLmRhdGEoKSwg
KmZpbGVzaXplKTsKKyAgICByZXR1cm4gY29udGVudHMgPyBTdHJpbmc6OmFkb3B0KFdURk1vdmUo
Y29udGVudHMudmFsdWUoKSkpIDogZW1wdHlTdHJpbmcoKTsKICNlbHNlCiAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA4ZTE0NTcwY2ExMGEuLmIzOGJjZTY5Y2ZhNCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTEyLTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAg
ICAgQWRkIEZpbGVTeXN0ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9y
IHJlYWRFbnRpcmVGaWxlQXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEt
MTItMDggIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIg
SW5zcGVjdG9yOiBwcm92aWRlIGEgd2F5IGZvciBfV0tJbnNwZWN0b3JFeHRlbnNpb24gY2xpZW50
cyB0byBiZSB0byBub3RpZmllZCB3aGVuIGFuIGV4dGVuc2lvbiB0YWIgbmF2aWdhdGVzCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlh
ZDk5MC4uY2FkNWMzZDUwNTNjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcApAQCAtODE5LDQgKzgxOSwxNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3Qs
IHJlYWxQYXRoKQogICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHN1YkZvbGRlclBhdGgsIHsgIi4uIiwgIi4i
LCAiLiIsICJzdWJmb2xkZXIiIH0pKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFN1YkZvbGRlclBh
dGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIuLiIgYW5kICIuIgogfQogCitU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJlYWRFbnRpcmVGaWxlKQoreworICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKS5oYXNfdmFsdWUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlQXQoZW1wdHlTdHJpbmcoKSkuaGFzX3ZhbHVlKCkpOworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZUF0KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpKS5o
YXNfdmFsdWUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxl
QXQodGVtcEVtcHR5RmlsZVBhdGgoKSkuaGFzX3ZhbHVlKCkpOworCisgICAgYXV0byBidWZmZXIg
PSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZUF0KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWZmZXIuaGFzX3ZhbHVlKCkpOworICAgIGF1dG8gY29udGVudHMgPSBTdHJpbmc6
OmFkb3B0KFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoY29udGVu
dHMudXRmOCgpLmRhdGEoKSwgRmlsZVN5c3RlbVRlc3REYXRhKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446766</attachid>
            <date>2021-12-10 11:17:32 -0800</date>
            <delta_ts>2021-12-10 11:23:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>15751</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NDVkMDcxMGI2NS4uOTU0ZDAzY2QwNWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpiYWNrZW5k
Q29tbWFuZHMgY29uc3QpOgorCiAyMDIxLTEyLTEwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBNYWMtc3BlY2lmaWMgQVJNNjRFSGFzaCBpbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApp
bmRleCA5YTY4NzY1N2M4NmIuLjU2YTQyYmE1NmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90
ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1hbmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29t
bWFuZHNQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBG
aWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2JhY2tlbmRDb21tYW5kc1BhdGgpOwogCi0gICAg
U3RyaW5nIHJlc3VsdDsKLSAgICBpZiAoYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
aGFuZGxlKSkgewotICAgICAgICBWZWN0b3I8TENoYXI+IGJ1ZmZlcigqc2l6ZSk7Ci0gICAgICAg
IGludCBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCAqc2l6ZSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZXNSZWFkKSA9PSAqc2l6ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFN0
cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY29udGVudHMg
PyBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY29udGVudHMudmFsdWUoKSkpIDogZW1wdHlTdHJpbmco
KTsKIH0KIAogLy8gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCBoYW5kbGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA2NzM1MmRjZjA5ZjUuLmM1MWUwNWVlYmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0x
Mi0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFk
ZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlIHdoaWNoIHRha2VzIGEgcGF0aCBhbmQgYXR0ZW1wdHMgdG8gcmVhZCB0aGUg
d2hvbGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGUgaW50byBhIFZlY3Rvcjx1aW50OF90
Pi4gSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGVtcHR5IHRoZW4gaXQgcmV0dXJucwor
ICAgICAgICBudWxsb3B0LiBJbnRlcm5hbGx5IGl0IG1hbmFnZXMgdGhlIG9wZW5pbmcgYW5kIGNs
b3Npbmcgb2YgdGhlIGZpbGUgdG8gcHJldmVudCBmaWxlIGhhbmRsZXMKKyAgICAgICAgZnJvbSBs
ZWFraW5nLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVt
Lmg6CisKIDIwMjEtMTItMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBzaW1wbGVyIGlkaW9tcyBmb3Igc3RkOjpsZXNzIGFuZCBzdGQ6OmdyZWF0ZXIgcG9z
c2libGUgaW4gbW9kZXJuIEMrKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmNjkwNDkyOGVmNTUu
LjY5NTgzZDU3MWYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUzNSw2ICs1MzUsMTggQEAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBjb250ZW50cyA9IHJlYWRFbnRpcmVGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4g
Y29udGVudHM7Cit9CisKIHZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBXYWxsVGltZSB0aW1lKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
bWF5IGRlbGV0ZSBkaXJlY3RvcnkgZm9sZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGZkODUzYTQ5
YWFjOC4uZDRkMmNlMmQ0YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDgsNiArMTQ4LDcgQEAg
aW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3Qs
IDg+OwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNh
bHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGly
ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVu
YW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwMTllNTFiZjg1YjAuLjJjYTBjMzEwMzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIxLTEyLTEwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+
CisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBw
YXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQx
MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
RmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50
cnk6OnJlYWRDYWNoZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojps
b2FkUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojps
b2FkRmlsZVRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjps
b2FkSW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUpOiBEZWxldGVk
LgorCiAyMDIxLTEyLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2Ugc2ltcGxlciBpZGlvbXMgZm9yIHN0ZDo6bGVzcyBhbmQgc3RkOjpncmVhdGVyIHBvc3Np
YmxlIGluIG1vZGVybiBDKysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDY4Y2FmMDU0NmI2Mi4uMDQyMTBi
OTk2MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTExNCwxMiArMTE0LDE0IEBAIGJvb2wgQ3VybENh
Y2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgQVNT
RVJUKGpvYi0+Y2xpZW50KCkpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBp
ZiAoIWxvYWRGaWxlVG9CdWZmZXIobV9jb250ZW50RmlsZW5hbWUsIGJ1ZmZlcikpCisgICAgYXV0
byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7
CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IG9wZW4gJXMgdG8gcmVhZCBjYWNoZWQgY29udGVudFxuIiwgbV9jb250ZW50Rmls
ZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAot
ICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIuc2l6ZSgpKQotICAgICAgICBqb2ItPmdl
dEludGVybmFsKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGpvYiwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKSwgYnVmZmVyU2l6ZSk7CisgICAgaWYgKGF1dG8gYnVm
ZmVyU2l6ZSA9IGJ1ZmZlci52YWx1ZSgpLnNpemUoKSkKKyAgICAgICAgam9iLT5nZXRJbnRlcm5h
bCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKSwgYnVmZmVyU2l6ZSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTE1MiwxMSArMTU0LDEzIEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNw
b25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKIGJvb2wgQ3Vy
bENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogewotICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7Ci0gICAgaWYgKCFsb2FkRmlsZVRvQnVmZmVyKG1faGVhZGVyRmlsZW5hbWUsIGJ1
ZmZlcikpCisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2hl
YWRlckZpbGVuYW1lKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBMT0coTmV0d29yaywg
IkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyB0byByZWFkIGNhY2hlZCBoZWFkZXJzXG4i
LCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CiAKLSAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZyhidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGhlYWRl
ckZpZWxkcyA9IGhlYWRlckNvbnRlbnQuc3BsaXQoJ1xuJyk7CiAKICAgICBWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMuYmVnaW4oKTsKQEAgLTIyNCw0NCAr
MjI4LDYgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3Qg
Q1N0cmluZyYgdXJsKQogICAgIG1fYmFzZW5hbWUgPSBiYXNlTmFtZUJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAotYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVwYXRoLCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKLXsKLSAgICAvLyBPcGVuIHRo
ZSBmaWxlCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7Ci0g
ICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciBy
ZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVw
YXRoKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEo
KS5kYXRhKCkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVu
dCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNpemUoKmZpbGVzaXplKTsKLSAgICBpbnQgYnVm
ZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IDQwOTY7Ci0gICAgaW50
IGJ5dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUgKCpmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9uKSB7
Ci0gICAgICAgIGlmICgqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRTaXpl
KQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSAqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlv
bjsKLQotICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5wdXRG
aWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKLSAg
ICAgICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewotICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IHJlYWQgZnJvbSAlc1xuIiwgZmlsZXBh
dGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShp
bnB1dEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNpemU7Ci0gICAgfQotICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEN1
cmxDYWNoZUVudHJ5OjppbnZhbGlkYXRlKCkKIHsKICAgICBjbG9zZUNvbnRlbnRGaWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5oCmluZGV4IDI0NjE0MDhiZmE2Mi4uZmNlYjcxZWZkYzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAt
ODksNyArODksNiBAQCBwcml2YXRlOgogICAgIFJlc291cmNlSGFuZGxlKiBtX2pvYjsKIAogICAg
IHZvaWQgZ2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKTsKLSAgICBib29s
IGxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZXIpOwogICAgIGJvb2wgbG9hZFJlc3BvbnNlSGVhZGVycygpOwogCiAgICAgYm9vbCBv
cGVuQ29udGVudEZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAxNmZmMTZmOGNkNGMuLmRj
NGQ2MDdhYzM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTAxLDQwICsxMDEsMTYgQEAgdm9p
ZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGlyKTsKLSAg
ICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7Ci0KLSAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgewotICAgICAgICBMT0coTmV0d29yaywg
IkNhY2hlIFdhcm5pbmc6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBpbmRleEZpbGVQ
YXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
IGZpbGVzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaW5kZXhGaWxlUGF0aCk7Ci0gICAgaWYg
KCFmaWxlc2l6ZSkgewotICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBu
b3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkp
OwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBTdHJpbmcg
aW5kZXhGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyLCAiaW5kZXguZGF0Il9zKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlKGluZGV4RmlsZVBhdGgpOworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAg
IExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCByZWFkICVzXG4iLCBpbmRleEZp
bGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAv
LyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKLSAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyOwotICAgIGJ1ZmZlci5yZXNpemUoKmZpbGVzaXplKTsKLSAgICBpbnQgYnVmZmVyUG9zaXRp
b24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IElPX0JVRkZFUlNJWkU7Ci0gICAgd2hp
bGUgKCpmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9uKSB7Ci0gICAgICAgIGlmICgqZmlsZXNpemUg
LSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRTaXplKQotICAgICAgICAgICAgYnVmZmVyUmVh
ZFNpemUgPSAqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKLQotICAgICAgICBGaWxlU3lzdGVt
OjpyZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24s
IGJ1ZmZlclJlYWRTaXplKTsKLSAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNp
emU7Ci0gICAgfQotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOwotCiAgICAg
Ly8gQ3JlYXRlIHN0cmluZ3MgZnJvbSBidWZmZXIKLSAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9
IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIGhlYWRlckNv
bnRlbnQgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKTsKICAgICBWZWN0
b3I8U3RyaW5nPiBpbmRleFVSTHMgPSBoZWFkZXJDb250ZW50LnNwbGl0KCdcbicpOwotICAgIGJ1
ZmZlci5jbGVhcigpOwogCiAgICAgLy8gQWRkIGVudHJpZXMgdG8gaW5kZXgKICAgICBWZWN0b3I8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbmRleFVSTHMuYmVnaW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDBkNDVhZDVlOTIzMC4u
YmNkNDEyNmI0ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAKQEAgLTEwMjAsNTYgKzEwMjAsMjAgQEAgQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3Rl
bUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHQKIH0K
IAogI2lmIEVOQUJMRShWSURFTykKLXN0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNP
ZkZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxl
c2l6ZSwgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCi17Ci0gICAgLy8gTG9hZCB0aGUgZmlsZSBj
b250ZW50IGludG8gYnVmZmVyCi0gICAgYnVmZmVyLnJlc2l6ZShmaWxlc2l6ZSArIDEpOwotCi0g
ICAgaW50IGJ1ZmZlclBvc2l0aW9uID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSA0MDk2
OwotICAgIGludCBieXRlc1JlYWQgPSAwOwotICAgIHdoaWxlIChmaWxlc2l6ZSA+IGJ1ZmZlclBv
c2l0aW9uKSB7Ci0gICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVy
UmVhZFNpemUpCi0gICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVy
UG9zaXRpb247Ci0KLSAgICAgICAgYnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxl
KGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwot
ICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7Ci0gICAgICAgICAgICBi
dWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwotICAgIH0KLQotICAgIGJ1ZmZlcltm
aWxlc2l6ZV0gPSAwOwotfQotCiBTdHJpbmcgUmVuZGVyVGhlbWVXaW46OnN0cmluZ1dpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICNp
ZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXF1ZXN0ZWRVUkxSZWYgPSBhZG9w
dENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgpLCBuYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogICAgIGlm
ICghcmVxdWVzdGVkVVJMUmVmKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgVUludDggcmVxdWVzdGVkRmlsZVBhdGhbTUFYX1BB
VEhdOwogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVk
VVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIE1BWF9QQVRIKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShyZXF1ZXN0ZWRGaWxl
UGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVkRmlsZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIGF1dG8gZmlsZXNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShyZXF1
ZXN0ZWRGaWxlSGFuZGxlKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBWZWN0b3I8
dWludDhfdD4gZmlsZUNvbnRlbnRzOwotICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
cmVxdWVzdGVkRmlsZUhhbmRsZSwgKmZpbGVzaXplLCBmaWxlQ29udGVudHMpOwotICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAgICBhdXRvIGNvbnRlbnRz
ID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUocmVxdWVzdGVkRmlsZVBhdGgpOwogCi0gICAg
cmV0dXJuIFN0cmluZyhmaWxlQ29udGVudHMuZGF0YSgpLCAqZmlsZXNpemUpOworICAgIHJldHVy
biBjb250ZW50cyA/IFN0cmluZzo6YWRvcHQoV1RGTW92ZShjb250ZW50cy52YWx1ZSgpKSkgOiBl
bXB0eVN0cmluZygpOwogI2Vsc2UKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwZmI5
ZDUzZmM3Yy4uYTFmMGMxZTBkMmUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTItMTAgIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbSBmdW5j
dGlvbiB0byByZWFkIGEgZmlsZSBhdCBhIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDEwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgcmVhZEVudGlyZUZpbGUuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMTAgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
Mjg2ODM2LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApp
bmRleCA4NTgzYjI5YWQ5OTAuLmYzMzJkNzJiYWQwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTgxOSw0ICs4MTksMTcgQEAgVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCByZWFsUGF0aCkKICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVh
bFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRo
LCB7ICIuLiIsICIuIiwgIi4iLCAic3ViZm9sZGVyIiB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2
ZWRTdWJGb2xkZXJQYXRoLnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFu
ZCAiLiIKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFkRW50aXJlRmlsZSkKK3sKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpy
ZWFkRW50aXJlRmlsZShlbXB0eVN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0
ZW06OnJlYWRFbnRpcmVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpKSk7CisgICAgRVhQRUNUX0ZB
TFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpKTsKKwor
ICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlcik7CisgICAgYXV0byBjb250ZW50cyA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOworICAgIEVYUEVDVF9TVFJFUShjb250
ZW50cy51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtVGVzdERhdGEpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446768</attachid>
            <date>2021-12-10 11:23:16 -0800</date>
            <delta_ts>2021-12-10 14:01:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>15694</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NDVkMDcxMGI2NS4uOTU0ZDAzY2QwNWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpiYWNrZW5k
Q29tbWFuZHMgY29uc3QpOgorCiAyMDIxLTEyLTEwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBNYWMtc3BlY2lmaWMgQVJNNjRFSGFzaCBpbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApp
bmRleCA5YTY4NzY1N2M4NmIuLjU2YTQyYmE1NmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90
ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1hbmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29t
bWFuZHNQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBG
aWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2JhY2tlbmRDb21tYW5kc1BhdGgpOwogCi0gICAg
U3RyaW5nIHJlc3VsdDsKLSAgICBpZiAoYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
aGFuZGxlKSkgewotICAgICAgICBWZWN0b3I8TENoYXI+IGJ1ZmZlcigqc2l6ZSk7Ci0gICAgICAg
IGludCBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCAqc2l6ZSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZXNSZWFkKSA9PSAqc2l6ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFN0
cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY29udGVudHMg
PyBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY29udGVudHMudmFsdWUoKSkpIDogZW1wdHlTdHJpbmco
KTsKIH0KIAogLy8gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCBoYW5kbGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA2NzM1MmRjZjA5ZjUuLmM1MWUwNWVlYmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0x
Mi0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFk
ZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlIHdoaWNoIHRha2VzIGEgcGF0aCBhbmQgYXR0ZW1wdHMgdG8gcmVhZCB0aGUg
d2hvbGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGUgaW50byBhIFZlY3Rvcjx1aW50OF90
Pi4gSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGVtcHR5IHRoZW4gaXQgcmV0dXJucwor
ICAgICAgICBudWxsb3B0LiBJbnRlcm5hbGx5IGl0IG1hbmFnZXMgdGhlIG9wZW5pbmcgYW5kIGNs
b3Npbmcgb2YgdGhlIGZpbGUgdG8gcHJldmVudCBmaWxlIGhhbmRsZXMKKyAgICAgICAgZnJvbSBs
ZWFraW5nLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVt
Lmg6CisKIDIwMjEtMTItMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBzaW1wbGVyIGlkaW9tcyBmb3Igc3RkOjpsZXNzIGFuZCBzdGQ6OmdyZWF0ZXIgcG9z
c2libGUgaW4gbW9kZXJuIEMrKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmNjkwNDkyOGVmNTUu
LmVkMGFlOTgzMmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUzNSw2ICs1MzUsMTUgQEAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBjb250ZW50cyA9IHJlYWRFbnRpcmVGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4g
Y29udGVudHM7Cit9CisKIHZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBXYWxsVGltZSB0aW1lKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
bWF5IGRlbGV0ZSBkaXJlY3RvcnkgZm9sZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGZkODUzYTQ5
YWFjOC4uZDRkMmNlMmQ0YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDgsNiArMTQ4LDcgQEAg
aW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3Qs
IDg+OwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNh
bHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGly
ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVu
YW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwMTllNTFiZjg1YjAuLjJjYTBjMzEwMzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIxLTEyLTEwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+
CisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBw
YXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQx
MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
RmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50
cnk6OnJlYWRDYWNoZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojps
b2FkUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojps
b2FkRmlsZVRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjps
b2FkSW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUpOiBEZWxldGVk
LgorCiAyMDIxLTEyLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2Ugc2ltcGxlciBpZGlvbXMgZm9yIHN0ZDo6bGVzcyBhbmQgc3RkOjpncmVhdGVyIHBvc3Np
YmxlIGluIG1vZGVybiBDKysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDY4Y2FmMDU0NmI2Mi4uMDQyMTBi
OTk2MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTExNCwxMiArMTE0LDE0IEBAIGJvb2wgQ3VybENh
Y2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgQVNT
RVJUKGpvYi0+Y2xpZW50KCkpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBp
ZiAoIWxvYWRGaWxlVG9CdWZmZXIobV9jb250ZW50RmlsZW5hbWUsIGJ1ZmZlcikpCisgICAgYXV0
byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7
CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IG9wZW4gJXMgdG8gcmVhZCBjYWNoZWQgY29udGVudFxuIiwgbV9jb250ZW50Rmls
ZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAot
ICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIuc2l6ZSgpKQotICAgICAgICBqb2ItPmdl
dEludGVybmFsKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGpvYiwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKSwgYnVmZmVyU2l6ZSk7CisgICAgaWYgKGF1dG8gYnVm
ZmVyU2l6ZSA9IGJ1ZmZlci52YWx1ZSgpLnNpemUoKSkKKyAgICAgICAgam9iLT5nZXRJbnRlcm5h
bCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKSwgYnVmZmVyU2l6ZSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTE1MiwxMSArMTU0LDEzIEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNw
b25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKIGJvb2wgQ3Vy
bENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMoKQogewotICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7Ci0gICAgaWYgKCFsb2FkRmlsZVRvQnVmZmVyKG1faGVhZGVyRmlsZW5hbWUsIGJ1
ZmZlcikpCisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2hl
YWRlckZpbGVuYW1lKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBMT0coTmV0d29yaywg
IkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyB0byByZWFkIGNhY2hlZCBoZWFkZXJzXG4i
LCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CiAKLSAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZyhidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGhlYWRl
ckZpZWxkcyA9IGhlYWRlckNvbnRlbnQuc3BsaXQoJ1xuJyk7CiAKICAgICBWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJGaWVsZHMuYmVnaW4oKTsKQEAgLTIyNCw0NCAr
MjI4LDYgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3Qg
Q1N0cmluZyYgdXJsKQogICAgIG1fYmFzZW5hbWUgPSBiYXNlTmFtZUJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAotYm9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVwYXRoLCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKLXsKLSAgICAvLyBPcGVuIHRo
ZSBmaWxlCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7Ci0g
ICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciBy
ZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVw
YXRoKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEo
KS5kYXRhKCkpOwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVu
dCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNpemUoKmZpbGVzaXplKTsKLSAgICBpbnQgYnVm
ZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IDQwOTY7Ci0gICAgaW50
IGJ5dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUgKCpmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9uKSB7
Ci0gICAgICAgIGlmICgqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRTaXpl
KQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSAqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlv
bjsKLQotICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5wdXRG
aWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKLSAg
ICAgICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewotICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IHJlYWQgZnJvbSAlc1xuIiwgZmlsZXBh
dGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShp
bnB1dEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNpemU7Ci0gICAgfQotICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEN1
cmxDYWNoZUVudHJ5OjppbnZhbGlkYXRlKCkKIHsKICAgICBjbG9zZUNvbnRlbnRGaWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5oCmluZGV4IDI0NjE0MDhiZmE2Mi4uZmNlYjcxZWZkYzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAt
ODksNyArODksNiBAQCBwcml2YXRlOgogICAgIFJlc291cmNlSGFuZGxlKiBtX2pvYjsKIAogICAg
IHZvaWQgZ2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKTsKLSAgICBib29s
IGxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZXIpOwogICAgIGJvb2wgbG9hZFJlc3BvbnNlSGVhZGVycygpOwogCiAgICAgYm9vbCBv
cGVuQ29udGVudEZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAxNmZmMTZmOGNkNGMuLmRj
NGQ2MDdhYzM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTAxLDQwICsxMDEsMTYgQEAgdm9p
ZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGlyKTsKLSAg
ICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7Ci0KLSAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgewotICAgICAgICBMT0coTmV0d29yaywg
IkNhY2hlIFdhcm5pbmc6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBpbmRleEZpbGVQ
YXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
IGZpbGVzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaW5kZXhGaWxlUGF0aCk7Ci0gICAgaWYg
KCFmaWxlc2l6ZSkgewotICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBu
b3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkp
OwotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBTdHJpbmcg
aW5kZXhGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyLCAiaW5kZXguZGF0Il9zKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlKGluZGV4RmlsZVBhdGgpOworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAg
IExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCByZWFkICVzXG4iLCBpbmRleEZp
bGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAv
LyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKLSAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyOwotICAgIGJ1ZmZlci5yZXNpemUoKmZpbGVzaXplKTsKLSAgICBpbnQgYnVmZmVyUG9zaXRp
b24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IElPX0JVRkZFUlNJWkU7Ci0gICAgd2hp
bGUgKCpmaWxlc2l6ZSA+IGJ1ZmZlclBvc2l0aW9uKSB7Ci0gICAgICAgIGlmICgqZmlsZXNpemUg
LSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRTaXplKQotICAgICAgICAgICAgYnVmZmVyUmVh
ZFNpemUgPSAqZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKLQotICAgICAgICBGaWxlU3lzdGVt
OjpyZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24s
IGJ1ZmZlclJlYWRTaXplKTsKLSAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVmZmVyUmVhZFNp
emU7Ci0gICAgfQotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOwotCiAgICAg
Ly8gQ3JlYXRlIHN0cmluZ3MgZnJvbSBidWZmZXIKLSAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9
IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIGhlYWRlckNv
bnRlbnQgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKTsKICAgICBWZWN0
b3I8U3RyaW5nPiBpbmRleFVSTHMgPSBoZWFkZXJDb250ZW50LnNwbGl0KCdcbicpOwotICAgIGJ1
ZmZlci5jbGVhcigpOwogCiAgICAgLy8gQWRkIGVudHJpZXMgdG8gaW5kZXgKICAgICBWZWN0b3I8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbmRleFVSTHMuYmVnaW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDBkNDVhZDVlOTIzMC4u
YmNkNDEyNmI0ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAKQEAgLTEwMjAsNTYgKzEwMjAsMjAgQEAgQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3Rl
bUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHQKIH0K
IAogI2lmIEVOQUJMRShWSURFTykKLXN0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNP
ZkZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxl
c2l6ZSwgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCi17Ci0gICAgLy8gTG9hZCB0aGUgZmlsZSBj
b250ZW50IGludG8gYnVmZmVyCi0gICAgYnVmZmVyLnJlc2l6ZShmaWxlc2l6ZSArIDEpOwotCi0g
ICAgaW50IGJ1ZmZlclBvc2l0aW9uID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSA0MDk2
OwotICAgIGludCBieXRlc1JlYWQgPSAwOwotICAgIHdoaWxlIChmaWxlc2l6ZSA+IGJ1ZmZlclBv
c2l0aW9uKSB7Ci0gICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVy
UmVhZFNpemUpCi0gICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVy
UG9zaXRpb247Ci0KLSAgICAgICAgYnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxl
KGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwot
ICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7Ci0gICAgICAgICAgICBi
dWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwotICAgIH0KLQotICAgIGJ1ZmZlcltm
aWxlc2l6ZV0gPSAwOwotfQotCiBTdHJpbmcgUmVuZGVyVGhlbWVXaW46OnN0cmluZ1dpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICNp
ZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXF1ZXN0ZWRVUkxSZWYgPSBhZG9w
dENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYktpdEJ1bmRsZSgpLCBuYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogICAgIGlm
ICghcmVxdWVzdGVkVVJMUmVmKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgVUludDggcmVxdWVzdGVkRmlsZVBhdGhbTUFYX1BB
VEhdOwogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVk
VVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIE1BWF9QQVRIKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShyZXF1ZXN0ZWRGaWxl
UGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVkRmlsZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIGF1dG8gZmlsZXNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShyZXF1
ZXN0ZWRGaWxlSGFuZGxlKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBWZWN0b3I8
dWludDhfdD4gZmlsZUNvbnRlbnRzOwotICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
cmVxdWVzdGVkRmlsZUhhbmRsZSwgKmZpbGVzaXplLCBmaWxlQ29udGVudHMpOwotICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAgICBhdXRvIGNvbnRlbnRz
ID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUocmVxdWVzdGVkRmlsZVBhdGgpOwogCi0gICAg
cmV0dXJuIFN0cmluZyhmaWxlQ29udGVudHMuZGF0YSgpLCAqZmlsZXNpemUpOworICAgIHJldHVy
biBjb250ZW50cyA/IFN0cmluZzo6YWRvcHQoV1RGTW92ZShjb250ZW50cy52YWx1ZSgpKSkgOiBl
bXB0eVN0cmluZygpOwogI2Vsc2UKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwZmI5
ZDUzZmM3Yy4uYTFmMGMxZTBkMmUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTItMTAgIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbSBmdW5j
dGlvbiB0byByZWFkIGEgZmlsZSBhdCBhIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDEwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgcmVhZEVudGlyZUZpbGUuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMTAgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
Mjg2ODM2LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApp
bmRleCA4NTgzYjI5YWQ5OTAuLmYzMzJkNzJiYWQwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTgxOSw0ICs4MTksMTcgQEAgVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCByZWFsUGF0aCkKICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVh
bFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRo
LCB7ICIuLiIsICIuIiwgIi4iLCAic3ViZm9sZGVyIiB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2
ZWRTdWJGb2xkZXJQYXRoLnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFu
ZCAiLiIKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFkRW50aXJlRmlsZSkKK3sKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpy
ZWFkRW50aXJlRmlsZShlbXB0eVN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0
ZW06OnJlYWRFbnRpcmVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpKSk7CisgICAgRVhQRUNUX0ZB
TFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpKTsKKwor
ICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlcik7CisgICAgYXV0byBjb250ZW50cyA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOworICAgIEVYUEVDVF9TVFJFUShjb250
ZW50cy51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtVGVzdERhdGEpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="472243"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446807</attachid>
            <date>2021-12-10 14:01:16 -0800</date>
            <delta_ts>2021-12-10 14:09:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>16476</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NDVkMDcxMGI2NS4uOTU0ZDAzY2QwNWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpiYWNrZW5k
Q29tbWFuZHMgY29uc3QpOgorCiAyMDIxLTEyLTEwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBNYWMtc3BlY2lmaWMgQVJNNjRFSGFzaCBpbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApp
bmRleCA5YTY4NzY1N2M4NmIuLjU2YTQyYmE1NmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90
ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1hbmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29t
bWFuZHNQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBG
aWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2JhY2tlbmRDb21tYW5kc1BhdGgpOwogCi0gICAg
U3RyaW5nIHJlc3VsdDsKLSAgICBpZiAoYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
aGFuZGxlKSkgewotICAgICAgICBWZWN0b3I8TENoYXI+IGJ1ZmZlcigqc2l6ZSk7Ci0gICAgICAg
IGludCBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCAqc2l6ZSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZXNSZWFkKSA9PSAqc2l6ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFN0
cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY29udGVudHMg
PyBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY29udGVudHMudmFsdWUoKSkpIDogZW1wdHlTdHJpbmco
KTsKIH0KIAogLy8gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCBoYW5kbGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA2NzM1MmRjZjA5ZjUuLjI0MTQ3MjY2YTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0x
Mi0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFk
ZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlIHdoaWNoIHRha2VzIGEgcGF0aCBhbmQgYXR0ZW1wdHMgdG8gcmVhZCB0aGUg
d2hvbGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGUgaW50byBhIFZlY3Rvcjx1aW50OF90
Pi4gSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGVtcHR5IHRoZW4gaXQgcmV0dXJucwor
ICAgICAgICBudWxsb3B0LiBJbnRlcm5hbGx5IGl0IG1hbmFnZXMgdGhlIG9wZW5pbmcgYW5kIGNs
b3Npbmcgb2YgdGhlIGZpbGUgdG8gcHJldmVudCBmaWxlIGhhbmRsZXMKKyAgICAgICAgZnJvbSBs
ZWFraW5nLgorCisgICAgICAgIE1vZGlmeSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSB3aGlj
aCB0YWtlcyBhIGhhbmRsZSB0byBjb250aW51ZSByZWFkaW5nIHVudGlsIHRoZSBlbnRpcmUKKyAg
ICAgICAgZmlsZSBoYXMgYmVlbiByZWFkLiBQcmV2aW91c2x5IGl0IGNvdWxkJ3ZlIGp1c3QgZG9u
ZSBhIHBhcnRpYWwgcmVhZCBhcworICAgICAgICBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUgZG9l
cyBub3QgZ3VhcmFudGVlIGl0IHdpbGwgcmVhZCBhbGwgdGhlIGJ5dGVzIHJlcXVlc3RlZC4KKwor
ICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OnJlYWRFbnRpcmVGaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIx
LTEyLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugc2lt
cGxlciBpZGlvbXMgZm9yIHN0ZDo6bGVzcyBhbmQgc3RkOjpncmVhdGVyIHBvc3NpYmxlIGluIG1v
ZGVybiBDKysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZjY5MDQ5MjhlZjU1Li4xMzQwYjExZjdh
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01MjgsMTMgKzUyOCwyNyBAQCBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwotICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZWFkID0gRmls
ZVN5c3RlbTo6cmVhZEZyb21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSAwOworICAgIGludCBieXRlc1JlYWQ7
CisKKyAgICB3aGlsZSAoKGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5k
bGUsIGJ1ZmZlci5kYXRhKCkgKyB0b3RhbEJ5dGVzUmVhZCwgYnl0ZXNUb1JlYWQudmFsdWUoKSAt
IHRvdGFsQnl0ZXNSZWFkKSkgPiAwKQorICAgICAgICB0b3RhbEJ5dGVzUmVhZCArPSBieXRlc1Jl
YWQ7CisKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCitzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gcmVhZEVudGlyZUZp
bGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIHJl
dHVybiBjb250ZW50czsKK30KKwogdm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCiB7CiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggZmQ4
NTNhNDlhYWM4Li5kNGQyY2UyZDRiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0OCw2ICsxNDgs
NyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogdXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWlu
dDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JN
YWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUp
OworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFk
RW50aXJlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUg
ZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGZmZmU4MjQ2YzMzOC4uY2MwZjVkMDgyM2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjEtMTItMTAgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255
LmNvbT4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbSBmdW5jdGlvbiB0byByZWFkIGEgZmlsZSBh
dCBhIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDEwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZS4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2Fj
aGVFbnRyeTo6cmVhZENhY2hlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50
cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50
cnk6OmxvYWRGaWxlVG9CdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFn
ZXI6OmxvYWRJbmRleCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpzdHJpbmdXaXRoQ29udGVudHNPZkZp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZSk6IERl
bGV0ZWQuCisKIDIwMjEtMTItMTAgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEV4dGVuZCB0aGUgc2NvcGUgd2hlcmUgdGhlIFdpbmRvdydzIGN1cnJlbnQg
ZXZlbnQgaXMgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA2OGNhZjA1NDZiNjIuLjA0MjEwYjk5NjEx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwCkBAIC0xMTQsMTIgKzExNCwxNCBAQCBib29sIEN1cmxDYWNoZUVu
dHJ5OjpyZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSogam9iKQogewogICAgIEFTU0VSVChq
b2ItPmNsaWVudCgpKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgaWYgKCFs
b2FkRmlsZVRvQnVmZmVyKG1fY29udGVudEZpbGVuYW1lLCBidWZmZXIpKQorICAgIGF1dG8gYnVm
ZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUobV9jb250ZW50RmlsZW5hbWUpOworICAg
IGlmICghYnVmZmVyKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxk
IG5vdCBvcGVuICVzIHRvIHJlYWQgY2FjaGVkIGNvbnRlbnRcbiIsIG1fY29udGVudEZpbGVuYW1l
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBp
ZiAoYXV0byBidWZmZXJTaXplID0gYnVmZmVyLnNpemUoKSkKLSAgICAgICAgam9iLT5nZXRJbnRl
cm5hbCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSksIGJ1ZmZlclNpemUpOworICAgIGlmIChhdXRvIGJ1ZmZlclNp
emUgPSBidWZmZXIudmFsdWUoKS5zaXplKCkpCisgICAgICAgIGpvYi0+Z2V0SW50ZXJuYWwoKS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoam9iLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlci52YWx1ZSgpKSksIGJ1ZmZlclNpemUpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC0xNTIsMTEgKzE1NCwxMyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VI
ZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBib29sIEN1cmxDYWNo
ZUVudHJ5Ojpsb2FkUmVzcG9uc2VIZWFkZXJzKCkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyOwotICAgIGlmICghbG9hZEZpbGVUb0J1ZmZlcihtX2hlYWRlckZpbGVuYW1lLCBidWZmZXIp
KQorICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUobV9oZWFkZXJG
aWxlbmFtZSk7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJDYWNo
ZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgdG8gcmVhZCBjYWNoZWQgaGVhZGVyc1xuIiwgbV9o
ZWFkZXJGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogCi0gICAgU3RyaW5nIGhlYWRlckNvbnRlbnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgU3RyaW5nIGhlYWRlckNvbnRlbnQgPSBTdHJpbmc6OmFkb3B0
KFdURk1vdmUoYnVmZmVyLnZhbHVlKCkpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBoZWFkZXJGaWVs
ZHMgPSBoZWFkZXJDb250ZW50LnNwbGl0KCdcbicpOwogCiAgICAgVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7CkBAIC0yMjQsNDQgKzIyOCw2
IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJp
bmcmIHVybCkKICAgICBtX2Jhc2VuYW1lID0gYmFzZU5hbWVCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlcGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCi17Ci0gICAgLy8gT3BlbiB0aGUgZmls
ZQotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lz
dGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsK
LSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgewotICAgICAg
ICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxu
IiwgZmlsZXBhdGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGF1dG8gZmlsZXNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmaWxlcGF0aCk7
Ci0gICAgaWYgKCFmaWxlc2l6ZSkgewotICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9y
OiBDb3VsZCBub3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgZmlsZXBhdGgubGF0aW4xKCkuZGF0
YSgpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50
byBidWZmZXIKLSAgICBidWZmZXIucmVzaXplKCpmaWxlc2l6ZSk7Ci0gICAgaW50IGJ1ZmZlclBv
c2l0aW9uID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSA0MDk2OwotICAgIGludCBieXRl
c1JlYWQgPSAwOwotICAgIHdoaWxlICgqZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewotICAg
ICAgICBpZiAoKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKLSAg
ICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247Ci0K
LSAgICAgICAgYnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGlucHV0RmlsZSwg
YnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAg
IGlmIChieXRlc1JlYWQgIT0gYnVmZmVyUmVhZFNpemUpIHsKLSAgICAgICAgICAgIExPRyhOZXR3
b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCByZWFkIGZyb20gJXNcbiIsIGZpbGVwYXRoLmxh
dGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRG
aWxlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1
ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaW5wdXRGaWxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBDdXJsQ2Fj
aGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
aAppbmRleCAyNDYxNDA4YmZhNjIuLmZjZWI3MWVmZGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTg5LDcg
Kzg5LDYgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUhhbmRsZSogbV9qb2I7CiAKICAgICB2b2lk
IGdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCk7Ci0gICAgYm9vbCBsb2Fk
RmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3Rvcjx1aW50OF90PiYgYnVm
ZmVyKTsKICAgICBib29sIGxvYWRSZXNwb25zZUhlYWRlcnMoKTsKIAogICAgIGJvb2wgb3BlbkNv
bnRlbnRGaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggMTZmZjE2ZjhjZDRjLi5kYzRkNjA3
YWMzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTEwMSw0MCArMTAxLDE2IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7Ci0gICAgaW5k
ZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwotCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBh
dGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNo
ZSBXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwgaW5kZXhGaWxlUGF0aC5s
YXRpbjEoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxl
c2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGluZGV4RmlsZVBhdGgpOwotICAgIGlmICghZmls
ZXNpemUpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdl
dCBmaWxlIHNpemUgb2YgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGluZGV4RmlsZSk7CisgICAgU3RyaW5nIGluZGV4
RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZURp
ciwgImluZGV4LmRhdCJfcyk7CisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50
aXJlRmlsZShpbmRleEZpbGVQYXRoKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBMT0co
TmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCAlc1xuIiwgaW5kZXhGaWxlUGF0
aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gTG9h
ZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVyCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsK
LSAgICBidWZmZXIucmVzaXplKCpmaWxlc2l6ZSk7Ci0gICAgaW50IGJ1ZmZlclBvc2l0aW9uID0g
MDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSBJT19CVUZGRVJTSVpFOwotICAgIHdoaWxlICgq
ZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewotICAgICAgICBpZiAoKmZpbGVzaXplIC0gYnVm
ZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKLSAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXpl
ID0gKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6cmVh
ZEZyb21GaWxlKGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZm
ZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwot
ICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKLQogICAgIC8vIENy
ZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCi0gICAgU3RyaW5nIGhlYWRlckNvbnRlbnQgPSBTdHJp
bmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgYXV0byBoZWFkZXJDb250ZW50
ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7CiAgICAgVmVjdG9yPFN0
cmluZz4gaW5kZXhVUkxzID0gaGVhZGVyQ29udGVudC5zcGxpdCgnXG4nKTsKLSAgICBidWZmZXIu
Y2xlYXIoKTsKIAogICAgIC8vIEFkZCBlbnRyaWVzIHRvIGluZGV4CiAgICAgVmVjdG9yPFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5kZXhVUkxzLmJlZ2luKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCAwZDQ1YWQ1ZTkyMzAuLmJjZDQx
MjZiNGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
CkBAIC0xMDIwLDU2ICsxMDIwLDIwIEBAIENvbG9yIFJlbmRlclRoZW1lV2luOjpzeXN0ZW1Db2xv
cihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQsIE9wdGlvblNldDxTdHlsZUNvbG9yT3B0CiB9CiAKICNp
ZiBFTkFCTEUoVklERU8pCi1zdGF0aWMgdm9pZCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBsb25nIGxvbmcgZmlsZXNpemUs
IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQotewotICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVu
dCBpbnRvIGJ1ZmZlcgotICAgIGJ1ZmZlci5yZXNpemUoZmlsZXNpemUgKyAxKTsKLQotICAgIGlu
dCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAgaW50IGJ1ZmZlclJlYWRTaXplID0gNDA5NjsKLSAg
ICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICB3aGlsZSAoZmlsZXNpemUgPiBidWZmZXJQb3NpdGlv
bikgewotICAgICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRT
aXplKQotICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0
aW9uOwotCi0gICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxl
LCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKLSAgICAg
ICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewotICAgICAgICAgICAgYnVmZmVy
LmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBidWZm
ZXJQb3NpdGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKLSAgICB9Ci0KLSAgICBidWZmZXJbZmlsZXNp
emVdID0gMDsKLX0KLQogU3RyaW5nIFJlbmRlclRoZW1lV2luOjpzdHJpbmdXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAjaWYgVVNF
KENGKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVxdWVzdGVkVVJMUmVmID0gYWRvcHRDRihD
RkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3ZWJLaXRCdW5kbGUoKSwgbmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKICAgICBpZiAoIXJl
cXVlc3RlZFVSTFJlZikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAogICAgIFVJbnQ4IHJlcXVlc3RlZEZpbGVQYXRoW01BWF9QQVRIXTsK
ICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVlc3RlZFVSTFJl
Zi5nZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhfUEFUSCkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1
ZXN0ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUpKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0KLSAgICBhdXRvIGZpbGVzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUocmVxdWVzdGVk
RmlsZUhhbmRsZSk7Ci0gICAgaWYgKCFmaWxlc2l6ZSkgewotICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICB9CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGZpbGVDb250ZW50czsKLSAgICBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKHJlcXVl
c3RlZEZpbGVIYW5kbGUsICpmaWxlc2l6ZSwgZmlsZUNvbnRlbnRzKTsKLSAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CisgICAgYXV0byBjb250ZW50cyA9IEZp
bGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHJlcXVlc3RlZEZpbGVQYXRoKTsKIAotICAgIHJldHVy
biBTdHJpbmcoZmlsZUNvbnRlbnRzLmRhdGEoKSwgKmZpbGVzaXplKTsKKyAgICByZXR1cm4gY29u
dGVudHMgPyBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY29udGVudHMudmFsdWUoKSkpIDogZW1wdHlT
dHJpbmcoKTsKICNlbHNlCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZmNjZmRkMzkx
ZTguLmFiYjRiYWQ1MGVkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTEwICBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW0gZnVuY3Rpb24g
dG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIHJlYWRFbnRpcmVGaWxlLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBpZi1kb21haW4gYW5kIHVubGVz
cy1kb21haW4gY29udmVyc2lvbiB0byBXS0NvbnRlbnRSdWxlTGlzdCBwYXJzaW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5
MC4uZjMzMmQ3MmJhZDA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcApAQCAtODE5LDQgKzgxOSwxNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJl
YWxQYXRoKQogICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHN1YkZvbGRlclBhdGgsIHsgIi4uIiwgIi4iLCAi
LiIsICJzdWJmb2xkZXIiIH0pKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFN1YkZvbGRlclBhdGgu
dXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIuLiIgYW5kICIuIgogfQogCitURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIHJlYWRFbnRpcmVGaWxlKQoreworICAgIEVYUEVDVF9GQUxTRShG
aWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKGVt
cHR5U3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZp
bGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgImRvZXMtbm90LWV4aXN0IikpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
cmVhZEVudGlyZUZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSkpOworCisgICAgYXV0byBidWZmZXIg
PSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlci52YWx1ZSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKGNvbnRlbnRzLnV0ZjgoKS5kYXRh
KCksIEZpbGVTeXN0ZW1UZXN0RGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>
<flag name="commit-queue"
          id="472290"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446808</attachid>
            <date>2021-12-10 14:09:00 -0800</date>
            <delta_ts>2021-12-10 15:08:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>16468</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NDVkMDcxMGI2NS4uOTU0ZDAzY2QwNWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpiYWNrZW5k
Q29tbWFuZHMgY29uc3QpOgorCiAyMDIxLTEyLTEwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBNYWMtc3BlY2lmaWMgQVJNNjRFSGFzaCBpbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApp
bmRleCA5YTY4NzY1N2M4NmIuLjU2YTQyYmE1NmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTI2MywxOSArMjYzLDkgQEAgU3RyaW5nIFJlbW90
ZUluc3BlY3Rvcjo6YmFja2VuZENvbW1hbmRzKCkgY29uc3QKICAgICBpZiAobV9iYWNrZW5kQ29t
bWFuZHNQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9iYWNrZW5kQ29tbWFuZHNQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gY29udGVudHMgPSBG
aWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShtX2JhY2tlbmRDb21tYW5kc1BhdGgpOwogCi0gICAg
U3RyaW5nIHJlc3VsdDsKLSAgICBpZiAoYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
aGFuZGxlKSkgewotICAgICAgICBWZWN0b3I8TENoYXI+IGJ1ZmZlcigqc2l6ZSk7Ci0gICAgICAg
IGludCBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCAqc2l6ZSk7Ci0gICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZXNSZWFkKSA9PSAqc2l6ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFN0
cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY29udGVudHMg
PyBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY29udGVudHMudmFsdWUoKSkpIDogZW1wdHlTdHJpbmco
KTsKIH0KIAogLy8gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCBoYW5kbGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA2NzM1MmRjZjA5ZjUuLjI0MTQ3MjY2YTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0x
Mi0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFk
ZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW06OnJl
YWRFbnRpcmVGaWxlIHdoaWNoIHRha2VzIGEgcGF0aCBhbmQgYXR0ZW1wdHMgdG8gcmVhZCB0aGUg
d2hvbGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGUgaW50byBhIFZlY3Rvcjx1aW50OF90
Pi4gSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGVtcHR5IHRoZW4gaXQgcmV0dXJucwor
ICAgICAgICBudWxsb3B0LiBJbnRlcm5hbGx5IGl0IG1hbmFnZXMgdGhlIG9wZW5pbmcgYW5kIGNs
b3Npbmcgb2YgdGhlIGZpbGUgdG8gcHJldmVudCBmaWxlIGhhbmRsZXMKKyAgICAgICAgZnJvbSBs
ZWFraW5nLgorCisgICAgICAgIE1vZGlmeSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSB3aGlj
aCB0YWtlcyBhIGhhbmRsZSB0byBjb250aW51ZSByZWFkaW5nIHVudGlsIHRoZSBlbnRpcmUKKyAg
ICAgICAgZmlsZSBoYXMgYmVlbiByZWFkLiBQcmV2aW91c2x5IGl0IGNvdWxkJ3ZlIGp1c3QgZG9u
ZSBhIHBhcnRpYWwgcmVhZCBhcworICAgICAgICBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUgZG9l
cyBub3QgZ3VhcmFudGVlIGl0IHdpbGwgcmVhZCBhbGwgdGhlIGJ5dGVzIHJlcXVlc3RlZC4KKwor
ICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OnJlYWRFbnRpcmVGaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIx
LTEyLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugc2lt
cGxlciBpZGlvbXMgZm9yIHN0ZDo6bGVzcyBhbmQgc3RkOjpncmVhdGVyIHBvc3NpYmxlIGluIG1v
ZGVybiBDKysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZjY5MDQ5MjhlZjU1Li4xMzNhNjhjYTVi
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01MjgsMTMgKzUyOCwyNyBAQCBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwotICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZWFkID0gRmls
ZVN5c3RlbTo6cmVhZEZyb21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSAwOworICAgIGludCBieXRlc1JlYWQ7
CisKKyAgICB3aGlsZSAoKGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5k
bGUsIGJ1ZmZlci5kYXRhKCkgKyB0b3RhbEJ5dGVzUmVhZCwgYnl0ZXNUb1JlYWQgLSB0b3RhbEJ5
dGVzUmVhZCkpID4gMCkKKyAgICAgICAgdG90YWxCeXRlc1JlYWQgKz0gYnl0ZXNSZWFkOworCiAg
ICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBh
dXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVP
cGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBjb250ZW50cyA9IHJlYWRFbnRpcmVGaWxlKGhhbmRs
ZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gY29u
dGVudHM7Cit9CisKIHZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBXYWxsVGltZSB0aW1lKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5
IGRlbGV0ZSBkaXJlY3RvcnkgZm9sZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGZkODUzYTQ5YWFj
OC4uZDRkMmNlMmQ0YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDgsNiArMTQ4LDcgQEAgaW5s
aW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkg
eyByZXR1cm4gaGFuZGxlICE9IGkKIHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+
OwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1l
IHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBmZmZlODI0NmMzMzguLmNjMGY1ZDA4MjNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIxLTEyLTEwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisK
KyAgICAgICAgQWRkIEZpbGVTeXN0ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRo
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRmls
ZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6
OnJlYWRDYWNoZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojpsb2Fk
UmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojpsb2Fk
RmlsZVRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2Fk
SW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUpOiBEZWxldGVkLgor
CiAyMDIxLTEyLTEwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFeHRlbmQgdGhlIHNjb3BlIHdoZXJlIHRoZSBXaW5kb3cncyBjdXJyZW50IGV2ZW50IGlz
IHNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggNjhjYWYwNTQ2YjYyLi4wNDIxMGI5OTYxMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcApAQCAtMTE0LDEyICsxMTQsMTQgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cmVh
ZENhY2hlZERhdGEoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKICAgICBBU1NFUlQoam9iLT5jbGll
bnQoKSk7CiAKLSAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAgIGlmICghbG9hZEZpbGVU
b0J1ZmZlcihtX2NvbnRlbnRGaWxlbmFtZSwgYnVmZmVyKSkKKyAgICBhdXRvIGJ1ZmZlciA9IEZp
bGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKG1fY29udGVudEZpbGVuYW1lKTsKKyAgICBpZiAoIWJ1
ZmZlcikgeworICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3Bl
biAlcyB0byByZWFkIGNhY2hlZCBjb250ZW50XG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgaWYgKGF1dG8g
YnVmZmVyU2l6ZSA9IGJ1ZmZlci5zaXplKCkpCi0gICAgICAgIGpvYi0+Z2V0SW50ZXJuYWwoKS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoam9iLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpLCBidWZmZXJTaXplKTsKKyAgICBpZiAoYXV0byBidWZmZXJTaXplID0gYnVm
ZmVyLnZhbHVlKCkuc2l6ZSgpKQorICAgICAgICBqb2ItPmdldEludGVybmFsKCktPmNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKGpvYiwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIudmFsdWUoKSkpLCBidWZmZXJTaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUy
LDExICsxNTQsMTMgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6
bG9hZFJlc3BvbnNlSGVhZGVycygpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAg
ICBpZiAoIWxvYWRGaWxlVG9CdWZmZXIobV9oZWFkZXJGaWxlbmFtZSwgYnVmZmVyKSkKKyAgICBh
dXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKG1faGVhZGVyRmlsZW5hbWUp
OworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6
IENvdWxkIG5vdCBvcGVuICVzIHRvIHJlYWQgY2FjaGVkIGhlYWRlcnNcbiIsIG1faGVhZGVyRmls
ZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAot
ICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOworICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlci52YWx1ZSgpKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gaGVhZGVyRmllbGRzID0gaGVh
ZGVyQ29udGVudC5zcGxpdCgnXG4nKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOwpAQCAtMjI0LDQ0ICsyMjgsNiBAQCB2b2lk
IEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwp
CiAgICAgbV9iYXNlbmFtZSA9IGJhc2VOYW1lQnVpbGRlci50b1N0cmluZygpOwogfQogCi1ib29s
IEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgs
IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQotewotICAgIC8vIE9wZW4gdGhlIGZpbGUKLSAgICBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gRmlsZVN5c3RlbTo6b3Bl
bkZpbGUoZmlsZXBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYg
KCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKLSAgICAgICAgTE9HKE5l
dHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVw
YXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBhdXRvIGZpbGVzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoZmlsZXBhdGgpOwotICAgIGlm
ICghZmlsZXNpemUpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQg
bm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIGZpbGVwYXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0g
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVy
Ci0gICAgYnVmZmVyLnJlc2l6ZSgqZmlsZXNpemUpOwotICAgIGludCBidWZmZXJQb3NpdGlvbiA9
IDA7Ci0gICAgaW50IGJ1ZmZlclJlYWRTaXplID0gNDA5NjsKLSAgICBpbnQgYnl0ZXNSZWFkID0g
MDsKLSAgICB3aGlsZSAoKmZpbGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsKLSAgICAgICAgaWYg
KCpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCi0gICAgICAgICAg
ICBidWZmZXJSZWFkU2l6ZSA9ICpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwotCi0gICAgICAg
IGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5k
YXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwotICAgICAgICBpZiAoYnl0
ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29yaywgIkNh
Y2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5k
YXRhKCkpOwotICAgICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBidWZmZXJQb3Np
dGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKLSAgICB9Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGlucHV0RmlsZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQ3VybENhY2hlRW50cnk6
OmludmFsaWRhdGUoKQogewogICAgIGNsb3NlQ29udGVudEZpbGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXgg
MjQ2MTQwOGJmYTYyLi5mY2ViNzFlZmRjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCkBAIC04OSw3ICs4OSw2IEBA
IHByaXZhdGU6CiAgICAgUmVzb3VyY2VIYW5kbGUqIG1fam9iOwogCiAgICAgdm9pZCBnZW5lcmF0
ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpOwotICAgIGJvb2wgbG9hZEZpbGVUb0J1
ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcik7CiAg
ICAgYm9vbCBsb2FkUmVzcG9uc2VIZWFkZXJzKCk7CiAKICAgICBib29sIG9wZW5Db250ZW50Rmls
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDE2ZmYxNmY4Y2Q0Yy4uZGM0ZDYwN2FjMzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0xMDEsNDAgKzEwMSwxNiBAQCB2b2lkIEN1cmxDYWNoZU1h
bmFnZXI6OmxvYWRJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBh
dGguYXBwZW5kKCJpbmRleC5kYXQiKTsKLQotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChpbmRleEZpbGUpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2Fybmlu
ZzogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gZmlsZXNpemUgPSBG
aWxlU3lzdGVtOjpmaWxlU2l6ZShpbmRleEZpbGVQYXRoKTsKLSAgICBpZiAoIWZpbGVzaXplKSB7
Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBz
aXplIG9mICVzXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIFN0cmluZyBpbmRleEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXIsICJpbmRl
eC5kYXQiX3MpOworICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUo
aW5kZXhGaWxlUGF0aCk7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgTE9HKE5ldHdvcmss
ICJDYWNoZSBFcnJvcjogQ291bGQgbm90IHJlYWQgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4x
KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIExvYWQgdGhlIGZp
bGUgY29udGVudCBpbnRvIGJ1ZmZlcgotICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0gICAgYnVm
ZmVyLnJlc2l6ZSgqZmlsZXNpemUpOwotICAgIGludCBidWZmZXJQb3NpdGlvbiA9IDA7Ci0gICAg
aW50IGJ1ZmZlclJlYWRTaXplID0gSU9fQlVGRkVSU0laRTsKLSAgICB3aGlsZSAoKmZpbGVzaXpl
ID4gYnVmZmVyUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKCpmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0
aW9uIDwgYnVmZmVyUmVhZFNpemUpCi0gICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9ICpmaWxl
c2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwotCi0gICAgICAgIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmls
ZShpbmRleEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNp
emUpOwotICAgICAgICBidWZmZXJQb3NpdGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKLSAgICB9Ci0g
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGluZGV4RmlsZSk7Ci0KICAgICAvLyBDcmVhdGUgc3Ry
aW5ncyBmcm9tIGJ1ZmZlcgotICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIGF1dG8gaGVhZGVyQ29udGVudCA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShidWZmZXIudmFsdWUoKSkpOwogICAgIFZlY3RvcjxTdHJpbmc+IGlu
ZGV4VVJMcyA9IGhlYWRlckNvbnRlbnQuc3BsaXQoJ1xuJyk7Ci0gICAgYnVmZmVyLmNsZWFyKCk7
CiAKICAgICAvLyBBZGQgZW50cmllcyB0byBpbmRleAogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IGluZGV4VVJMcy5iZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggMGQ0NWFkNWU5MjMwLi5iY2Q0MTI2YjRlMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtMTAy
MCw1NiArMTAyMCwyMCBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3IoQ1NTVmFs
dWVJRCBjc3NWYWx1ZUlkLCBPcHRpb25TZXQ8U3R5bGVDb2xvck9wdAogfQogCiAjaWYgRU5BQkxF
KFZJREVPKQotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8
dWludDhfdD4mIGJ1ZmZlcikKLXsKLSAgICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBi
dWZmZXIKLSAgICBidWZmZXIucmVzaXplKGZpbGVzaXplICsgMSk7Ci0KLSAgICBpbnQgYnVmZmVy
UG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IDQwOTY7Ci0gICAgaW50IGJ5
dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUgKGZpbGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsKLSAg
ICAgICAgaWYgKGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKLSAg
ICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKLQot
ICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwgYnVmZmVy
LmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGlmIChi
eXRlc1JlYWQgIT0gYnVmZmVyUmVhZFNpemUpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5jbGVhcigp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyUG9zaXRp
b24gKz0gYnVmZmVyUmVhZFNpemU7Ci0gICAgfQotCi0gICAgYnVmZmVyW2ZpbGVzaXplXSA9IDA7
Ci19Ci0KIFN0cmluZyBSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogI2lmIFVTRShDRikKICAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlcXVlc3RlZFVSTFJlZiA9IGFkb3B0Q0YoQ0ZCdW5kbGVD
b3B5UmVzb3VyY2VVUkwod2ViS2l0QnVuZGxlKCksIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAgICAgaWYgKCFyZXF1ZXN0ZWRV
UkxSZWYpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICBVSW50OCByZXF1ZXN0ZWRGaWxlUGF0aFtNQVhfUEFUSF07CiAgICAgaWYg
KCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCks
IGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwgTUFYX1BBVEgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgcmVxdWVzdGVkRmls
ZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0g
ICAgYXV0byBmaWxlc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5k
bGUpOwotICAgIGlmICghZmlsZXNpemUpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KHJlcXVlc3RlZEZpbGVIYW5kbGUpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBmaWxl
Q29udGVudHM7Ci0gICAgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShyZXF1ZXN0ZWRGaWxl
SGFuZGxlLCAqZmlsZXNpemUsIGZpbGVDb250ZW50cyk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOworICAgIGF1dG8gY29udGVudHMgPSBGaWxlU3lzdGVt
OjpyZWFkRW50aXJlRmlsZShyZXF1ZXN0ZWRGaWxlUGF0aCk7CiAKLSAgICByZXR1cm4gU3RyaW5n
KGZpbGVDb250ZW50cy5kYXRhKCksICpmaWxlc2l6ZSk7CisgICAgcmV0dXJuIGNvbnRlbnRzID8g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGNvbnRlbnRzLnZhbHVlKCkpKSA6IGVtcHR5U3RyaW5nKCk7
CiAjZWxzZQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmZjY2ZkZDM5MWU4Li5hYmI0
YmFkNTBlZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0
ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGZ1bmN0aW9uIHRvIHJlYWQg
YSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHRlc3RzIGZvciByZWFkRW50aXJlRmlsZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKwogMjAyMS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgaWYtZG9tYWluIGFuZCB1bmxlc3MtZG9tYWlu
IGNvbnZlcnNpb24gdG8gV0tDb250ZW50UnVsZUxpc3QgcGFyc2luZwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTgzYjI5YWQ5OTAuLmYzMzJk
NzJiYWQwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHAKQEAgLTgxOSw0ICs4MTksMTcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFsUGF0aCkK
ICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRoLCB7ICIuLiIsICIuIiwgIi4iLCAic3Vi
Zm9sZGVyIiB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJGb2xkZXJQYXRoLnV0ZjgoKS5k
YXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFuZCAiLiIKIH0KIAorVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCByZWFkRW50aXJlRmlsZSkKK3sKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkp
OworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShlbXB0eVN0cmlu
ZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJk
b2VzLW5vdC1leGlzdCIpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRp
cmVGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpKTsKKworICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5
c3RlbTo6cmVhZEVudGlyZUZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlcik7CisgICAgYXV0byBjb250ZW50cyA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIu
dmFsdWUoKSkpOworICAgIEVYUEVDVF9TVFJFUShjb250ZW50cy51dGY4KCkuZGF0YSgpLCBGaWxl
U3lzdGVtVGVzdERhdGEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="472296"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446825</attachid>
            <date>2021-12-10 15:08:19 -0800</date>
            <delta_ts>2021-12-10 16:36:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234103.diff</filename>
            <type>text/plain</type>
            <size>16368</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NDVkMDcxMGI2NS4uOTU0ZDAzY2QwNWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lz
dGVtIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBVc2UgRmlsZVN5c3RlbTo6cmVhZEVudGly
ZUZpbGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OmJhY2tl
bmRDb21tYW5kcyBjb25zdCk6CisKIDIwMjEtMTItMTAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxs
b0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIE1hYy1zcGVjaWZpYyBBUk02NEVIYXNoIGlt
cGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3Bw
CmluZGV4IDlhNjg3NjU3Yzg2Yi4uMGFjMmEyMmU3OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtMjYzLDE5ICsyNjMsOSBAQCBTdHJpbmcgUmVt
b3RlSW5zcGVjdG9yOjpiYWNrZW5kQ29tbWFuZHMoKSBjb25zdAogICAgIGlmIChtX2JhY2tlbmRD
b21tYW5kc1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBo
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2JhY2tlbmRDb21tYW5kc1BhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBjb250ZW50cyA9
IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKG1fYmFja2VuZENvbW1hbmRzUGF0aCk7CiAKLSAg
ICBTdHJpbmcgcmVzdWx0OwotICAgIGlmIChhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6
ZShoYW5kbGUpKSB7Ci0gICAgICAgIFZlY3RvcjxMQ2hhcj4gYnVmZmVyKCpzaXplKTsKLSAgICAg
ICAgaW50IGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZl
ci5kYXRhKCksICpzaXplKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwICYmIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihieXRlc1JlYWQpID09ICpzaXplKQotICAgICAgICAgICAgcmVzdWx0ID0g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjb250ZW50
cyA/IFN0cmluZzo6YWRvcHQoV1RGTW92ZSgqY29udGVudHMpKSA6IGVtcHR5U3RyaW5nKCk7CiB9
CiAKIC8vIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQgaGFuZGxlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNjcz
NTJkY2YwOWY1Li4yNDE0NzI2NmEyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMTItMTAg
IERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAgICBBZGQgRmls
ZVN5c3RlbSBmdW5jdGlvbiB0byByZWFkIGEgZmlsZSBhdCBhIHBhdGgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDEwMworCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW06OnJlYWRF
bnRpcmVGaWxlIHdoaWNoIHRha2VzIGEgcGF0aCBhbmQgYXR0ZW1wdHMgdG8gcmVhZCB0aGUgd2hv
bGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGUgaW50byBhIFZlY3Rvcjx1aW50OF90Pi4g
SWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGVtcHR5IHRoZW4gaXQgcmV0dXJucworICAg
ICAgICBudWxsb3B0LiBJbnRlcm5hbGx5IGl0IG1hbmFnZXMgdGhlIG9wZW5pbmcgYW5kIGNsb3Np
bmcgb2YgdGhlIGZpbGUgdG8gcHJldmVudCBmaWxlIGhhbmRsZXMKKyAgICAgICAgZnJvbSBsZWFr
aW5nLgorCisgICAgICAgIE1vZGlmeSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSB3aGljaCB0
YWtlcyBhIGhhbmRsZSB0byBjb250aW51ZSByZWFkaW5nIHVudGlsIHRoZSBlbnRpcmUKKyAgICAg
ICAgZmlsZSBoYXMgYmVlbiByZWFkLiBQcmV2aW91c2x5IGl0IGNvdWxkJ3ZlIGp1c3QgZG9uZSBh
IHBhcnRpYWwgcmVhZCBhcworICAgICAgICBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUgZG9lcyBu
b3QgZ3VhcmFudGVlIGl0IHdpbGwgcmVhZCBhbGwgdGhlIGJ5dGVzIHJlcXVlc3RlZC4KKworICAg
ICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OnJlYWRFbnRpcmVGaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTEy
LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugc2ltcGxl
ciBpZGlvbXMgZm9yIHN0ZDo6bGVzcyBhbmQgc3RkOjpncmVhdGVyIHBvc3NpYmxlIGluIG1vZGVy
biBDKysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZjY5MDQ5MjhlZjU1Li45MjQ4YjRhZjg3OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01MjMsMTggKzUyMywzMiBAQCBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICB1
bnNpZ25lZCBieXRlc1RvUmVhZDsKKyAgICBzaXplX3QgYnl0ZXNUb1JlYWQ7CiAgICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoc2l6ZSwgYnl0ZXNUb1JlYWQpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Ci0g
ICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBzaXplX3QgdG90YWxCeXRl
c1JlYWQgPSAwOworICAgIGludCBieXRlc1JlYWQ7CisKKyAgICB3aGlsZSAoKGJ5dGVzUmVhZCA9
IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCkgKyB0b3RhbEJ5
dGVzUmVhZCwgYnl0ZXNUb1JlYWQgLSB0b3RhbEJ5dGVzUmVhZCkpID4gMCkKKyAgICAgICAgdG90
YWxCeXRlc1JlYWQgKz0gYnl0ZXNSZWFkOworCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5
dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBj
b250ZW50cyA9IHJlYWRFbnRpcmVGaWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gY29udGVudHM7Cit9CisKIHZvaWQgZGVsZXRlQWxs
RmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBXYWxsVGltZSB0aW1l
KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGRlbGV0ZSBkaXJlY3RvcnkgZm9sZGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCmluZGV4IGZkODUzYTQ5YWFjOC4uZDRkMmNlMmQ0YmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCkBAIC0xNDgsNiArMTQ4LDcgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25z
dCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIHVzaW5n
IFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+OwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAog
Ly8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBu
b3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0
cmluZyYgc3VmZml4ID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZmZlODI0NmMzMzguLmNjMGY1ZDA4
MjNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTEwICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW0gZnVu
Y3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
IENocmlzdGVuc2VuLgorCisgICAgICAgIFVzZSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6cmVhZENhY2hlZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmxvYWRSZXNwb25zZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2lu
OjpzdHJpbmdXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEJ1ZmZl
cldpdGhDb250ZW50c09mRmlsZSk6IERlbGV0ZWQuCisKIDIwMjEtMTItMTAgIEFsZXhleSBTaHZh
eWthICA8YXNodmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuZCB0aGUgc2NvcGUgd2hl
cmUgdGhlIFdpbmRvdydzIGN1cnJlbnQgZXZlbnQgaXMgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA2
OGNhZjA1NDZiNjIuLjIxOWJjZGU1NTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xMTQsMTIgKzEx
NCwxNCBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRs
ZSogam9iKQogewogICAgIEFTU0VSVChqb2ItPmNsaWVudCgpKTsKIAotICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXI7Ci0gICAgaWYgKCFsb2FkRmlsZVRvQnVmZmVyKG1fY29udGVudEZpbGVuYW1l
LCBidWZmZXIpKQorICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUo
bV9jb250ZW50RmlsZW5hbWUpOworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIExPRyhOZXR3
b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIHRvIHJlYWQgY2FjaGVkIGNvbnRl
bnRcbiIsIG1fY29udGVudEZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAKLSAgICBpZiAoYXV0byBidWZmZXJTaXplID0gYnVmZmVyLnNpemUo
KSkKLSAgICAgICAgam9iLT5nZXRJbnRlcm5hbCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZl
cihqb2IsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSksIGJ1ZmZlclNpemUp
OworICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgam9i
LT5nZXRJbnRlcm5hbCgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpLCBidWZmZXJTaXplKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTUyLDExICsxNTQsMTMgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2
ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycygpCiB7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKLSAgICBpZiAoIWxvYWRGaWxlVG9CdWZmZXIobV9oZWFkZXJGaWxlbmFt
ZSwgYnVmZmVyKSkKKyAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxl
KG1faGVhZGVyRmlsZW5hbWUpOworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIExPRyhOZXR3
b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIHRvIHJlYWQgY2FjaGVkIGhlYWRl
cnNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KIAotICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3Ry
aW5nOjphZG9wdChXVEZNb3ZlKCpidWZmZXIpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBoZWFkZXJG
aWVsZHMgPSBoZWFkZXJDb250ZW50LnNwbGl0KCdcbicpOwogCiAgICAgVmVjdG9yPFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7CkBAIC0yMjQsNDQgKzIy
OCw2IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENT
dHJpbmcmIHVybCkKICAgICBtX2Jhc2VuYW1lID0gYmFzZU5hbWVCdWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlcGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCi17Ci0gICAgLy8gT3BlbiB0aGUg
ZmlsZQotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
KTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgewotICAg
ICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVh
ZFxuIiwgZmlsZXBhdGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGF1dG8gZmlsZXNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmaWxlcGF0
aCk7Ci0gICAgaWYgKCFmaWxlc2l6ZSkgewotICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVy
cm9yOiBDb3VsZCBub3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgZmlsZXBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQg
aW50byBidWZmZXIKLSAgICBidWZmZXIucmVzaXplKCpmaWxlc2l6ZSk7Ci0gICAgaW50IGJ1ZmZl
clBvc2l0aW9uID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSA0MDk2OwotICAgIGludCBi
eXRlc1JlYWQgPSAwOwotICAgIHdoaWxlICgqZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewot
ICAgICAgICBpZiAoKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkK
LSAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247
Ci0KLSAgICAgICAgYnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGlucHV0Rmls
ZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAg
ICAgIGlmIChieXRlc1JlYWQgIT0gYnVmZmVyUmVhZFNpemUpIHsKLSAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCByZWFkIGZyb20gJXNcbiIsIGZpbGVwYXRo
LmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5w
dXRGaWxlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwotICAgIH0KLSAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBDdXJs
Q2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuaAppbmRleCAyNDYxNDA4YmZhNjIuLmZjZWI3MWVmZGM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTg5
LDcgKzg5LDYgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUhhbmRsZSogbV9qb2I7CiAKICAgICB2
b2lkIGdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCk7Ci0gICAgYm9vbCBs
b2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyKTsKICAgICBib29sIGxvYWRSZXNwb25zZUhlYWRlcnMoKTsKIAogICAgIGJvb2wgb3Bl
bkNvbnRlbnRGaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggMTZmZjE2ZjhjZDRjLi5mMzIz
YWYyNjQwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTEwMSw0MCArMTAxLDE2IEBAIHZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7Ci0gICAg
aW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwotCi0gICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4Rmls
ZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgaWYgKCFGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJD
YWNoZSBXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwgaW5kZXhGaWxlUGF0
aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBm
aWxlc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGluZGV4RmlsZVBhdGgpOwotICAgIGlmICgh
ZmlsZXNpemUpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90
IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsK
LSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGluZGV4RmlsZSk7CisgICAgU3RyaW5nIGlu
ZGV4RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpciwgImluZGV4LmRhdCJfcyk7CisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFk
RW50aXJlRmlsZShpbmRleEZpbGVQYXRoKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBM
T0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCAlc1xuIiwgaW5kZXhGaWxl
UGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
TG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVmZmVyCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZl
cjsKLSAgICBidWZmZXIucmVzaXplKCpmaWxlc2l6ZSk7Ci0gICAgaW50IGJ1ZmZlclBvc2l0aW9u
ID0gMDsKLSAgICBpbnQgYnVmZmVyUmVhZFNpemUgPSBJT19CVUZGRVJTSVpFOwotICAgIHdoaWxl
ICgqZmlsZXNpemUgPiBidWZmZXJQb3NpdGlvbikgewotICAgICAgICBpZiAoKmZpbGVzaXplIC0g
YnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKLSAgICAgICAgICAgIGJ1ZmZlclJlYWRT
aXplID0gKmZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6
cmVhZEZyb21GaWxlKGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBi
dWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXpl
OwotICAgIH0KLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKLQogICAgIC8v
IENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCi0gICAgU3RyaW5nIGhlYWRlckNvbnRlbnQgPSBT
dHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgYXV0byBoZWFkZXJDb250
ZW50ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpidWZmZXIpKTsKICAgICBWZWN0b3I8U3RyaW5n
PiBpbmRleFVSTHMgPSBoZWFkZXJDb250ZW50LnNwbGl0KCdcbicpOwotICAgIGJ1ZmZlci5jbGVh
cigpOwogCiAgICAgLy8gQWRkIGVudHJpZXMgdG8gaW5kZXgKICAgICBWZWN0b3I8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBpbmRleFVSTHMuYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDBkNDVhZDVlOTIzMC4uNzcwMzE0NTRh
ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAg
LTEwMjAsMzAgKzEwMjAsNiBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3IoQ1NT
VmFsdWVJRCBjc3NWYWx1ZUlkLCBPcHRpb25TZXQ8U3R5bGVDb2xvck9wdAogfQogCiAjaWYgRU5B
QkxFKFZJREVPKQotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0
b3I8dWludDhfdD4mIGJ1ZmZlcikKLXsKLSAgICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50
byBidWZmZXIKLSAgICBidWZmZXIucmVzaXplKGZpbGVzaXplICsgMSk7Ci0KLSAgICBpbnQgYnVm
ZmVyUG9zaXRpb24gPSAwOwotICAgIGludCBidWZmZXJSZWFkU2l6ZSA9IDQwOTY7Ci0gICAgaW50
IGJ5dGVzUmVhZCA9IDA7Ci0gICAgd2hpbGUgKGZpbGVzaXplID4gYnVmZmVyUG9zaXRpb24pIHsK
LSAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkK
LSAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsK
LQotICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwgYnVm
ZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7Ci0gICAgICAgIGlm
IChieXRlc1JlYWQgIT0gYnVmZmVyUmVhZFNpemUpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5jbGVh
cigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyUG9z
aXRpb24gKz0gYnVmZmVyUmVhZFNpemU7Ci0gICAgfQotCi0gICAgYnVmZmVyW2ZpbGVzaXplXSA9
IDA7Ci19Ci0KIFN0cmluZyBSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogI2lmIFVTRShDRikK
QEAgLTEwNTUsMjEgKzEwMzEsOSBAQCBTdHJpbmcgUmVuZGVyVGhlbWVXaW46OnN0cmluZ1dpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZwogICAgIGlmICgh
Q0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVkVVJMUmVmLmdldCgpLCBm
YWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIE1BWF9QQVRIKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcXVlc3RlZEZpbGVI
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShyZXF1ZXN0ZWRGaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQocmVxdWVzdGVkRmlsZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IGF1dG8gZmlsZXNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShyZXF1ZXN0ZWRGaWxlSGFuZGxl
KTsKLSAgICBpZiAoIWZpbGVzaXplKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShy
ZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLQot
ICAgIFZlY3Rvcjx1aW50OF90PiBmaWxlQ29udGVudHM7Ci0gICAgZmlsbEJ1ZmZlcldpdGhDb250
ZW50c09mRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCAqZmlsZXNpemUsIGZpbGVDb250ZW50cyk7
Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOworICAgIGF1
dG8gY29udGVudHMgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShyZXF1ZXN0ZWRGaWxlUGF0
aCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGZpbGVDb250ZW50cy5kYXRhKCksICpmaWxlc2l6ZSk7
CisgICAgcmV0dXJuIGNvbnRlbnRzID8gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpjb250ZW50cykp
IDogU3RyaW5nKCk7CiAjZWxzZQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmZjY2Zk
ZDM5MWU4Li5hYmI0YmFkNTBlZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgRG9uIE9sbXN0ZWFk
ICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGZ1bmN0
aW9uIHRvIHJlYWQgYSBmaWxlIGF0IGEgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBD
aHJpc3RlbnNlbi4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIHJlYWRFbnRpcmVGaWxlLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTEwICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBpZi1kb21haW4gYW5k
IHVubGVzcy1kb21haW4gY29udmVyc2lvbiB0byBXS0NvbnRlbnRSdWxlTGlzdCBwYXJzaW5nCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNi
MjlhZDk5MC4uZjMzMmQ3MmJhZDA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcApAQCAtODE5LDQgKzgxOSwxNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIHJlYWxQYXRoKQogICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHN1YkZvbGRlclBhdGgsIHsgIi4uIiwg
Ii4iLCAiLiIsICJzdWJmb2xkZXIiIH0pKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFN1YkZvbGRl
clBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIuLiIgYW5kICIuIgogfQog
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJlYWRFbnRpcmVGaWxlKQoreworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVG
aWxlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVu
dGlyZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0IikpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6cmVhZEVudGlyZUZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSkpOworCisgICAgYXV0byBi
dWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gU3RyaW5nOjphZG9wdChX
VEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7CisgICAgRVhQRUNUX1NUUkVRKGNvbnRlbnRzLnV0Zjgo
KS5kYXRhKCksIEZpbGVTeXN0ZW1UZXN0RGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>