<?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>227502</bug_id>
          
          <creation_ts>2021-06-29 13:32:34 -0700</creation_ts>
          <short_desc>[PlayStation] Don&apos;t assume 4KB block size when estimating Network Cache disk usage</short_desc>
          <delta_ts>2021-07-07 12:54:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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="Christopher Reid">chris.reid</reporter>
          <assigned_to name="Christopher Reid">chris.reid</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1773512</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-06-29 13:32:34 -0700</bug_when>
    <thetext>Disk usage estimations in Network Cache underestimate actual usage on platforms that aren&apos;t using 4KB file block size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773516</commentid>
    <comment_count>1</comment_count>
      <attachid>432518</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-06-29 13:42:55 -0700</bug_when>
    <thetext>Created attachment 432518
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773517</commentid>
    <comment_count>2</comment_count>
      <attachid>432519</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-06-29 13:47:27 -0700</bug_when>
    <thetext>Created attachment 432519
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773595</commentid>
    <comment_count>3</comment_count>
      <attachid>432545</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-06-29 15:46:04 -0700</bug_when>
    <thetext>Created attachment 432545
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773597</commentid>
    <comment_count>4</comment_count>
      <attachid>432546</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-06-29 15:47:13 -0700</bug_when>
    <thetext>Created attachment 432546
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773599</commentid>
    <comment_count>5</comment_count>
      <attachid>432545</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-29 15:53:26 -0700</bug_when>
    <thetext>Comment on attachment 432545
updated patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:714
&gt; +    return std::nullopt;

We should probably add a `notImplemented();` in here too (after providing a Posix implementation).

&gt; Source/WTF/wtf/playstation/FileSystemPlayStation.cpp:172
&gt; +std::optional getVolumeFileBlockSize(const String&amp; path)

Seems like we could use the exact same implementation in FileSystemPosix.cpp instead of returning std::nullopt?

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:315
&gt; +    static uint32_t cachedBlockSize;

I don&apos;t think this should be static given that the block size depends on the storage path. We should probably store the block size as a data member on NetworkCacheStorage instead.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:317
&gt; +        if (auto blockSize = FileSystem::getVolumeFileBlockSize(path))

Would probably look nicer if using value_or()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773604</commentid>
    <comment_count>6</comment_count>
      <attachid>432545</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-06-29 16:05:15 -0700</bug_when>
    <thetext>Comment on attachment 432545
updated patch

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

Just an idea for you cdumez on maybe simplifying this patch.

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:714
&gt;&gt; +    return std::nullopt;
&gt; 
&gt; We should probably add a `notImplemented();` in here too (after providing a Posix implementation).

The previous behavior was that it just guesstimated a 4KB block size. Should that just go here?

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:315
&gt;&gt; +    static uint32_t cachedBlockSize;
&gt; 
&gt; I don&apos;t think this should be static given that the block size depends on the storage path. We should probably store the block size as a data member on NetworkCacheStorage instead.

If `getVolumeFileBlockSize` just defaults to 4KBs then this function isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773606</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-29 16:10:00 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #6)
&gt; Comment on attachment 432545 [details]
&gt; updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432545&amp;action=review
&gt; 
&gt; Just an idea for you cdumez on maybe simplifying this patch.
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/FileSystem.cpp:714
&gt; &gt;&gt; +    return std::nullopt;
&gt; &gt; 
&gt; &gt; We should probably add a `notImplemented();` in here too (after providing a Posix implementation).
&gt; 
&gt; The previous behavior was that it just guesstimated a 4KB block size. Should
&gt; that just go here?
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:315
&gt; &gt;&gt; +    static uint32_t cachedBlockSize;
&gt; &gt; 
&gt; &gt; I don&apos;t think this should be static given that the block size depends on the storage path. We should probably store the block size as a data member on NetworkCacheStorage instead.
&gt; 
&gt; If `getVolumeFileBlockSize` just defaults to 4KBs then this function isn&apos;t
&gt; needed.

Since you&apos;re adding a POSIX-compliant implementation, I&apos;d rather we use it on all POSIX compliant systems, rather than just PlayStation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774189</commentid>
    <comment_count>8</comment_count>
      <attachid>432712</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-07-01 11:49:28 -0700</bug_when>
    <thetext>Created attachment 432712
Fixing review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774192</commentid>
    <comment_count>9</comment_count>
      <attachid>432545</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-07-01 11:52:27 -0700</bug_when>
    <thetext>Comment on attachment 432545
updated patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/FileSystem.cpp:714
&gt;&gt;&gt;&gt; +    return std::nullopt;
&gt;&gt;&gt; 
&gt;&gt;&gt; We should probably add a `notImplemented();` in here too (after providing a Posix implementation).
&gt;&gt; 
&gt;&gt; The previous behavior was that it just guesstimated a 4KB block size. Should that just go here?
&gt; 
&gt; Since you&apos;re adding a POSIX-compliant implementation, I&apos;d rather we use it on all POSIX compliant systems, rather than just PlayStation.

I wasn&apos;t able to use notImplemented here since it&apos;s currently in WebCore

&gt;&gt; Source/WTF/wtf/playstation/FileSystemPlayStation.cpp:172
&gt;&gt; +std::optional getVolumeFileBlockSize(const String&amp; path)
&gt; 
&gt; Seems like we could use the exact same implementation in FileSystemPosix.cpp instead of returning std::nullopt?

Because of internal reasons playstation isn&apos;t completely POSIX compliant here since we currently need to use f_bsize instead of f_frsize. I added a posix implementation using f_frsize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774193</commentid>
    <comment_count>10</comment_count>
      <attachid>432712</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-01 11:55:05 -0700</bug_when>
    <thetext>Comment on attachment 432712
Fixing review comments

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

r=me with comments.

&gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:187
&gt; +#if !PLATFORM(PLAYSTATION)

Why is this needed? I would think that either:
1. The Playstation port doesn&apos;t build this file, in which case we don&apos;t need this #if !PLATFORM(PLAYSTATION)
or
2. The Playstation port builds this file, in which case we don&apos;t this this #if or the duplicate implementation in FileSystemPlayStation.cpp.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:270
&gt; +    , m_volumeBlockSize(FileSystem::getVolumeFileBlockSize(baseDirectoryPath).value_or(4 * KB))

r- for this. This does a filesystem operation on the *main* thread, which is never OK. You need to call this on the background thread.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:165
&gt; +    size_t estimateRecordsSize(unsigned, unsigned);

Please don&apos;t omit the parameter names as they are not obvious.

Also, this function can probably be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774194</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-01 11:55:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Comment on attachment 432712 [details]
&gt; Fixing review comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432712&amp;action=review
&gt; 
&gt; r=me with comments.

Oops, I meant r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774199</commentid>
    <comment_count>12</comment_count>
      <attachid>432712</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-01 12:03:20 -0700</bug_when>
    <thetext>Comment on attachment 432712
Fixing review comments

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

&gt;&gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:187
&gt;&gt; +#if !PLATFORM(PLAYSTATION)
&gt; 
&gt; Why is this needed? I would think that either:
&gt; 1. The Playstation port doesn&apos;t build this file, in which case we don&apos;t need this #if !PLATFORM(PLAYSTATION)
&gt; or
&gt; 2. The Playstation port builds this file, in which case we don&apos;t this this #if or the duplicate implementation in FileSystemPlayStation.cpp.

I missed that the 2 implementations are slightly different. I am still curious if the Playstation port really builds the FileSystemPOSIX.cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774201</commentid>
    <comment_count>13</comment_count>
      <attachid>432712</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-07-01 12:04:29 -0700</bug_when>
    <thetext>Comment on attachment 432712
Fixing review comments

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

&gt;&gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:187
&gt;&gt; +#if !PLATFORM(PLAYSTATION)
&gt; 
&gt; Why is this needed? I would think that either:
&gt; 1. The Playstation port doesn&apos;t build this file, in which case we don&apos;t need this #if !PLATFORM(PLAYSTATION)
&gt; or
&gt; 2. The Playstation port builds this file, in which case we don&apos;t this this #if or the duplicate implementation in FileSystemPlayStation.cpp.

I think you got to my patch before my other comment.
PlayStation does include FileSystemPOSIX but our platform isn&apos;t completely POSIX compliant here and we currently need to use f_bsize instead of f_frsize with statvfs.

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:270
&gt;&gt; +    , m_volumeBlockSize(FileSystem::getVolumeFileBlockSize(baseDirectoryPath).value_or(4 * KB))
&gt; 
&gt; r- for this. This does a filesystem operation on the *main* thread, which is never OK. You need to call this on the background thread.

I&apos;ll take it off the main thread.

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:165
&gt;&gt; +    size_t estimateRecordsSize(unsigned, unsigned);
&gt; 
&gt; Please don&apos;t omit the parameter names as they are not obvious.
&gt; 
&gt; Also, this function can probably be const.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774701</commentid>
    <comment_count>14</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-07-03 19:47:13 -0700</bug_when>
    <thetext>&gt; PlayStation does include FileSystemPOSIX but our platform isn&apos;t completely POSIX compliant here and we currently need to use f_bsize instead of f_frsize with statvfs.


I think we can easily make PlayStation&apos;s f_frsize POSIX-compliant so we can use FileSystemPOSIX&apos;s impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775062</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-06 13:33:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/80228379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775140</commentid>
    <comment_count>16</comment_count>
      <attachid>432988</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-07-06 16:44:37 -0700</bug_when>
    <thetext>Created attachment 432988
patch

Fixing review comments.

Switched playstation implementation to the POSIX one since we can make our version compliant.

I also added a windows implementation to get the block size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775142</commentid>
    <comment_count>17</comment_count>
      <attachid>432988</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-06 16:53:41 -0700</bug_when>
    <thetext>Comment on attachment 432988
patch

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

&gt; Source/WTF/wtf/FileSystem.h:125
&gt; +WTF_EXPORT_PRIVATE std::optional&lt;uint32_t&gt; getVolumeFileBlockSize(const String&amp;);

Should not have &quot;get&quot; In the name, to match WebKit coding style, even though some existing functions do.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:166
&gt; +    uint32_t getVolumeBlockSize();

Should not have &quot;get&quot; In the name, to match WebKit coding style, even though some existing functions do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775155</commentid>
    <comment_count>18</comment_count>
      <attachid>432988</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-06 17:49:50 -0700</bug_when>
    <thetext>Comment on attachment 432988
patch

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

&gt;&gt; Source/WTF/wtf/FileSystem.h:125
&gt;&gt; +WTF_EXPORT_PRIVATE std::optional&lt;uint32_t&gt; getVolumeFileBlockSize(const String&amp;);
&gt; 
&gt; Should not have &quot;get&quot; In the name, to match WebKit coding style, even though some existing functions do.

I think the guildline rules getters, but not free functions. It should add a new rule for free functions.

https://webkit.org/code-style-guidelines/#names-setter-getter
https://webkit.org/code-style-guidelines/#names-out-argument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775335</commentid>
    <comment_count>19</comment_count>
      <attachid>433047</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-07-07 10:56:46 -0700</bug_when>
    <thetext>Created attachment 433047
Patch

Removing &quot;get&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775337</commentid>
    <comment_count>20</comment_count>
      <attachid>433047</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-07 10:59:53 -0700</bug_when>
    <thetext>Comment on attachment 433047
Patch

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

r=me with nits.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:166
&gt; +    uint32_t volumeBlockSize();

nit: I would mark this as const.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:176
&gt; +    uint32_t m_volumeBlockSize { 0 };

nit: I would mark this as mutable since it is computed lazily in the getter. Also, I&apos;d using an std::optional&lt;&gt; instead of a magic value of 0 when unknown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775341</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-07 11:08:52 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #18)
&gt; I think the guildline rules getters, but not free functions.

Good point about how the guideline is written.

The intention was to apply the rule to all functions, but the guidelines are not written that way. I agree that we should revise the guidelines at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775343</commentid>
    <comment_count>22</comment_count>
      <attachid>433047</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-07 11:09:44 -0700</bug_when>
    <thetext>Comment on attachment 433047
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:165
&gt; +    size_t estimateRecordsSize(unsigned recordCount, unsigned blobCount);

I agree with Chris’s comment about marking volumeBlockSize const, and I suggest also marking this const for the same reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775376</commentid>
    <comment_count>23</comment_count>
      <attachid>433056</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2021-07-07 11:57:47 -0700</bug_when>
    <thetext>Created attachment 433056
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775406</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-07 12:54:13 -0700</bug_when>
    <thetext>Committed r279660 (239473@main): &lt;https://commits.webkit.org/239473@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433056.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432518</attachid>
            <date>2021-06-29 13:42:55 -0700</date>
            <delta_ts>2021-06-29 13:47:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch2.diff</filename>
            <type>text/plain</type>
            <size>5587</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li4xNTc2Mjg0YjA3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBQbGF5U3RhdGlvbi4KKworICAgICAgICAqIHd0Zi9GaWxlU3lz
dGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHd0Zi9wbGF5
c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorCiAyMDIxLTA2LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgUHJvYmFiaWxpc3Rp
YyBHdWFyZCBNYWxsb2MgZm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVhdHVyZSB2ZWN0b3JzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IGQ3MGRjZGQ2MTgzZi4uY2Q2ODlmNGUxNGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmNwcApAQCAtNzA4LDYgKzcwOCwxMyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZmlsZU5hbWVzOwogfQogCisjaWYg
IVBMQVRGT1JNKFBMQVlTVEFUSU9OKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ2V0Vm9sdW1l
RmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisjZW5kaWYKKwogI2lmICFFTkFCTEUoRklMRVNZU1RFTV9QT1NJWF9GQVNUX1BBVEgpCiAK
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXgg
N2NlYTcwYTNmNDU4Li41ZjJkNWIxYjEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyMiw2ICsx
MjIsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNv
bnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hp
dmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bs
YXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1Li42
ZmJiZmE4ZGQ5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmls
ZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtMTY5LDYgKzE2OSwxNSBAQCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWwgZ2V0Vm9sdW1lRmlsZUJsb2NrU2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN0YXQ7Cisg
ICAgaWYgKCFzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZm
aWxlU3RhdCkpIHsKKyAgICAgICAgcmV0dXJuIGZpbGVTdGF0LmZfYnNpemU7CisgICAgfQorICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0
IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQogewog
ICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRh
cmdldFBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMjM3OWM1ZmZlZjQuLjQ2ODk3NjhlODM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNi0yOSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlz
LnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgW1BsYXlTdGF0aW9uXSBEb24ndCBhc3N1bWUgNEtC
IGJsb2NrIHNpemUgd2hlbiBlc3RpbWF0aW5nIE5ldHdvcmsgQ2FjaGUgZGlzayB1c2FnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV0d29yayBDYWNo
ZSBkaXNrIHVzYWdlIGNhbiB1bmRlcmVzdGltYXRlIHRoZSByZWFsIGRpc2sgdXNhZ2Ugb24gcGxh
dGZvcm1zIAorICAgICAgICB3aXRoIGZpbGUgYmxvY2tzIGxhcmdlciB0aGFuIDQgS0IuCisgICAg
ICAgIEFkZGluZyBjYWxsIHRvIEZpbGVTeXN0ZW06OmdldFZvbHVtZUZpbGVCbG9ja1NpemUgdG8g
dXNlIHRoZSBGaWxlU3lzdGVtJ3MKKyAgICAgICAgYmxvY2sgc2l6ZSBpbiB0aGUgZXN0aW1hdGlv
bi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aDoKKwogMjAyMS0wNi0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBMb2FkaW5nIFdlYk0gaGFuZ3MgaWYgc2VydmVyIHNlbmRzIG9ubHkgc21hbGwgYW1vdW50
IG9mIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQ2ZTU5NTIyOWNkOC4uOTMwNWVmNzEz
NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTMxMCwxMCArMzEwLDIyIEBAIHNpemVfdCBT
dG9yYWdlOjphcHByb3hpbWF0ZVNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2FwcHJveGltYXRl
UmVjb3Jkc1NpemUgKyBtX2Jsb2JTdG9yYWdlLmFwcHJveGltYXRlU2l6ZSgpOwogfQogCi1zdGF0
aWMgc2l6ZV90IGVzdGltYXRlUmVjb3Jkc1NpemUodW5zaWduZWQgcmVjb3JkQ291bnQsIHVuc2ln
bmVkIGJsb2JDb3VudCkKK3N0YXRpYyB1aW50MzJfdCBmaWxlU3lzdGVtQmxvY2tTaXplKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGF0aWMgdWludDMyX3QgY2FjaGVkQmxvY2tTaXplOwor
ICAgIGlmICghY2FjaGVkQmxvY2tTaXplKSB7CisgICAgICAgIGlmIChhdXRvIGJsb2NrU2l6ZSA9
IEZpbGVTeXN0ZW06OmdldFZvbHVtZUZpbGVCbG9ja1NpemUocGF0aCkpCisgICAgICAgICAgICBj
YWNoZWRCbG9ja1NpemUgPSAqYmxvY2tTaXplOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
YWNoZWRCbG9ja1NpemUgPSA0ICogS0I7CisgICAgfQorICAgIHJldHVybiBjYWNoZWRCbG9ja1Np
emU7Cit9CisKK3NpemVfdCBTdG9yYWdlOjplc3RpbWF0ZVJlY29yZHNTaXplKHVuc2lnbmVkIHJl
Y29yZENvdW50LCB1bnNpZ25lZCBibG9iQ291bnQpCiB7CiAgICAgYXV0byBpbmxpbmVCb2R5Q291
bnQgPSByZWNvcmRDb3VudCAtIHN0ZDo6bWluKGJsb2JDb3VudCwgcmVjb3JkQ291bnQpOwotICAg
IGF1dG8gaGVhZGVyU2l6ZXMgPSByZWNvcmRDb3VudCAqIDQwOTY7CisgICAgYXV0byBoZWFkZXJT
aXplcyA9IHJlY29yZENvdW50ICogZmlsZVN5c3RlbUJsb2NrU2l6ZShtX2Jhc2VQYXRoKTsKICAg
ICBhdXRvIGlubGluZUJvZHlTaXplcyA9IChtYXhpbXVtSW5saW5lQm9keVNpemUoKSAvIDIpICog
aW5saW5lQm9keUNvdW50OwogICAgIHJldHVybiBoZWFkZXJTaXplcyArIGlubGluZUJvZHlTaXpl
czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgKaW5kZXggYWU4ZGVlYzZmY2UyLi4xZjkxMjcwNmZkZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5oCkBAIC0xNjIsNiArMTYyLDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyBib29sIGlzSGlnaGVyUHJpb3JpdHkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRp
b24+JiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRpb24+Jik7CiAKKyAgICBzaXpl
X3QgZXN0aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCwgdW5zaWduZWQpOworCiAgICAgY29uc3Qg
U3RyaW5nIG1fYmFzZVBhdGg7CiAgICAgY29uc3QgU3RyaW5nIG1fcmVjb3Jkc1BhdGg7CiAgICAg
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432519</attachid>
            <date>2021-06-29 13:47:27 -0700</date>
            <delta_ts>2021-06-29 15:46:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch2.diff</filename>
            <type>text/plain</type>
            <size>5580</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li4xNTc2Mjg0YjA3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBQbGF5U3RhdGlvbi4KKworICAgICAgICAqIHd0Zi9GaWxlU3lz
dGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHd0Zi9wbGF5
c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorCiAyMDIxLTA2LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgUHJvYmFiaWxpc3Rp
YyBHdWFyZCBNYWxsb2MgZm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVhdHVyZSB2ZWN0b3JzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IGQ3MGRjZGQ2MTgzZi4uY2Q2ODlmNGUxNGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmNwcApAQCAtNzA4LDYgKzcwOCwxMyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZmlsZU5hbWVzOwogfQogCisjaWYg
IVBMQVRGT1JNKFBMQVlTVEFUSU9OKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ2V0Vm9sdW1l
RmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisjZW5kaWYKKwogI2lmICFFTkFCTEUoRklMRVNZU1RFTV9QT1NJWF9GQVNUX1BBVEgpCiAK
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXgg
N2NlYTcwYTNmNDU4Li41ZjJkNWIxYjEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyMiw2ICsx
MjIsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNv
bnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hp
dmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bs
YXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1Li44
MjNjMjdiNGJmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmls
ZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtMTY5LDYgKzE2OSwxNSBAQCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWwgZ2V0Vm9sdW1lRmlsZUJsb2NrU2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN0YXQ7Cisg
ICAgaWYgKCFzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZm
aWxlU3RhdCkpCisgICAgICAgIHJldHVybiBmaWxlU3RhdC5mX2JzaXplOworCisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKwogYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5n
JiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCiB7CiAgICAgQ1N0
cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDEyMzc5YzVmZmVmNC4uNDY4OTc2OGU4MzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTA2LTI5ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBz
b255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIERvbid0IGFzc3VtZSA0S0IgYmxvY2sg
c2l6ZSB3aGVuIGVzdGltYXRpbmcgTmV0d29yayBDYWNoZSBkaXNrIHVzYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXR3b3JrIENhY2hlIGRpc2sg
dXNhZ2UgY2FuIHVuZGVyZXN0aW1hdGUgdGhlIHJlYWwgZGlzayB1c2FnZSBvbiBwbGF0Zm9ybXMg
CisgICAgICAgIHdpdGggZmlsZSBibG9ja3MgbGFyZ2VyIHRoYW4gNCBLQi4KKyAgICAgICAgQWRk
aW5nIGNhbGwgdG8gRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZSB0byB1c2UgdGhl
IEZpbGVTeXN0ZW0ncworICAgICAgICBibG9jayBzaXplIGluIHRoZSBlc3RpbWF0aW9uLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAy
MDIxLTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIExv
YWRpbmcgV2ViTSBoYW5ncyBpZiBzZXJ2ZXIgc2VuZHMgb25seSBzbWFsbCBhbW91bnQgb2YgZGF0
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDZlNTk1MjI5Y2Q4Li45MzA1ZWY3MTM3MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzEwLDEwICszMTAsMjIgQEAgc2l6ZV90IFN0b3JhZ2U6
OmFwcHJveGltYXRlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXBwcm94aW1hdGVSZWNvcmRz
U2l6ZSArIG1fYmxvYlN0b3JhZ2UuYXBwcm94aW1hdGVTaXplKCk7CiB9CiAKLXN0YXRpYyBzaXpl
X3QgZXN0aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWduZWQgYmxv
YkNvdW50KQorc3RhdGljIHVpbnQzMl90IGZpbGVTeXN0ZW1CbG9ja1NpemUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIHN0YXRpYyB1aW50MzJfdCBjYWNoZWRCbG9ja1NpemU7CisgICAgaWYg
KCFjYWNoZWRCbG9ja1NpemUpIHsKKyAgICAgICAgaWYgKGF1dG8gYmxvY2tTaXplID0gRmlsZVN5
c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZShwYXRoKSkKKyAgICAgICAgICAgIGNhY2hlZEJs
b2NrU2l6ZSA9ICpibG9ja1NpemU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhY2hlZEJs
b2NrU2l6ZSA9IDQgKiBLQjsKKyAgICB9CisgICAgcmV0dXJuIGNhY2hlZEJsb2NrU2l6ZTsKK30K
Kworc2l6ZV90IFN0b3JhZ2U6OmVzdGltYXRlUmVjb3Jkc1NpemUodW5zaWduZWQgcmVjb3JkQ291
bnQsIHVuc2lnbmVkIGJsb2JDb3VudCkKIHsKICAgICBhdXRvIGlubGluZUJvZHlDb3VudCA9IHJl
Y29yZENvdW50IC0gc3RkOjptaW4oYmxvYkNvdW50LCByZWNvcmRDb3VudCk7Ci0gICAgYXV0byBo
ZWFkZXJTaXplcyA9IHJlY29yZENvdW50ICogNDA5NjsKKyAgICBhdXRvIGhlYWRlclNpemVzID0g
cmVjb3JkQ291bnQgKiBmaWxlU3lzdGVtQmxvY2tTaXplKG1fYmFzZVBhdGgpOwogICAgIGF1dG8g
aW5saW5lQm9keVNpemVzID0gKG1heGltdW1JbmxpbmVCb2R5U2l6ZSgpIC8gMikgKiBpbmxpbmVC
b2R5Q291bnQ7CiAgICAgcmV0dXJuIGhlYWRlclNpemVzICsgaW5saW5lQm9keVNpemVzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAppbmRleCBhZThkZWVjNmZjZTIuLjFmOTEyNzA2ZmRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgKQEAgLTE2Miw2ICsxNjIsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wg
aXNIaWdoZXJQcmlvcml0eShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4mLCBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4mKTsKIAorICAgIHNpemVfdCBlc3Rp
bWF0ZVJlY29yZHNTaXplKHVuc2lnbmVkLCB1bnNpZ25lZCk7CisKICAgICBjb25zdCBTdHJpbmcg
bV9iYXNlUGF0aDsKICAgICBjb25zdCBTdHJpbmcgbV9yZWNvcmRzUGF0aDsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432545</attachid>
            <date>2021-06-29 15:46:04 -0700</date>
            <delta_ts>2021-07-01 11:49:28 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>patch2.diff</filename>
            <type>text/plain</type>
            <size>5580</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li4xNTc2Mjg0YjA3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBQbGF5U3RhdGlvbi4KKworICAgICAgICAqIHd0Zi9GaWxlU3lz
dGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHd0Zi9wbGF5
c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorCiAyMDIxLTA2LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgUHJvYmFiaWxpc3Rp
YyBHdWFyZCBNYWxsb2MgZm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVhdHVyZSB2ZWN0b3JzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IGQ3MGRjZGQ2MTgzZi4uY2Q2ODlmNGUxNGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmNwcApAQCAtNzA4LDYgKzcwOCwxMyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZmlsZU5hbWVzOwogfQogCisjaWYg
IVBMQVRGT1JNKFBMQVlTVEFUSU9OKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ2V0Vm9sdW1l
RmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisjZW5kaWYKKwogI2lmICFFTkFCTEUoRklMRVNZU1RFTV9QT1NJWF9GQVNUX1BBVEgpCiAK
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXgg
N2NlYTcwYTNmNDU4Li41ZjJkNWIxYjEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyMiw2ICsx
MjIsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNv
bnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hp
dmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bs
YXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1Li44
MjNjMjdiNGJmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmls
ZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtMTY5LDYgKzE2OSwxNSBAQCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWwgZ2V0Vm9sdW1lRmlsZUJsb2NrU2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN0YXQ7Cisg
ICAgaWYgKCFzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZm
aWxlU3RhdCkpCisgICAgICAgIHJldHVybiBmaWxlU3RhdC5mX2JzaXplOworCisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKwogYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5n
JiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCiB7CiAgICAgQ1N0
cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDEyMzc5YzVmZmVmNC4uNDY4OTc2OGU4MzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTA2LTI5ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBz
b255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIERvbid0IGFzc3VtZSA0S0IgYmxvY2sg
c2l6ZSB3aGVuIGVzdGltYXRpbmcgTmV0d29yayBDYWNoZSBkaXNrIHVzYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXR3b3JrIENhY2hlIGRpc2sg
dXNhZ2UgY2FuIHVuZGVyZXN0aW1hdGUgdGhlIHJlYWwgZGlzayB1c2FnZSBvbiBwbGF0Zm9ybXMg
CisgICAgICAgIHdpdGggZmlsZSBibG9ja3MgbGFyZ2VyIHRoYW4gNCBLQi4KKyAgICAgICAgQWRk
aW5nIGNhbGwgdG8gRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZSB0byB1c2UgdGhl
IEZpbGVTeXN0ZW0ncworICAgICAgICBibG9jayBzaXplIGluIHRoZSBlc3RpbWF0aW9uLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAy
MDIxLTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIExv
YWRpbmcgV2ViTSBoYW5ncyBpZiBzZXJ2ZXIgc2VuZHMgb25seSBzbWFsbCBhbW91bnQgb2YgZGF0
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDZlNTk1MjI5Y2Q4Li45MzA1ZWY3MTM3MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzEwLDEwICszMTAsMjIgQEAgc2l6ZV90IFN0b3JhZ2U6
OmFwcHJveGltYXRlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXBwcm94aW1hdGVSZWNvcmRz
U2l6ZSArIG1fYmxvYlN0b3JhZ2UuYXBwcm94aW1hdGVTaXplKCk7CiB9CiAKLXN0YXRpYyBzaXpl
X3QgZXN0aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWduZWQgYmxv
YkNvdW50KQorc3RhdGljIHVpbnQzMl90IGZpbGVTeXN0ZW1CbG9ja1NpemUoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIHN0YXRpYyB1aW50MzJfdCBjYWNoZWRCbG9ja1NpemU7CisgICAgaWYg
KCFjYWNoZWRCbG9ja1NpemUpIHsKKyAgICAgICAgaWYgKGF1dG8gYmxvY2tTaXplID0gRmlsZVN5
c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZShwYXRoKSkKKyAgICAgICAgICAgIGNhY2hlZEJs
b2NrU2l6ZSA9ICpibG9ja1NpemU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhY2hlZEJs
b2NrU2l6ZSA9IDQgKiBLQjsKKyAgICB9CisgICAgcmV0dXJuIGNhY2hlZEJsb2NrU2l6ZTsKK30K
Kworc2l6ZV90IFN0b3JhZ2U6OmVzdGltYXRlUmVjb3Jkc1NpemUodW5zaWduZWQgcmVjb3JkQ291
bnQsIHVuc2lnbmVkIGJsb2JDb3VudCkKIHsKICAgICBhdXRvIGlubGluZUJvZHlDb3VudCA9IHJl
Y29yZENvdW50IC0gc3RkOjptaW4oYmxvYkNvdW50LCByZWNvcmRDb3VudCk7Ci0gICAgYXV0byBo
ZWFkZXJTaXplcyA9IHJlY29yZENvdW50ICogNDA5NjsKKyAgICBhdXRvIGhlYWRlclNpemVzID0g
cmVjb3JkQ291bnQgKiBmaWxlU3lzdGVtQmxvY2tTaXplKG1fYmFzZVBhdGgpOwogICAgIGF1dG8g
aW5saW5lQm9keVNpemVzID0gKG1heGltdW1JbmxpbmVCb2R5U2l6ZSgpIC8gMikgKiBpbmxpbmVC
b2R5Q291bnQ7CiAgICAgcmV0dXJuIGhlYWRlclNpemVzICsgaW5saW5lQm9keVNpemVzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAppbmRleCBhZThkZWVjNmZjZTIuLjFmOTEyNzA2ZmRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgKQEAgLTE2Miw2ICsxNjIsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wg
aXNIaWdoZXJQcmlvcml0eShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4mLCBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4mKTsKIAorICAgIHNpemVfdCBlc3Rp
bWF0ZVJlY29yZHNTaXplKHVuc2lnbmVkLCB1bnNpZ25lZCk7CisKICAgICBjb25zdCBTdHJpbmcg
bV9iYXNlUGF0aDsKICAgICBjb25zdCBTdHJpbmcgbV9yZWNvcmRzUGF0aDsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432546</attachid>
            <date>2021-06-29 15:47:13 -0700</date>
            <delta_ts>2021-07-01 11:49:28 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>patch2.diff</filename>
            <type>text/plain</type>
            <size>5590</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li4xNTc2Mjg0YjA3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBQbGF5U3RhdGlvbi4KKworICAgICAgICAqIHd0Zi9GaWxlU3lz
dGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHd0Zi9wbGF5
c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorCiAyMDIxLTA2LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgUHJvYmFiaWxpc3Rp
YyBHdWFyZCBNYWxsb2MgZm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVhdHVyZSB2ZWN0b3JzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IGQ3MGRjZGQ2MTgzZi4uY2Q2ODlmNGUxNGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmNwcApAQCAtNzA4LDYgKzcwOCwxMyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZmlsZU5hbWVzOwogfQogCisjaWYg
IVBMQVRGT1JNKFBMQVlTVEFUSU9OKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ2V0Vm9sdW1l
RmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisjZW5kaWYKKwogI2lmICFFTkFCTEUoRklMRVNZU1RFTV9QT1NJWF9GQVNUX1BBVEgpCiAK
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXgg
N2NlYTcwYTNmNDU4Li41ZjJkNWIxYjEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyMiw2ICsx
MjIsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNv
bnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hp
dmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bs
YXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1Li5m
MDliYTJmNjE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmls
ZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtMTY5LDYgKzE2OSwxNSBAQCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGdldFZvbHVtZUZp
bGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0cnVjdCBzdGF0dmZzIGZp
bGVTdGF0OworICAgIGlmICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpLCAmZmlsZVN0YXQpKQorICAgICAgICByZXR1cm4gZmlsZVN0YXQuZl9ic2l6ZTsKKwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNv
bnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQog
ewogICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHRhcmdldFBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMjM3OWM1ZmZlZjQuLjQ2ODk3NjhlODM3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNi0yOSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNo
cmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgW1BsYXlTdGF0aW9uXSBEb24ndCBhc3N1bWUg
NEtCIGJsb2NrIHNpemUgd2hlbiBlc3RpbWF0aW5nIE5ldHdvcmsgQ2FjaGUgZGlzayB1c2FnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV0d29yayBD
YWNoZSBkaXNrIHVzYWdlIGNhbiB1bmRlcmVzdGltYXRlIHRoZSByZWFsIGRpc2sgdXNhZ2Ugb24g
cGxhdGZvcm1zIAorICAgICAgICB3aXRoIGZpbGUgYmxvY2tzIGxhcmdlciB0aGFuIDQgS0IuCisg
ICAgICAgIEFkZGluZyBjYWxsIHRvIEZpbGVTeXN0ZW06OmdldFZvbHVtZUZpbGVCbG9ja1NpemUg
dG8gdXNlIHRoZSBGaWxlU3lzdGVtJ3MKKyAgICAgICAgYmxvY2sgc2l6ZSBpbiB0aGUgZXN0aW1h
dGlvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuaDoKKwogMjAyMS0wNi0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBMb2FkaW5nIFdlYk0gaGFuZ3MgaWYgc2VydmVyIHNlbmRzIG9ubHkgc21hbGwgYW1v
dW50IG9mIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQ2ZTU5NTIyOWNkOC4uOTMwNWVm
NzEzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTMxMCwxMCArMzEwLDIyIEBAIHNpemVf
dCBTdG9yYWdlOjphcHByb3hpbWF0ZVNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2FwcHJveGlt
YXRlUmVjb3Jkc1NpemUgKyBtX2Jsb2JTdG9yYWdlLmFwcHJveGltYXRlU2l6ZSgpOwogfQogCi1z
dGF0aWMgc2l6ZV90IGVzdGltYXRlUmVjb3Jkc1NpemUodW5zaWduZWQgcmVjb3JkQ291bnQsIHVu
c2lnbmVkIGJsb2JDb3VudCkKK3N0YXRpYyB1aW50MzJfdCBmaWxlU3lzdGVtQmxvY2tTaXplKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzdGF0aWMgdWludDMyX3QgY2FjaGVkQmxvY2tTaXpl
OworICAgIGlmICghY2FjaGVkQmxvY2tTaXplKSB7CisgICAgICAgIGlmIChhdXRvIGJsb2NrU2l6
ZSA9IEZpbGVTeXN0ZW06OmdldFZvbHVtZUZpbGVCbG9ja1NpemUocGF0aCkpCisgICAgICAgICAg
ICBjYWNoZWRCbG9ja1NpemUgPSAqYmxvY2tTaXplOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjYWNoZWRCbG9ja1NpemUgPSA0ICogS0I7CisgICAgfQorICAgIHJldHVybiBjYWNoZWRCbG9j
a1NpemU7Cit9CisKK3NpemVfdCBTdG9yYWdlOjplc3RpbWF0ZVJlY29yZHNTaXplKHVuc2lnbmVk
IHJlY29yZENvdW50LCB1bnNpZ25lZCBibG9iQ291bnQpCiB7CiAgICAgYXV0byBpbmxpbmVCb2R5
Q291bnQgPSByZWNvcmRDb3VudCAtIHN0ZDo6bWluKGJsb2JDb3VudCwgcmVjb3JkQ291bnQpOwot
ICAgIGF1dG8gaGVhZGVyU2l6ZXMgPSByZWNvcmRDb3VudCAqIDQwOTY7CisgICAgYXV0byBoZWFk
ZXJTaXplcyA9IHJlY29yZENvdW50ICogZmlsZVN5c3RlbUJsb2NrU2l6ZShtX2Jhc2VQYXRoKTsK
ICAgICBhdXRvIGlubGluZUJvZHlTaXplcyA9IChtYXhpbXVtSW5saW5lQm9keVNpemUoKSAvIDIp
ICogaW5saW5lQm9keUNvdW50OwogICAgIHJldHVybiBoZWFkZXJTaXplcyArIGlubGluZUJvZHlT
aXplczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKaW5kZXggYWU4ZGVlYzZmY2UyLi4xZjkxMjcwNmZkZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0xNjIsNiArMTYyLDggQEAgcHJpdmF0ZToKIAogICAgIHN0
YXRpYyBib29sIGlzSGlnaGVyUHJpb3JpdHkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVy
YXRpb24+JiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRpb24+Jik7CiAKKyAgICBz
aXplX3QgZXN0aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCwgdW5zaWduZWQpOworCiAgICAgY29u
c3QgU3RyaW5nIG1fYmFzZVBhdGg7CiAgICAgY29uc3QgU3RyaW5nIG1fcmVjb3Jkc1BhdGg7CiAg
ICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432712</attachid>
            <date>2021-07-01 11:49:28 -0700</date>
            <delta_ts>2021-07-06 16:45:01 -0700</delta_ts>
            <desc>Fixing review comments</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7319</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li4xMGY3OWJlMzA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBQbGF5U3RhdGlvbiBhbmQgUE9TSVggZmlsZXN5c3RlbXMuCisK
KyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0u
aDoKKyAgICAgICAgKiB3dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoK
KwogMjAyMS0wNi0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5hYmxlIFByb2JhYmlsaXN0aWMgR3VhcmQgTWFsbG9jIGZvciBSdWxlRGF0YSBhbmQgUnVs
ZUZlYXR1cmUgdmVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDdjZWE3MGEzZjQ1OC4uNWYyZDVi
MWIxMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ2V0
Vm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0
YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggNzVlNjlm
NDFmODg1Li42YThmZjdmOTdiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCkBAIC0yNDYsNiArMjQ2LDExIEBAIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURl
dmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKICAgICByZXR1cm4gZ19maWxlX2luZm9fZ2V0
X2F0dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9E
RVZJQ0UpOwogfQogCitzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1bWVGaWxlQmxvY2tT
aXplKGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogI2lm
IFVTRShGSUxFX0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1
ZTE2MzI1Li5mMDliYTJmNjE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0
aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtMTY5LDYgKzE2OSwxNSBAQCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGdl
dFZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0cnVjdCBz
dGF0dmZzIGZpbGVTdGF0OworICAgIGlmICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpLCAmZmlsZVN0YXQpKQorICAgICAgICByZXR1cm4gZmlsZVN0YXQuZl9i
c2l6ZTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIGJvb2wgY3JlYXRlU3ltYm9s
aWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xp
bmtQYXRoKQogewogICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHRhcmdldFBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKaW5kZXggN2JkMjk3NzMyNDFmLi5mZGM3MGU1YjE3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg0LDYgKzE4NCwxNyBAQCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRp
ZgogfQogCisjaWYgIVBMQVRGT1JNKFBMQVlTVEFUSU9OKQorc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gZ2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc3Ry
dWN0IHN0YXR2ZnMgZmlsZVN0YXQ7CisgICAgaWYgKCFzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3RhdCkpCisgICAgICAgIHJldHVybiBmaWxlU3Rh
dC5mX2Zyc2l6ZTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisjZW5kaWYKKwogI2lm
ICFVU0UoQ0YpCiBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKiBwYXRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDQ3
ZTIxZWJjN2U0ZC4uMjgyZWFjYmI5NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC0zNjMsNiArMzYzLDExIEBAIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
KQogICAgIH0pOwogfQogCitzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1bWVGaWxlQmxv
Y2tTaXplKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
fQorCiBNYXBwZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKCkKIHsKICAgICBpZiAobV9maWxl
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMTIzNzljNWZmZWY0Li40Njg5NzY4ZTgzNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlk
QHNvbnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9j
ayBzaXplIHdoZW4gZXN0aW1hdGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldHdvcmsgQ2FjaGUgZGlz
ayB1c2FnZSBjYW4gdW5kZXJlc3RpbWF0ZSB0aGUgcmVhbCBkaXNrIHVzYWdlIG9uIHBsYXRmb3Jt
cyAKKyAgICAgICAgd2l0aCBmaWxlIGJsb2NrcyBsYXJnZXIgdGhhbiA0IEtCLgorICAgICAgICBB
ZGRpbmcgY2FsbCB0byBGaWxlU3lzdGVtOjpnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIHVzZSB0
aGUgRmlsZVN5c3RlbSdzCisgICAgICAgIGJsb2NrIHNpemUgaW4gdGhlIGVzdGltYXRpb24uCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisK
IDIwMjEtMDYtMjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
TG9hZGluZyBXZWJNIGhhbmdzIGlmIHNlcnZlciBzZW5kcyBvbmx5IHNtYWxsIGFtb3VudCBvZiBk
YXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA0NmU1OTUyMjljZDguLjFhMGM0Y2FiYmE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yNjcsNiArMjY3LDcgQEAgU3RvcmFnZTo6U3RvcmFn
ZShjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoLCBNb2RlIG1vZGUsIFNhbHQgc2FsdCwg
c2l6ZV90IGMKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9zYWx0KHNhbHQpCiAgICAgLCBt
X2NhcGFjaXR5KGNhcGFjaXR5KQorICAgICwgbV92b2x1bWVCbG9ja1NpemUoRmlsZVN5c3RlbTo6
Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZShiYXNlRGlyZWN0b3J5UGF0aCkudmFsdWVfb3IoNCAqIEtC
KSkKICAgICAsIG1fcmVhZE9wZXJhdGlvblRpbWVvdXRUaW1lcigqdGhpcywgJlN0b3JhZ2U6OmNh
bmNlbEFsbFJlYWRPcGVyYXRpb25zKQogICAgICwgbV93cml0ZU9wZXJhdGlvbkRpc3BhdGNoVGlt
ZXIoKnRoaXMsICZTdG9yYWdlOjpkaXNwYXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMpCiAgICAg
LCBtX2lvUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGUuU3Rv
cmFnZSIsIFdvcmtRdWV1ZTo6VHlwZTo6Q29uY3VycmVudCkpCkBAIC0zMTAsMTAgKzMxMSwxMCBA
QCBzaXplX3QgU3RvcmFnZTo6YXBwcm94aW1hdGVTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9h
cHByb3hpbWF0ZVJlY29yZHNTaXplICsgbV9ibG9iU3RvcmFnZS5hcHByb3hpbWF0ZVNpemUoKTsK
IH0KIAotc3RhdGljIHNpemVfdCBlc3RpbWF0ZVJlY29yZHNTaXplKHVuc2lnbmVkIHJlY29yZENv
dW50LCB1bnNpZ25lZCBibG9iQ291bnQpCitzaXplX3QgU3RvcmFnZTo6ZXN0aW1hdGVSZWNvcmRz
U2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWduZWQgYmxvYkNvdW50KQogewogICAgIGF1
dG8gaW5saW5lQm9keUNvdW50ID0gcmVjb3JkQ291bnQgLSBzdGQ6Om1pbihibG9iQ291bnQsIHJl
Y29yZENvdW50KTsKLSAgICBhdXRvIGhlYWRlclNpemVzID0gcmVjb3JkQ291bnQgKiA0MDk2Owor
ICAgIGF1dG8gaGVhZGVyU2l6ZXMgPSByZWNvcmRDb3VudCAqIG1fdm9sdW1lQmxvY2tTaXplOwog
ICAgIGF1dG8gaW5saW5lQm9keVNpemVzID0gKG1heGltdW1JbmxpbmVCb2R5U2l6ZSgpIC8gMikg
KiBpbmxpbmVCb2R5Q291bnQ7CiAgICAgcmV0dXJuIGhlYWRlclNpemVzICsgaW5saW5lQm9keVNp
emVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCBhZThkZWVjNmZjZTIuLmQzMzgzMGEyMGRjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTE2Miw2ICsxNjIsOCBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIGJvb2wgaXNIaWdoZXJQcmlvcml0eShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJh
dGlvbj4mLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4mKTsKIAorICAgIHNp
emVfdCBlc3RpbWF0ZVJlY29yZHNTaXplKHVuc2lnbmVkLCB1bnNpZ25lZCk7CisKICAgICBjb25z
dCBTdHJpbmcgbV9iYXNlUGF0aDsKICAgICBjb25zdCBTdHJpbmcgbV9yZWNvcmRzUGF0aDsKICAg
ICAKQEAgLTE3MCw2ICsxNzIsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1fY2FwYWNpdHkg
eyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgc2l6ZV90IG1fYXBw
cm94aW1hdGVSZWNvcmRzU2l6ZSB7IDAgfTsKKyAgICB1aW50MzJfdCBtX3ZvbHVtZUJsb2NrU2l6
ZTsKIAogICAgIC8vIDJeMTggYml0IGZpbHRlciBjYW4gc3VwcG9ydCB1cCB0byAyNjAwMCBlbnRy
aWVzIHdpdGggZmFsc2UgcG9zaXRpdmUgcmF0ZSA8IDElLgogICAgIHVzaW5nIENvbnRlbnRzRmls
dGVyID0gQmxvb21GaWx0ZXI8MTg+Owo=
</data>
<flag name="review"
          id="454756"
          type_id="1"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432988</attachid>
            <date>2021-07-06 16:44:37 -0700</date>
            <delta_ts>2021-07-07 10:56:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6535</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li42YzgxOWNmOWRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBXaW5kb3dzIGFuZCBQT1NJWCBmaWxlc3lzdGVtcy4KKworICAg
ICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHd0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorCiAy
MDIxLTA2LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmFibGUgUHJvYmFiaWxpc3RpYyBHdWFyZCBNYWxsb2MgZm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVh
dHVyZSB2ZWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggN2NlYTcwYTNmNDU4Li41ZjJkNWIxYjEy
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJp
bmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBnZXRWb2x1
bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdl
dFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA3NWU2OWY0MWY4
ODUuLjZhOGZmN2Y5N2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
QEAgLTI0Niw2ICsyNDYsMTEgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0
cmlidXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklD
RSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGdldFZvbHVtZUZpbGVCbG9ja1NpemUo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiAjaWYgVVNF
KEZJTEVfTE9DSykKIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0
aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAppbmRleCA3YmQyOTc3MzI0MWYuLmY2ODIwMjE1ODk0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0xODQsNiArMTg0LDE1IEBA
IHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQogI2VuZGlmCiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGdldFZvbHVtZUZpbGVC
bG9ja1NpemUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVT
dGF0OworICAgIGlmICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpLCAmZmlsZVN0YXQpKQorICAgICAgICByZXR1cm4gZmlsZVN0YXQuZl9mcnNpemU7CisKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiAjaWYgIVVTRShDRikKIFN0cmluZyBzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggNDdlMjFlYmM3ZTRkLi44NjQ2YmEyYTM4NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTM2Myw2ICszNjMsMTUgQEAg
U3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpCiAgICAgfSk7CiB9CiAKK3N0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGdldFZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIERXT1JEIHNlY3RvcnNQZXJDbHVzdGVyLCBieXRlc1BlclNlY3RvciwgZnJlZUNs
dXN0ZXJzLCB0b3RhbENsdXN0ZXJzOyAKKyAgICBpZiAoIUdldERpc2tGcmVlU3BhY2VXKHBhdGgu
d2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksICZzZWN0b3JzUGVyQ2x1c3RlciwgJmJ5dGVzUGVyU2Vj
dG9yLCAmZnJlZUNsdXN0ZXJzLCAmdG90YWxDbHVzdGVycykpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc2VjdG9yc1BlckNsdXN0ZXIgKiBieXRlc1BlclNlY3Rv
cjsKK30KKwogTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCiB7CiAgICAgaWYgKG1f
ZmlsZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyMzc5YzVmZmVmNC4uNDY4OTc2OGU4MzcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA2LTI5ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMu
cmVpZEBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIERvbid0IGFzc3VtZSA0S0Ig
YmxvY2sgc2l6ZSB3aGVuIGVzdGltYXRpbmcgTmV0d29yayBDYWNoZSBkaXNrIHVzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXR3b3JrIENhY2hl
IGRpc2sgdXNhZ2UgY2FuIHVuZGVyZXN0aW1hdGUgdGhlIHJlYWwgZGlzayB1c2FnZSBvbiBwbGF0
Zm9ybXMgCisgICAgICAgIHdpdGggZmlsZSBibG9ja3MgbGFyZ2VyIHRoYW4gNCBLQi4KKyAgICAg
ICAgQWRkaW5nIGNhbGwgdG8gRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZSB0byB1
c2UgdGhlIEZpbGVTeXN0ZW0ncworICAgICAgICBibG9jayBzaXplIGluIHRoZSBlc3RpbWF0aW9u
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
OgorCiAyMDIxLTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIExvYWRpbmcgV2ViTSBoYW5ncyBpZiBzZXJ2ZXIgc2VuZHMgb25seSBzbWFsbCBhbW91bnQg
b2YgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDZlNTk1MjI5Y2Q4Li4xMmRkMTk2NzVk
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzEwLDEwICszMTAsMjAgQEAgc2l6ZV90IFN0
b3JhZ2U6OmFwcHJveGltYXRlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXBwcm94aW1hdGVS
ZWNvcmRzU2l6ZSArIG1fYmxvYlN0b3JhZ2UuYXBwcm94aW1hdGVTaXplKCk7CiB9CiAKLXN0YXRp
YyBzaXplX3QgZXN0aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWdu
ZWQgYmxvYkNvdW50KQordWludDMyX3QgU3RvcmFnZTo6Z2V0Vm9sdW1lQmxvY2tTaXplKCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICghbV92b2x1bWVCbG9j
a1NpemUpCisgICAgICAgIG1fdm9sdW1lQmxvY2tTaXplID0gRmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RmlsZUJsb2NrU2l6ZShtX2Jhc2VQYXRoKS52YWx1ZV9vcig0ICogS0IpOworICAgIAorICAgIHJl
dHVybiBtX3ZvbHVtZUJsb2NrU2l6ZTsKK30KKworc2l6ZV90IFN0b3JhZ2U6OmVzdGltYXRlUmVj
b3Jkc1NpemUodW5zaWduZWQgcmVjb3JkQ291bnQsIHVuc2lnbmVkIGJsb2JDb3VudCkKIHsKICAg
ICBhdXRvIGlubGluZUJvZHlDb3VudCA9IHJlY29yZENvdW50IC0gc3RkOjptaW4oYmxvYkNvdW50
LCByZWNvcmRDb3VudCk7Ci0gICAgYXV0byBoZWFkZXJTaXplcyA9IHJlY29yZENvdW50ICogNDA5
NjsKKyAgICBhdXRvIGhlYWRlclNpemVzID0gcmVjb3JkQ291bnQgKiBnZXRWb2x1bWVCbG9ja1Np
emUoKTsKICAgICBhdXRvIGlubGluZUJvZHlTaXplcyA9IChtYXhpbXVtSW5saW5lQm9keVNpemUo
KSAvIDIpICogaW5saW5lQm9keUNvdW50OwogICAgIHJldHVybiBoZWFkZXJTaXplcyArIGlubGlu
ZUJvZHlTaXplczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKaW5kZXggYWU4ZGVlYzZmY2UyLi5mOGZiMDhj
Njk4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0xNjIsNiArMTYyLDkgQEAgcHJpdmF0ZToKIAog
ICAgIHN0YXRpYyBib29sIGlzSGlnaGVyUHJpb3JpdHkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJl
YWRPcGVyYXRpb24+JiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRpb24+Jik7CiAK
KyAgICBzaXplX3QgZXN0aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5z
aWduZWQgYmxvYkNvdW50KTsKKyAgICB1aW50MzJfdCBnZXRWb2x1bWVCbG9ja1NpemUoKTsKKwog
ICAgIGNvbnN0IFN0cmluZyBtX2Jhc2VQYXRoOwogICAgIGNvbnN0IFN0cmluZyBtX3JlY29yZHNQ
YXRoOwogICAgIApAQCAtMTcwLDYgKzE3Myw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9j
YXBhY2l0eSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICBzaXpl
X3QgbV9hcHByb3hpbWF0ZVJlY29yZHNTaXplIHsgMCB9OworICAgIHVpbnQzMl90IG1fdm9sdW1l
QmxvY2tTaXplIHsgMCB9OwogCiAgICAgLy8gMl4xOCBiaXQgZmlsdGVyIGNhbiBzdXBwb3J0IHVw
IHRvIDI2MDAwIGVudHJpZXMgd2l0aCBmYWxzZSBwb3NpdGl2ZSByYXRlIDwgMSUuCiAgICAgdXNp
bmcgQ29udGVudHNGaWx0ZXIgPSBCbG9vbUZpbHRlcjwxOD47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433047</attachid>
            <date>2021-07-07 10:56:46 -0700</date>
            <delta_ts>2021-07-07 11:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6511</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmJhODQ2ZThjZDI1Li42YzgxOWNmOWRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1lIDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1h
dGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnZXRWb2x1bWVGaWxlQmxvY2tTaXplIHRvIGZldGNo
IHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgIEN1cnJlbnRseSBv
bmx5IGltcGxlbWVudGVkIGZvciBXaW5kb3dzIGFuZCBQT1NJWCBmaWxlc3lzdGVtcy4KKworICAg
ICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHd0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorCiAy
MDIxLTA2LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmFibGUgUHJvYmFiaWxpc3RpYyBHdWFyZCBNYWxsb2MgZm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVh
dHVyZSB2ZWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggN2NlYTcwYTNmNDU4Li4yMGVlODdiZTBj
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJp
bmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2b2x1bWVG
aWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBh
dGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA3NWU2OWY0MWY4ODUu
LjU0NjI0NGM3MDQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAg
LTI0Niw2ICsyNDYsMTEgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQo
Y29uc3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfYXR0cmli
dXRlX3VpbnQzMihmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSk7
CiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3Qg
U3RyaW5nJikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiAjaWYgVVNFKEZJTEVf
TE9DSykKIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgT3B0aW9uU2V0
PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAppbmRleCA3YmQyOTc3MzI0MWYuLmIxMzM4MjRlYzJhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0xODQsNiArMTg0LDE1IEBAIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQog
I2VuZGlmCiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHZvbHVtZUZpbGVCbG9ja1NpemUo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTdGF0OworICAg
IGlmICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmls
ZVN0YXQpKQorICAgICAgICByZXR1cm4gZmlsZVN0YXQuZl9mcnNpemU7CisKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworfQorCiAjaWYgIVVTRShDRikKIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKaW5kZXggNDdlMjFlYmM3ZTRkLi5mNGMyNzc3MjU4NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTM2Myw2ICszNjMsMTUgQEAgU3RyaW5nIGNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpCiAgICAgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IHZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIERX
T1JEIHNlY3RvcnNQZXJDbHVzdGVyLCBieXRlc1BlclNlY3RvciwgZnJlZUNsdXN0ZXJzLCB0b3Rh
bENsdXN0ZXJzOyAKKyAgICBpZiAoIUdldERpc2tGcmVlU3BhY2VXKHBhdGgud2lkZUNoYXJhY3Rl
cnMoKS5kYXRhKCksICZzZWN0b3JzUGVyQ2x1c3RlciwgJmJ5dGVzUGVyU2VjdG9yLCAmZnJlZUNs
dXN0ZXJzLCAmdG90YWxDbHVzdGVycykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gc2VjdG9yc1BlckNsdXN0ZXIgKiBieXRlc1BlclNlY3RvcjsKK30KKwogTWFw
cGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCiB7CiAgICAgaWYgKG1fZmlsZURhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDEyMzc5YzVmZmVmNC4uNDY4OTc2OGU4MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTA2LTI5ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNv
bT4KKworICAgICAgICBbUGxheVN0YXRpb25dIERvbid0IGFzc3VtZSA0S0IgYmxvY2sgc2l6ZSB3
aGVuIGVzdGltYXRpbmcgTmV0d29yayBDYWNoZSBkaXNrIHVzYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2Ug
Y2FuIHVuZGVyZXN0aW1hdGUgdGhlIHJlYWwgZGlzayB1c2FnZSBvbiBwbGF0Zm9ybXMgCisgICAg
ICAgIHdpdGggZmlsZSBibG9ja3MgbGFyZ2VyIHRoYW4gNCBLQi4KKyAgICAgICAgQWRkaW5nIGNh
bGwgdG8gRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZSB0byB1c2UgdGhlIEZpbGVT
eXN0ZW0ncworICAgICAgICBibG9jayBzaXplIGluIHRoZSBlc3RpbWF0aW9uLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAyMDIxLTA2
LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIExvYWRpbmcg
V2ViTSBoYW5ncyBpZiBzZXJ2ZXIgc2VuZHMgb25seSBzbWFsbCBhbW91bnQgb2YgZGF0YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAKaW5kZXggNDZlNTk1MjI5Y2Q4Li44MWVmZmE4MTQ4YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtMzEwLDEwICszMTAsMjAgQEAgc2l6ZV90IFN0b3JhZ2U6OmFwcHJv
eGltYXRlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXBwcm94aW1hdGVSZWNvcmRzU2l6ZSAr
IG1fYmxvYlN0b3JhZ2UuYXBwcm94aW1hdGVTaXplKCk7CiB9CiAKLXN0YXRpYyBzaXplX3QgZXN0
aW1hdGVSZWNvcmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWduZWQgYmxvYkNvdW50
KQordWludDMyX3QgU3RvcmFnZTo6dm9sdW1lQmxvY2tTaXplKCkKK3sKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICghbV92b2x1bWVCbG9ja1NpemUpCisgICAgICAg
IG1fdm9sdW1lQmxvY2tTaXplID0gRmlsZVN5c3RlbTo6dm9sdW1lRmlsZUJsb2NrU2l6ZShtX2Jh
c2VQYXRoKS52YWx1ZV9vcig0ICogS0IpOworICAgIAorICAgIHJldHVybiBtX3ZvbHVtZUJsb2Nr
U2l6ZTsKK30KKworc2l6ZV90IFN0b3JhZ2U6OmVzdGltYXRlUmVjb3Jkc1NpemUodW5zaWduZWQg
cmVjb3JkQ291bnQsIHVuc2lnbmVkIGJsb2JDb3VudCkKIHsKICAgICBhdXRvIGlubGluZUJvZHlD
b3VudCA9IHJlY29yZENvdW50IC0gc3RkOjptaW4oYmxvYkNvdW50LCByZWNvcmRDb3VudCk7Ci0g
ICAgYXV0byBoZWFkZXJTaXplcyA9IHJlY29yZENvdW50ICogNDA5NjsKKyAgICBhdXRvIGhlYWRl
clNpemVzID0gcmVjb3JkQ291bnQgKiB2b2x1bWVCbG9ja1NpemUoKTsKICAgICBhdXRvIGlubGlu
ZUJvZHlTaXplcyA9IChtYXhpbXVtSW5saW5lQm9keVNpemUoKSAvIDIpICogaW5saW5lQm9keUNv
dW50OwogICAgIHJldHVybiBoZWFkZXJTaXplcyArIGlubGluZUJvZHlTaXplczsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgKaW5kZXggYWU4ZGVlYzZmY2UyLi4zNDM0OGI0YWM2OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oCkBAIC0xNjIsNiArMTYyLDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBib29sIGlzSGln
aGVyUHJpb3JpdHkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRpb24+JiwgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRpb24+Jik7CiAKKyAgICBzaXplX3QgZXN0aW1hdGVS
ZWNvcmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWduZWQgYmxvYkNvdW50KTsKKyAg
ICB1aW50MzJfdCB2b2x1bWVCbG9ja1NpemUoKTsKKwogICAgIGNvbnN0IFN0cmluZyBtX2Jhc2VQ
YXRoOwogICAgIGNvbnN0IFN0cmluZyBtX3JlY29yZHNQYXRoOwogICAgIApAQCAtMTcwLDYgKzE3
Myw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9jYXBhY2l0eSB7IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICBzaXplX3QgbV9hcHByb3hpbWF0ZVJlY29yZHNT
aXplIHsgMCB9OworICAgIHVpbnQzMl90IG1fdm9sdW1lQmxvY2tTaXplIHsgMCB9OwogCiAgICAg
Ly8gMl4xOCBiaXQgZmlsdGVyIGNhbiBzdXBwb3J0IHVwIHRvIDI2MDAwIGVudHJpZXMgd2l0aCBm
YWxzZSBwb3NpdGl2ZSByYXRlIDwgMSUuCiAgICAgdXNpbmcgQ29udGVudHNGaWx0ZXIgPSBCbG9v
bUZpbHRlcjwxOD47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433056</attachid>
            <date>2021-07-07 11:57:47 -0700</date>
            <delta_ts>2021-07-07 12:54:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227502-20210707115746.patch</filename>
            <type>text/plain</type>
            <size>7018</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJiYTg0NmU4Y2QyNWE0MThkNWQ4YWUy
ZTNmZDNhNjA3NDU0YWNmYTMuLmJjYmUzYWJiNjY5MDcxNzM0ZGMxNDc3ZjVkY2UzZTU3YmZhNjE4
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMjkgIENocmlzdG9waGVyIFJlaWQgIDxj
aHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gRG9uJ3QgYXNzdW1l
IDRLQiBibG9jayBzaXplIHdoZW4gZXN0aW1hdGluZyBOZXR3b3JrIENhY2hlIGRpc2sgdXNhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZCBnZXRWb2x1
bWVGaWxlQmxvY2tTaXplIHRvIGZldGNoIHRoZSBibG9jayBzaXplIGZyb20gdGhlIGZpbGVzeXN0
ZW0uCisgICAgICAgIEN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGZvciBXaW5kb3dzIGFuZCBQ
T1NJWCBmaWxlc3lzdGVtcy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHd0Zi9wbGF5c3RhdGlvbi9GaWxlU3lz
dGVtUGxheVN0YXRpb24uY3BwOgorCiAyMDIxLTA2LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgUHJvYmFiaWxpc3RpYyBHdWFyZCBNYWxsb2Mg
Zm9yIFJ1bGVEYXRhIGFuZCBSdWxlRmVhdHVyZSB2ZWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXgg
N2NlYTcwYTNmNDU4ZDM2YjA3OTA0ODBmNmE0OGFlYmZiOWYxOTFlZi4uMjBlZTg3YmUwYzRmNTRm
Y2I2MzcyM2I5MjAxNjM4YTYxOTgxN2E0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTIyLDYgKzEy
Miw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoRmlsZU5hbWUoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhcmVudFBhdGgoY29uc3Qg
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdm9s
dW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJik7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5r
KGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRo
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCmluZGV4IDc1ZTY5ZjQxZjg4NWI5YjdlN2NhYzZmNmZjNDFmZjJiNGE2ODMyMDkuLjU0NjI0
NGM3MDQxMDg0Y2I0YjQyZTlmMGFhZWJhOGEyNjI5MDNmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0yNDYsNiArMjQ2LDExIEBAIHN0ZDo6b3B0aW9uYWw8aW50
MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKICAgICByZXR1cm4g
Z19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9B
VFRSSUJVVEVfVU5JWF9ERVZJQ0UpOwogfQogCitzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2b2x1
bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKK30KKwogI2lmIFVTRShGSUxFX0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+IGxvY2tNb2RlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2JkMjk3NzMyNDFmMTM5ODgw
M2Y4NmZmY2FjMTYzZWJiMDM4NDNkMC4uYjEzMzgyNGVjMmExMTVlYTUwYzdjMzRlMGYxYTVlY2U4
MDQwMmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0x
ODQsNiArMTg0LDE1IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IHZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHN0cnVjdCBz
dGF0dmZzIGZpbGVTdGF0OworICAgIGlmICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpLCAmZmlsZVN0YXQpKQorICAgICAgICByZXR1cm4gZmlsZVN0YXQuZl9m
cnNpemU7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiAjaWYgIVVTRShDRikKIFN0
cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIHBhdGgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggNDdlMjFlYmM3ZTRkYTYz
NGE0MTQ5ODI0ODY2OTBjMjI5NDg2NGM4NC4uZmZhNjI5M2M3M2U4NGVlZTBiY2UxMmNjNGQwZGE3
Y2RjYTYwYjg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMzYzLDYg
KzM2MywxNSBAQCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkKICAgICB9KTsKIH0K
IAorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgRFdPUkQgc2VjdG9yc1BlckNsdXN0ZXIsIGJ5dGVzUGVyU2VjdG9y
LCBmcmVlQ2x1c3RlcnMsIHRvdGFsQ2x1c3RlcnM7CisgICAgaWYgKCFHZXREaXNrRnJlZVNwYWNl
VyhwYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAmc2VjdG9yc1BlckNsdXN0ZXIsICZieXRl
c1BlclNlY3RvciwgJmZyZWVDbHVzdGVycywgJnRvdGFsQ2x1c3RlcnMpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNlY3RvcnNQZXJDbHVzdGVyICogYnl0ZXNQ
ZXJTZWN0b3I7Cit9CisKIE1hcHBlZEZpbGVEYXRhOjp+TWFwcGVkRmlsZURhdGEoKQogewogICAg
IGlmIChtX2ZpbGVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMjM3OWM1ZmZlZjQzOWY3ZDcyMTllMDdlNmJk
MzM2MGVkN2M0NGI0Li44YjQ2ZGZmYTQ4MGRlOThkNTVlNDMwMWE3NDQ5NTliNTdlZDUxOTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA2LTI5ICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIERvbid0IGFzc3Vt
ZSA0S0IgYmxvY2sgc2l6ZSB3aGVuIGVzdGltYXRpbmcgTmV0d29yayBDYWNoZSBkaXNrIHVzYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBOZXR3b3JrIENh
Y2hlIGRpc2sgdXNhZ2UgY2FuIHVuZGVyZXN0aW1hdGUgdGhlIHJlYWwgZGlzayB1c2FnZSBvbiBw
bGF0Zm9ybXMgCisgICAgICAgIHdpdGggZmlsZSBibG9ja3MgbGFyZ2VyIHRoYW4gNCBLQi4KKyAg
ICAgICAgQWRkaW5nIGNhbGwgdG8gRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRmlsZUJsb2NrU2l6ZSB0
byB1c2UgdGhlIEZpbGVTeXN0ZW0ncworICAgICAgICBibG9jayBzaXplIGluIHRoZSBlc3RpbWF0
aW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oOgorCiAyMDIxLTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIExvYWRpbmcgV2ViTSBoYW5ncyBpZiBzZXJ2ZXIgc2VuZHMgb25seSBzbWFsbCBhbW91
bnQgb2YgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDZlNTk1MjI5Y2Q4ZmE0YWM1Y2Uw
NTY4NGE3ZjY1YjMwNjAxYTM0Yi4uM2JjMzViNTZmZDJkNjgxZjdmM2VjMjJmMjVjZTY3MjhjZDEz
NTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMTAsMTAgKzMxMCwyMCBAQCBzaXplX3Qg
U3RvcmFnZTo6YXBwcm94aW1hdGVTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9hcHByb3hpbWF0
ZVJlY29yZHNTaXplICsgbV9ibG9iU3RvcmFnZS5hcHByb3hpbWF0ZVNpemUoKTsKIH0KIAotc3Rh
dGljIHNpemVfdCBlc3RpbWF0ZVJlY29yZHNTaXplKHVuc2lnbmVkIHJlY29yZENvdW50LCB1bnNp
Z25lZCBibG9iQ291bnQpCit1aW50MzJfdCBTdG9yYWdlOjp2b2x1bWVCbG9ja1NpemUoKSBjb25z
dAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKCFtX3ZvbHVt
ZUJsb2NrU2l6ZSkKKyAgICAgICAgbV92b2x1bWVCbG9ja1NpemUgPSBGaWxlU3lzdGVtOjp2b2x1
bWVGaWxlQmxvY2tTaXplKG1fYmFzZVBhdGgpLnZhbHVlX29yKDQgKiBLQik7CisKKyAgICByZXR1
cm4gKm1fdm9sdW1lQmxvY2tTaXplOworfQorCitzaXplX3QgU3RvcmFnZTo6ZXN0aW1hdGVSZWNv
cmRzU2l6ZSh1bnNpZ25lZCByZWNvcmRDb3VudCwgdW5zaWduZWQgYmxvYkNvdW50KSBjb25zdAog
ewogICAgIGF1dG8gaW5saW5lQm9keUNvdW50ID0gcmVjb3JkQ291bnQgLSBzdGQ6Om1pbihibG9i
Q291bnQsIHJlY29yZENvdW50KTsKLSAgICBhdXRvIGhlYWRlclNpemVzID0gcmVjb3JkQ291bnQg
KiA0MDk2OworICAgIGF1dG8gaGVhZGVyU2l6ZXMgPSByZWNvcmRDb3VudCAqIHZvbHVtZUJsb2Nr
U2l6ZSgpOwogICAgIGF1dG8gaW5saW5lQm9keVNpemVzID0gKG1heGltdW1JbmxpbmVCb2R5U2l6
ZSgpIC8gMikgKiBpbmxpbmVCb2R5Q291bnQ7CiAgICAgcmV0dXJuIGhlYWRlclNpemVzICsgaW5s
aW5lQm9keVNpemVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCBhZThkZWVjNmZjZTI3Nzk5ZTc2
MjhmZDc0YTQ4NGZhZDM0OGU3ZmFkLi42MzU0YWYyNzNiMTRhNjQwMjVlMWIzOTAzNmRiMTI3YmNl
NDVjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtMTYyLDYgKzE2Miw5IEBAIHByaXZhdGU6CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0hpZ2hlclByaW9yaXR5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxS
ZWFkT3BlcmF0aW9uPiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxSZWFkT3BlcmF0aW9uPiYpOwog
CisgICAgc2l6ZV90IGVzdGltYXRlUmVjb3Jkc1NpemUodW5zaWduZWQgcmVjb3JkQ291bnQsIHVu
c2lnbmVkIGJsb2JDb3VudCkgY29uc3Q7CisgICAgdWludDMyX3Qgdm9sdW1lQmxvY2tTaXplKCkg
Y29uc3Q7CisKICAgICBjb25zdCBTdHJpbmcgbV9iYXNlUGF0aDsKICAgICBjb25zdCBTdHJpbmcg
bV9yZWNvcmRzUGF0aDsKICAgICAKQEAgLTE3MCw2ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAg
c2l6ZV90IG1fY2FwYWNpdHkgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07
CiAgICAgc2l6ZV90IG1fYXBwcm94aW1hdGVSZWNvcmRzU2l6ZSB7IDAgfTsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fdm9sdW1lQmxvY2tTaXplOwogCiAgICAgLy8gMl4x
OCBiaXQgZmlsdGVyIGNhbiBzdXBwb3J0IHVwIHRvIDI2MDAwIGVudHJpZXMgd2l0aCBmYWxzZSBw
b3NpdGl2ZSByYXRlIDwgMSUuCiAgICAgdXNpbmcgQ29udGVudHNGaWx0ZXIgPSBCbG9vbUZpbHRl
cjwxOD47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>