<?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>214142</bug_id>
          
          <creation_ts>2020-07-09 08:58:43 -0700</creation_ts>
          <short_desc>[WTF] Fix PackedAlignedPtr for X86_64 canonical addresses</short_desc>
          <delta_ts>2020-07-15 09:33:15 -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>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="Jim Mason">jmason</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670122</commentid>
    <comment_count>0</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 08:58:43 -0700</bug_when>
    <thetext>PackedAlignedPtr assumes the effective address width is &lt;= 48 bits in 64-bit architectures.  This facilitates NaN boxing with the remaining bits.  (ref: wtf/PlatformOS.h)

This is fine for x86_64, as it has a 48-bit address space.  However, PackedAlignedPtr incorrectly assumes the &apos;hole&apos; in the address space is at the high-end (i.e., that the most significant 16 bits are always zero).  For x86_64, the high order bits may be zero or one: &quot;The AMD specification requires that the most significant 16 bits of any virtual address, bits 48 through 63, must be copies of bit 47 (in a manner akin to sign extension).&quot; Reference: https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details

The patch to wtf/Packed.h fixes the getter of PackedAlignedPtr to reconstitute the canonical address by &apos;sign-extending&apos; bit 47 (which we already store) across the most significant 16-bits:

#if CPU(X86_64)                                                               
    if(value &amp; 0x1ULL &lt;&lt; 47)                                              
        value |= 0xffffULL &lt;&lt; 48;                                         
#endif

In this way, both the getter and setter of PackedAlignedPtr will work correctly for all X86_64 canonical addresses: The setter continues to discard the upper 16 bits and store only the lower 48 bits, while the getter now reconstitutes the upper 16 bits at retrieval time.


The patch to wasm/js/WebAssemblyFunction.cpp is a related fix for an address pointer test:  Currently, the test uses a signed value (intptr_t) for the comparison.  If the high order bit is set, this number is negative, which makes the test fail.  The fix changes intptr_t to uintptr_t so the test will work as expected for all addresses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670127</commentid>
    <comment_count>1</comment_count>
      <attachid>403873</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 09:06:16 -0700</bug_when>
    <thetext>Created attachment 403873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670130</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 09:15:09 -0700</bug_when>
    <thetext>Jim, what platform actually allocates user space memory in the range where bit 47 of the address is set?  Can you share the detail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670133</commentid>
    <comment_count>3</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 09:25:11 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #2)
&gt; Jim, what platform actually allocates user space memory in the range where
&gt; bit 47 of the address is set?  Can you share the detail?

Solaris/illumos.  See https://www.oracle.com/solaris/technologies/memory.html

I first thought this was a Solaris quirk, and for a long time, just self-applied the attached patch to make it work in my environment.  When I learned that X86_64 actually specifies the canonical address space, such that the &apos;hole&apos; of unusable addresses is in the middle of the virtual space, I reckoned it would be worthwhile to share the fix, so that webkit always does the right thing for this processor architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670136</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 09:28:52 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #3)
&gt; (In reply to Mark Lam from comment #2)
&gt; &gt; Jim, what platform actually allocates user space memory in the range where
&gt; &gt; bit 47 of the address is set?  Can you share the detail?
&gt; 
&gt; Solaris/illumos.  See https://www.oracle.com/solaris/technologies/memory.html
&gt; 
&gt; I first thought this was a Solaris quirk, and for a long time, just
&gt; self-applied the attached patch to make it work in my environment.  When I
&gt; learned that X86_64 actually specifies the canonical address space, such
&gt; that the &apos;hole&apos; of unusable addresses is in the middle of the virtual space,
&gt; I reckoned it would be worthwhile to share the fix, so that webkit always
&gt; does the right thing for this processor architecture.

Thanks for the patch and the justification for it.  Will look into the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670143</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 09:43:29 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #3)
&gt; (In reply to Mark Lam from comment #2)
&gt; &gt; Jim, what platform actually allocates user space memory in the range where
&gt; &gt; bit 47 of the address is set?  Can you share the detail?
&gt; 
&gt; Solaris/illumos.  See https://www.oracle.com/solaris/technologies/memory.html
&gt; 
&gt; I first thought this was a Solaris quirk, and for a long time, just
&gt; self-applied the attached patch to make it work in my environment.  When I
&gt; learned that X86_64 actually specifies the canonical address space, such
&gt; that the &apos;hole&apos; of unusable addresses is in the middle of the virtual space,
&gt; I reckoned it would be worthwhile to share the fix, so that webkit always
&gt; does the right thing for this processor architecture.

According to https://www.oracle.com/solaris/technologies/memory.html, addresses with bit 47 set are all reserved for Kernel space.  In fact, the upper bound in user space memory is 0x00008000.00000000 i.e. you should never see an address with bit 47 set in WebKit.  Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670152</commentid>
    <comment_count>6</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 09:57:37 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #5)
&gt; According to https://www.oracle.com/solaris/technologies/memory.html,
&gt; addresses with bit 47 set are all reserved for Kernel space.  In fact, the
&gt; upper bound in user space memory is 0x00008000.00000000 i.e. you should
&gt; never see an address with bit 47 set in WebKit.  Am I missing something?

I think you may be looking at SPARC.  X86_64 has the user stack and shared objects up there.  It&apos;s about half way down:

      64-bit Kernel&apos;s Virtual Memory Layout. (assuming 64 bit app)

 0xFFFFFD80.00000000  |-----------------------|- KERNELBASE (lower if &gt; 1TB)
                      |     User stack        |- User space memory
                      |                       |
                      | shared objects, etc   |       (grows downwards)
                      :                       :
                      |                       |
 0xFFFF8000.00000000  |-----------------------|
                      |                       |
                      | VA Hole / unused      |
                      |                       |
 0x00008000.00000000  |-----------------------|
                      |                       |
                      |                       |
                      :                       :
                      |       user heap       |       (grows upwards)
                      |                       |
                      |       user data       |
                      |-----------------------|
                      |       user text       |
 0x00000000.04000000  |-----------------------|
                      |       invalid         |
 0x00000000.00000000  +-----------------------+


I can confirm on Solaris that I see addresses with bit 47 both set and not set in PackedAlignedPtr, and if I don&apos;t sign-extend the ones with bit 47 set, it will SIGSEGV.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670155</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 10:01:45 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #6)
&gt; (In reply to Mark Lam from comment #5)
&gt; &gt; According to https://www.oracle.com/solaris/technologies/memory.html,
&gt; &gt; addresses with bit 47 set are all reserved for Kernel space.  In fact, the
&gt; &gt; upper bound in user space memory is 0x00008000.00000000 i.e. you should
&gt; &gt; never see an address with bit 47 set in WebKit.  Am I missing something?
&gt; 
&gt; I think you may be looking at SPARC.  X86_64 has the user stack and shared
&gt; objects up there.  It&apos;s about half way down:
&gt; 
&gt;       64-bit Kernel&apos;s Virtual Memory Layout. (assuming 64 bit app)
&gt; 
&gt;  0xFFFFFD80.00000000  |-----------------------|- KERNELBASE (lower if &gt; 1TB)
&gt;                       |     User stack        |- User space memory
&gt;                       |                       |
&gt;                       | shared objects, etc   |       (grows downwards)
&gt;                       :                       :
&gt;                       |                       |
&gt;  0xFFFF8000.00000000  |-----------------------|
&gt;                       |                       |
&gt;                       | VA Hole / unused      |
&gt;                       |                       |
&gt;  0x00008000.00000000  |-----------------------|
&gt;                       |                       |
&gt;                       |                       |
&gt;                       :                       :
&gt;                       |       user heap       |       (grows upwards)
&gt;                       |                       |
&gt;                       |       user data       |
&gt;                       |-----------------------|
&gt;                       |       user text       |
&gt;  0x00000000.04000000  |-----------------------|
&gt;                       |       invalid         |
&gt;  0x00000000.00000000  +-----------------------+
&gt; 
&gt; 
&gt; I can confirm on Solaris that I see addresses with bit 47 both set and not
&gt; set in PackedAlignedPtr, and if I don&apos;t sign-extend the ones with bit 47
&gt; set, it will SIGSEGV.

This was exactly what I was looking at.  Oh, I missed the &quot;User stack and shared objects, etc&quot; section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670156</commentid>
    <comment_count>8</comment_count>
      <attachid>403873</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 10:05:21 -0700</bug_when>
    <thetext>Comment on attachment 403873
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670159</commentid>
    <comment_count>9</comment_count>
      <attachid>403873</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 10:08:42 -0700</bug_when>
    <thetext>Comment on attachment 403873
Patch

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

&gt; Source/WTF/wtf/Packed.h:155
&gt; +#if CPU(X86_64)
&gt; +        // The AMD specification requires that the most significant 16
&gt; +        // bits of any virtual address, bits 48 through 63, must be
&gt; +        // copies of bit 47 (in a manner akin to sign extension).
&gt; +        //
&gt; +        // Reference: https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details
&gt; +        if (value &amp; 0x1ULL &lt;&lt; 47)
&gt; +            value |= 0xffffULL &lt;&lt; 48;
&gt; +#endif

Please add an ASSERT in set() to verify that if bit 47 is set that the upper 16 bits are also set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670161</commentid>
    <comment_count>10</comment_count>
      <attachid>403873</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 10:11:12 -0700</bug_when>
    <thetext>Comment on attachment 403873
Patch

Taking back the r+.  Looks like you also need to update TEST(WTF_Packed, AssignAndGet) and the api tests&apos; Packed.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670205</commentid>
    <comment_count>11</comment_count>
      <attachid>403897</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 11:56:45 -0700</bug_when>
    <thetext>Created attachment 403897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670214</commentid>
    <comment_count>12</comment_count>
      <attachid>403897</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 12:18:57 -0700</bug_when>
    <thetext>Comment on attachment 403897
Patch

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

&gt; Source/WTF/wtf/Packed.h:166
&gt; +        // Shift bit 47 to high order bit, then arithmetic shift back.
&gt; +        // If value is different, address is not canonical.

Just remove these 2 lines.  It&apos;s frowned upon in WebKit code to have comments that say exactly the operations the code is doing as opposed to why it&apos;s doing it.

&gt; Source/WTF/wtf/Packed.h:167
&gt; +        ASSERT(bitwise_cast&lt;intptr_t&gt;(value) == bitwise_cast&lt;intptr_t&gt;(value) &lt;&lt; 16 &gt;&gt; 16);

Please put parens around bitwise_cast&lt;intptr_t&gt;(value) &lt;&lt; 16:
    ASSERT(bitwise_cast&lt;intptr_t&gt;(value) == (bitwise_cast&lt;intptr_t&gt;(value) &lt;&lt; 16) &gt;&gt; 16);

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:72
&gt; +#if CPU(X86_64)
&gt; +        // validate X86_64 &quot;higher half&quot; address
&gt; +        key = max = bitwise_cast&lt;uint8_t*&gt;(static_cast&lt;uintptr_t&gt;(-1));
&gt; +        EXPECT_EQ(key.get(), max);
&gt; +#endif

This isn&apos;t want I was getting at.  Your earlier patch was failing the API tests (see https://ews-build.webkit.org/#/builders/3/builds/28085) with the following details:

Failed
    TestWTF.WTF_Packed.AssignAndGet
        
        /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:67
        Expected equality of these values:
          key.get()
            Which is: 0xffffffffffffffff
          max
            Which is: 0xffffffffffff

The reason it failed is because the test fabricated an address in &quot;max&quot; of 0xffffffffffff, which is an invalid address according to the spec.  Naturally, the test would fail.

You should fix the test to handle the following cases:
    0xffff ffff ffff ffff
    0xffff ffff ffff if not X86_64
    0x7fff ffff ffff
    0x0001 2345 6789
    0x0000 0000 0000

Does that make sense?

Also, since the only difference here between each test case is the input pointer value, I would put these values in an array, and just run the test in a loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670217</commentid>
    <comment_count>13</comment_count>
      <attachid>403897</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 12:19:30 -0700</bug_when>
    <thetext>Comment on attachment 403897
Patch

r- because the patch needs more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670225</commentid>
    <comment_count>14</comment_count>
      <attachid>403897</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-09 12:37:06 -0700</bug_when>
    <thetext>Comment on attachment 403897
Patch

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

&gt; Source/WTF/wtf/Packed.h:147
&gt; +#if CPU(X86_64)

When doing that, please do it only in Solaris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670294</commentid>
    <comment_count>15</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 14:59:36 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
&gt; Comment on attachment 403897 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403897&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Packed.h:147
&gt; &gt; +#if CPU(X86_64)
&gt; 
&gt; When doing that, please do it only in Solaris.

I was planning to make the changes requested by Mark tomorrow, but the whole point of this patch is to provide support for X86_64 canonical addressing in webkit.  It is not just a Solaris thing.

If webkit does not want to do the right thing for X86_64, let me know and I will  just close the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670300</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-09 15:16:51 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #15)
&gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; Comment on attachment 403897 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403897&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/Packed.h:147
&gt; &gt; &gt; +#if CPU(X86_64)
&gt; &gt; 
&gt; &gt; When doing that, please do it only in Solaris.
&gt; 
&gt; I was planning to make the changes requested by Mark tomorrow, but the whole
&gt; point of this patch is to provide support for X86_64 canonical addressing in
&gt; webkit.  It is not just a Solaris thing.
&gt; 
&gt; If webkit does not want to do the right thing for X86_64, let me know and I
&gt; will  just close the bug.

Just to clarify.  I think Yusuke&apos;s point is not that this is strictly incorrect, but that it is unnecessary for any other OS than Solaris.  In WebKit, we do a lot of work to make sure the code is optimal.  While this extra work does not hurt in terms of correctness, it is guaranteed to be an effective no-op on any OS that is not Solaris because for other OSes, user space never has an address with a set bit 47.  So, it is not incorrect to omit this extra code for any OS that is not Solaris.  Yusuke&apos;s concern here is with regards to performance.

That said. I don&apos;t see WTF_OS_SOLARIS defined in PlatformOS.h.  So, in order to add the #if OS(SOLARIS) check, one would have to figure out how to detect a build targeting Solaris and add the WTF_OS_SOLARIS #define in PlatformOS.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670311</commentid>
    <comment_count>17</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-09 15:50:17 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #16)
&gt; (In reply to Jim Mason from comment #15)
&gt; &gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; &gt; Comment on attachment 403897 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403897&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WTF/wtf/Packed.h:147
&gt; &gt; &gt; &gt; +#if CPU(X86_64)
&gt; &gt; &gt; 
&gt; &gt; &gt; When doing that, please do it only in Solaris.
&gt; &gt; 
&gt; &gt; I was planning to make the changes requested by Mark tomorrow, but the whole
&gt; &gt; point of this patch is to provide support for X86_64 canonical addressing in
&gt; &gt; webkit.  It is not just a Solaris thing.
&gt; &gt; 
&gt; &gt; If webkit does not want to do the right thing for X86_64, let me know and I
&gt; &gt; will  just close the bug.
&gt; 
&gt; Just to clarify.  I think Yusuke&apos;s point is not that this is strictly
&gt; incorrect, but that it is unnecessary for any other OS than Solaris.  In
&gt; WebKit, we do a lot of work to make sure the code is optimal.  While this
&gt; extra work does not hurt in terms of correctness, it is guaranteed to be an
&gt; effective no-op on any OS that is not Solaris because for other OSes, user
&gt; space never has an address with a set bit 47.  So, it is not incorrect to
&gt; omit this extra code for any OS that is not Solaris.  Yusuke&apos;s concern here
&gt; is with regards to performance.

With -O2 or -O3 in gcc, the test becomes two instructions, a bit test and a jump.  Probably similar in other compilers.  In the PackedAlignedPtr getter, there is already a test -- if (isAlignmentShiftProfitable) -- that is probably a no op on most every platform.  This test is similarly trivial.

The reason I submit this patch is that an operating system can map memory however it likes.  If webkit does the right thing, it ensures every OS will work correctly, no matter what.  As it stands now, the operating system has to make &apos;the right choices&apos; based on the current assumptions, or webkit will fail, which means someone has to chase bugs down.

As you pointed out, the current TEST(WTF_Packed, AssignAndGet) is testing an address that is *invalid* for the X86_64 processor architecture.  And in the web assembly code, a signed value is being used for a pointer test.  Cleaning up these sorts of things helps make webkit robust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670396</commentid>
    <comment_count>18</comment_count>
      <attachid>403954</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-10 02:54:26 -0700</bug_when>
    <thetext>Created attachment 403954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670417</commentid>
    <comment_count>19</comment_count>
      <attachid>403960</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-10 05:22:01 -0700</bug_when>
    <thetext>Created attachment 403960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670418</commentid>
    <comment_count>20</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-10 05:29:44 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #12)
&gt; You should fix the test to handle the following cases:
&gt;     0xffff ffff ffff ffff
&gt;     0xffff ffff ffff if not X86_64
&gt;     0x7fff ffff ffff
&gt;     0x0001 2345 6789
&gt;     0x0000 0000 0000

Done.

As for, 0x123456789, I am running that test case for all 64-bit architectures (not just X86_64), while testing 0x12345678 on 32-bit.  If you want to do something else, let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670444</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-10 07:57:31 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #17)
&gt; (In reply to Mark Lam from comment #16)
&gt; &gt; (In reply to Jim Mason from comment #15)
&gt; &gt; &gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; &gt; &gt; Comment on attachment 403897 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=403897&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WTF/wtf/Packed.h:147
&gt; &gt; &gt; &gt; &gt; +#if CPU(X86_64)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; When doing that, please do it only in Solaris.
&gt; &gt; &gt; 
&gt; &gt; &gt; I was planning to make the changes requested by Mark tomorrow, but the whole
&gt; &gt; &gt; point of this patch is to provide support for X86_64 canonical addressing in
&gt; &gt; &gt; webkit.  It is not just a Solaris thing.
&gt; &gt; &gt; 
&gt; &gt; &gt; If webkit does not want to do the right thing for X86_64, let me know and I
&gt; &gt; &gt; will  just close the bug.
&gt; &gt; 
&gt; &gt; Just to clarify.  I think Yusuke&apos;s point is not that this is strictly
&gt; &gt; incorrect, but that it is unnecessary for any other OS than Solaris.  In
&gt; &gt; WebKit, we do a lot of work to make sure the code is optimal.  While this
&gt; &gt; extra work does not hurt in terms of correctness, it is guaranteed to be an
&gt; &gt; effective no-op on any OS that is not Solaris because for other OSes, user
&gt; &gt; space never has an address with a set bit 47.  So, it is not incorrect to
&gt; &gt; omit this extra code for any OS that is not Solaris.  Yusuke&apos;s concern here
&gt; &gt; is with regards to performance.
&gt; 
&gt; With -O2 or -O3 in gcc, the test becomes two instructions, a bit test and a
&gt; jump.  Probably similar in other compilers.  In the PackedAlignedPtr getter,
&gt; there is already a test -- if (isAlignmentShiftProfitable) -- that is
&gt; probably a no op on most every platform.  This test is similarly trivial.

isAlignmentShiftProfitable is a constexpr.  This check will be constant folded.  The shift will either be emitted unconditionally, or elided away.  Hence, this is not a justification for adding a conditional branch into this code, especially one that we know are not needed for OS(DARWIN), OS(LINUX) and OS(WIN).

Also, this get() accessor is used all over the place.  Yusuke is the engineer who applied PackedAlignedPtr pointers throughout the code, and he did a lot of benchmarking back then to ensure that there is no performance regression when it was applied.  I trust he has good reason to ask to have this #if&apos;d out.  This performance issue is also why I asked what OS you were seeing this on in the first place, and I tried to take the time to think about whether we really need this.  I would take Yusuke&apos;s word on this over mine.

&gt; The reason I submit this patch is that an operating system can map memory
&gt; however it likes.  If webkit does the right thing, it ensures every OS will
&gt; work correctly, no matter what.  As it stands now, the operating system has
&gt; to make &apos;the right choices&apos; based on the current assumptions, or webkit will
&gt; fail, which means someone has to chase bugs down.

Your claim here is not correct.  We&apos;re not assuming that the OS will make this choice.  We know for a fact that OS(DARWIN), OS(LINUX)  (see https://www.kernel.org/doc/html/latest/x86/x86_64/mm.html?highlight=virtual%20memory), and OS(WIN) (see https://docs.microsoft.com/en-us/windows/win32/memory/memory-limits-for-windows-releases#memory-and-address-space-limits) do not need this.  It&apos;s in their ABI.  And the software is written based on that ABI.  Solaris is the weird duck here.
 
&gt; As you pointed out, the current TEST(WTF_Packed, AssignAndGet) is testing an
&gt; address that is *invalid* for the X86_64 processor architecture.  And in the
&gt; web assembly code, a signed value is being used for a pointer test. 
&gt; Cleaning up these sorts of things helps make webkit robust.

Yes, there is value in this patch.  We&apos;re not rejecting it.  We&apos;re just trying to refine it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670455</commentid>
    <comment_count>22</comment_count>
      <attachid>403960</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-10 08:46:28 -0700</bug_when>
    <thetext>Comment on attachment 403960
Patch

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

Almost there.

&gt; Source/WTF/wtf/Packed.h:147
&gt; +#if CPU(X86_64)

Please do one of the following:
1. In PlatformOS.h, add a #define for WTF_OS_SOLARIS based on what gcc would define for Solaris.
    Change this line to `#if CPU(X86_64) &amp;&amp; OS(SOLARIS)`

Or ...

2. Change this line to `#if CPU(X86_64) &amp;&amp; !(OS(DARWIN) || OS(LINUX) || OS(WINDOWS))`

I prefer option (1) but if needed, I can accept option (2).

&gt; Source/WTF/wtf/Packed.h:154
&gt; +        // The AMD specification requires that the most significant 16
&gt; +        // bits of any virtual address, bits 48 through 63, must be
&gt; +        // copies of bit 47 (in a manner akin to sign extension).
&gt; +        //
&gt; +        // Reference: https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details
&gt; +        if (value &amp; 0x1ULL &lt;&lt; 47)
&gt; +            value |= 0xffffULL &lt;&lt; 48;

After thinking about this some more, I realized that this quirk only applies to X86_64 implementations that have 48 bit addresses.  The spec actually allows for implementations with &gt; 48 bit addresses.  However, I&apos;m not aware that those implementations actually exist today.  Also, lots of WebKit code relies on addresses not exceeding 48 bits.  

Please add the following just above this if statement:
        static_assert(OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) == 48);

This will prevent this quirk from silently causing bad behavior on x86_64 implementations that have &gt; 48 bits addressing (not that a fix will be easy).  It also documents our expectation.

&gt; Source/WTF/wtf/Packed.h:166
&gt; +#if CPU(X86_64)
&gt; +        // Ensure bits 48-63 track the value of bit 47, per the AMD spec.
&gt; +        ASSERT(bitwise_cast&lt;intptr_t&gt;(value) == (bitwise_cast&lt;intptr_t&gt;(value) &lt;&lt; 16) &gt;&gt; 16);
&gt; +#endif

The reason I asked for this before is because it will catch the issue if someone ends up building for another OS with an unusual virtual memory map like Solaris.  Having this assertion here allows us to use Option 1 above so that all ports will get the optimized behavior by default.  And if it doesn&apos;t work for any specific port, it won&apos;t fail silently anymore.

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:67
&gt; +        uint8_t* candidates[] =
&gt; +            {
&gt; +                0,

WebKit style requires that this be written as:
        uint8_t* candidates[] = {
            0,
            ...
        };

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:83
&gt; +#if CPU(ADDRESS64)
&gt; +                bitwise_cast&lt;uint8_t*&gt;(0x123456789ULL),
&gt; +#else
&gt; +                bitwise_cast&lt;uint8_t*&gt;(0x12345678UL),
&gt; +#endif
&gt; +#if CPU(X86_64)
&gt; +                bitwise_cast&lt;uint8_t*&gt;((1ULL &lt;&lt; 47) - 1), // max lower half
&gt; +                bitwise_cast&lt;uint8_t*&gt;(~((1ULL &lt;&lt; 47) - 1)), // min higher half
&gt; +                bitwise_cast&lt;uint8_t*&gt;(static_cast&lt;uintptr_t&gt;(-1)), // max higher half
&gt; +#else
&gt; +                // Caution: This test should be processor-specific.
&gt; +                //
&gt; +                // In absence of a specific test, assume that all
&gt; +                // bits of the EFFECTIVE_ADDRESS_WIDTH can be used.
&gt; +                bitwise_cast&lt;uint8_t*&gt;(static_cast&lt;uintptr_t&gt;((1ULL &lt;&lt; OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1)),
&gt; +#endif

I would write these as:

        bitwise_cast&lt;uint8_t*&gt;(static_cast&lt;uintptr_t&gt;((1ULL &lt;&lt; (OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) / 2)) - 1)),
        bitwise_cast&lt;uint8_t*&gt;(static_cast&lt;uintptr_t&gt;((1ULL &lt;&lt; (OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) - 1)) - 1)),
#if CPU(X86_64) &amp;&amp; OS(SOLARIS)
        bitwise_cast&lt;uint8_t*&gt;(~((1ULL &lt;&lt; 47) - 1)), // min higher half
        bitwise_cast&lt;uint8_t*&gt;(std::numeric_limits&lt;uintptr_t&gt;::max()),
#else
        bitwise_cast&lt;uint8_t*&gt;(static_cast&lt;uintptr_t&gt;((1ULL &lt;&lt; OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1)),
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670456</commentid>
    <comment_count>23</comment_count>
      <attachid>403960</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-10 08:48:05 -0700</bug_when>
    <thetext>Comment on attachment 403960
Patch

r- because the patch needs a bit more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670499</commentid>
    <comment_count>24</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-10 10:38:32 -0700</bug_when>
    <thetext>You have given this a lot of thought, Mark.  Thank you!  This is becoming quite good.

&gt; 1. In PlatformOS.h, add a #define for WTF_OS_SOLARIS based on what gcc would
&gt; define for Solaris.
&gt;     Change this line to `#if CPU(X86_64) &amp;&amp; OS(SOLARIS)`
&gt; 
&gt; Or ...
&gt; 
&gt; 2. Change this line to `#if CPU(X86_64) &amp;&amp; !(OS(DARWIN) || OS(LINUX) ||
&gt; OS(WINDOWS))`
&gt; 
&gt; I prefer option (1) but if needed, I can accept option (2).

How about a touch of option (1) and option (2)?  Instead of bringing OS-specifics into the test, we could define a new symbol in one of Platform* files, something like USE_CANONICAL_ADDRESSING.  There, it could be setup as an &apos;opt-in&apos; option, like (1) above:

    #if CPU(X86_64) &amp;&amp; (OS(SOLARIS) || ...)
    #define USE_CANONICAL_ADDRESSING
    #endif

or opt-out, like (2) above:

    #if CPU(X86_64) &amp;&amp; !(OS(DARWIN) || ...)
    #define USE_CANONICAL_ADDRESSING
    #endif

and the code in Packed.h would read something like:
    #if USE(CANONICAL_ADDRESSING)
        if (value &amp; 0x1ULL &lt;&lt; 47)
            value |= 0xffffULL &lt;&lt; 48;
    #endif

It avoids having to go touch the source file if we want to change from opt-in to opt-out, or add or remove an OS from the list.

&gt; After thinking about this some more, I realized that this quirk only applies
&gt; to X86_64 implementations that have 48 bit addresses.  The spec actually
&gt; allows for implementations with &gt; 48 bit addresses.  However, I&apos;m not aware
&gt; that those implementations actually exist today.  Also, lots of WebKit code
&gt; relies on addresses not exceeding 48 bits.  
&gt; 
&gt; Please add the following just above this if statement:
&gt;         static_assert(OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) == 48);
&gt; 
&gt; This will prevent this quirk from silently causing bad behavior on x86_64
&gt; implementations that have &gt; 48 bits addressing (not that a fix will be
&gt; easy).  It also documents our expectation.


What if we use EFFECTIVE_ADDRESS_WIDTH to determine the bit and mask?  e.g,

    #if USE(CANONICAL_ADDRESSING)
        if (value &amp; 0x1ULL &lt;&lt; (OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) - 1))
            value |= ~((1ULL &lt;&lt; OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1);
    #endif

The ASSERT in the setter could be updated similarly.

In this way, if a 56-bit CPU emerges down the road, no adjustment to this code would be needed.  (NaN boxing and other webkit code that rely on 48 bits is another matter... but at least this code would continue to work as expected...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670986</commentid>
    <comment_count>25</comment_count>
      <attachid>404134</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-13 02:14:05 -0700</bug_when>
    <thetext>Created attachment 404134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670994</commentid>
    <comment_count>26</comment_count>
      <attachid>404137</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-13 02:50:33 -0700</bug_when>
    <thetext>Created attachment 404137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670998</commentid>
    <comment_count>27</comment_count>
      <attachid>404139</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-13 03:12:19 -0700</bug_when>
    <thetext>Created attachment 404139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671009</commentid>
    <comment_count>28</comment_count>
      <attachid>404143</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-13 05:55:48 -0700</bug_when>
    <thetext>Created attachment 404143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671187</commentid>
    <comment_count>29</comment_count>
      <attachid>404143</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-13 15:14:23 -0700</bug_when>
    <thetext>Comment on attachment 404143
Patch

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

&gt; Source/WTF/wtf/Packed.h:147
&gt; +#if HAVE(CANONICAL_ADDRESSING)

This is wrong because the name does not match what the code is trying to do.  x86_64 on OS(DARWIN), OS(LINUX), and OS(WINDOWS) all have canonical addresses, but none of them want this.  Really, this is truly an OS(SOLARIS) thing.  There&apos;s currently no evidence that any other OS would lay out memory this way.  Declaring this HAVE(CANONICAL_ADDRESSING) condition is just opening a door for confusion later because it doesn&apos;t really guard what it says.

Please just use #if OS(SOLARIS) here.

&gt; Source/WTF/wtf/Packed.h:151
&gt; +        //

You can add a comment here saying: &quot;No other OS needs to do this because they do not map user space data into any address range with bit 47 set.&quot;

&gt; Source/WTF/wtf/Packed.h:172
&gt; +#if HAVE(CANONICAL_ADDRESSING)
&gt; +        // Ensure the address is in canonical form (see note above).
&gt; +        ASSERT(bitwise_cast&lt;intptr_t&gt;(value) == (bitwise_cast&lt;intptr_t&gt;(value)
&gt; +            &lt;&lt; (64 - OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)))
&gt; +            &gt;&gt; (64 - OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)));
&gt; +#elif CPU(X86_64)
&gt; +        // Ensure the address is in the lower half.
&gt; +        // If this assert fails, you may need to enable CANONICAL_ADDRESSING.
&gt; +        ASSERT(value &lt; 1ULL &lt;&lt; (OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) - 1));
&gt; +#endif

Let&apos;s remove this.  There&apos;s a much easier way to do this assert.

After the memcpy below, add:
    ASSERT(bitwise_cast&lt;uintptr_t&gt;(get()) == value);

This is also an improvement because it tests how we will actually encode the address bits in the packed pointer, not how we &quot;expect&quot; we will encode the address bits.  And there&apos;s no need for any conditionals.  The assertion should always be true.

&gt; Source/WTF/wtf/PlatformHave.h:678
&gt; +#if CPU(X86_64) &amp;&amp; !(OS(DARWIN) || OS(LINUX) || OS(WINDOWS))
&gt; +#define HAVE_CANONICAL_ADDRESSING 1
&gt; +#endif

Please remove this.  Instead, please add the following to PlatformOS.h:

#if defined(__sun)
#define WTF_OS_SOLARIS 1
#endif

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:69
&gt; +#if HAVE(CANONICAL_ADDRESSING)

Let&apos;s use `#if OS(SOLARIS)` instead.

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:72
&gt; +#elif !CPU(X86_64)

Use `#else`

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:76
&gt; +            // Caution: This test should be processor-specific.
&gt; +            //
&gt; +            // In absence of a specific test, assume that all
&gt; +            // bits of the EFFECTIVE_ADDRESS_WIDTH can be used.

Just say &quot;Other OSes will never allocate user space addresses with bit 47 (i.e. OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) - 1) set.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671306</commentid>
    <comment_count>30</comment_count>
      <attachid>404218</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-14 02:42:53 -0700</bug_when>
    <thetext>Created attachment 404218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671349</commentid>
    <comment_count>31</comment_count>
      <attachid>404218</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-14 06:22:46 -0700</bug_when>
    <thetext>Comment on attachment 404218
Patch

I just noticed that you’re missing Tools/ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671351</commentid>
    <comment_count>32</comment_count>
      <attachid>404218</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-14 06:29:41 -0700</bug_when>
    <thetext>Comment on attachment 404218
Patch

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

r- because of the missing ChangeLog.

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:69
&gt; +#if CPU(X86_64) &amp;&amp; !(OS(DARWIN) || OS(LINUX) || OS(WINDOWS))

nit: while you’re adding the ChangeLog, can you also flip these 2 cases so that we can test for CPU(X86_64) &amp;&amp; (OS(DARWIN) || OS(LINUX) || OS(WINDOWS)) instead?  It’s better to test for a positive condition than a negative one.

&gt; Tools/TestWebKitAPI/Tests/WTF/Packed.cpp:73
&gt; +            // Other OSes will never allocate user space addresses with

Since we’re no testing for OS(SOLARIS), can you change this comment to say “These OSes” instead of “Other OSes”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671356</commentid>
    <comment_count>33</comment_count>
      <attachid>404233</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-14 07:22:17 -0700</bug_when>
    <thetext>Created attachment 404233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671357</commentid>
    <comment_count>34</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-14 07:28:51 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #32)
&gt; nit: while you’re adding the ChangeLog, can you also flip these 2 cases so
&gt; that we can test for CPU(X86_64) &amp;&amp; (OS(DARWIN) || OS(LINUX) || OS(WINDOWS))
&gt; instead?  It’s better to test for a positive condition than a negative one.

I am having a doubt now.  The #else will now run for all CPUs and OSes not named in the #if, not just X86_64.  I don&apos;t think that is right.  Anything not X86_64 ought to be running the same test as in the #if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671359</commentid>
    <comment_count>35</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-14 07:32:11 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #34)
&gt; (In reply to Mark Lam from comment #32)
&gt; &gt; nit: while you’re adding the ChangeLog, can you also flip these 2 cases so
&gt; &gt; that we can test for CPU(X86_64) &amp;&amp; (OS(DARWIN) || OS(LINUX) || OS(WINDOWS))
&gt; &gt; instead?  It’s better to test for a positive condition than a negative one.
&gt; 
&gt; I am having a doubt now.  The #else will now run for all CPUs and OSes not
&gt; named in the #if, not just X86_64.  I don&apos;t think that is right.  Anything
&gt; not X86_64 ought to be running the same test as in the #if.

I think the correct test with the sense reversed would be:

#if !CPU(X86_64) || OS(DARWIN) || OS(LINUX) || OS(WINDOWS)
   ... run the legacy test ...
#else
   ... run the new min/max upper test ...
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671360</commentid>
    <comment_count>36</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-14 07:39:05 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #35)
&gt; (In reply to Jim Mason from comment #34)
&gt; &gt; (In reply to Mark Lam from comment #32)
&gt; &gt; &gt; nit: while you’re adding the ChangeLog, can you also flip these 2 cases so
&gt; &gt; &gt; that we can test for CPU(X86_64) &amp;&amp; (OS(DARWIN) || OS(LINUX) || OS(WINDOWS))
&gt; &gt; &gt; instead?  It’s better to test for a positive condition than a negative one.
&gt; &gt; 
&gt; &gt; I am having a doubt now.  The #else will now run for all CPUs and OSes not
&gt; &gt; named in the #if, not just X86_64.  I don&apos;t think that is right.  Anything
&gt; &gt; not X86_64 ought to be running the same test as in the #if.
&gt; 
&gt; I think the correct test with the sense reversed would be:
&gt; 
&gt; #if !CPU(X86_64) || OS(DARWIN) || OS(LINUX) || OS(WINDOWS)
&gt;    ... run the legacy test ...
&gt; #else
&gt;    ... run the new min/max upper test ...
&gt; #endif

You are correct.  Sorry about that.  Can you fix the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671362</commentid>
    <comment_count>37</comment_count>
      <attachid>404235</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-14 07:42:41 -0700</bug_when>
    <thetext>Created attachment 404235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671364</commentid>
    <comment_count>38</comment_count>
      <attachid>404235</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-14 08:09:11 -0700</bug_when>
    <thetext>Comment on attachment 404235
Patch

r=me.  Jim, if you’re not a committer, the way to get the patch committed is to set the cq flag to ?.  Thereafter, any WebKit committer or reviewer can cq+ it to automatically commit it.  That said, I’d wait for the api test EWS bots to be green before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671590</commentid>
    <comment_count>39</comment_count>
      <attachid>404235</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-14 16:38:17 -0700</bug_when>
    <thetext>Comment on attachment 404235
Patch

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

The patch looks ready to land.  If you set the cq? flag, we can cq+ it to land it.

&gt; Source/WTF/wtf/Packed.h:154
&gt; +        if (value &amp; 0x1ULL &lt;&lt; (OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) - 1))
&gt; +            value |= ~((1ULL &lt;&lt; OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1);

FWIW, after thinking about this some more, I think you can implement a fast version of this:
    unsigned shiftBits = countOfBits&lt;uintptr_t&gt; - OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH);
    value = (bitwise_cast&lt;intptr_t&gt;(value) &lt;&lt; shiftBits) &gt;&gt; shiftBits;

The CPU should be able to compute the shifts much faster than the masking + conditional branch + masking.  Plus the bytes needed to encode the shift instructions is probably less too.

Jim, if you want to apply this, you&apos;ll have to build and test it out on your Solaris machine yourself to make sure it works first.  The EWS bots will only ensure that the patch does not introduce bugs to other ports.  They won&apos;t be able to test its correctness since this code is not needed for other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671687</commentid>
    <comment_count>40</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-15 01:34:11 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #39)
&gt; FWIW, after thinking about this some more, I think you can implement a fast
&gt; version of this:
&gt;     unsigned shiftBits = countOfBits&lt;uintptr_t&gt; -
&gt; OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH);
&gt;     value = (bitwise_cast&lt;intptr_t&gt;(value) &lt;&lt; shiftBits) &gt;&gt; shiftBits;
&gt; 
&gt; The CPU should be able to compute the shifts much faster than the masking +
&gt; conditional branch + masking.  Plus the bytes needed to encode the shift
&gt; instructions is probably less too.

Thanks for the suggestion, Mark.  I think you&apos;re right.  The old way generates something like this:

	btq	$47, %rax
	jnc	.L2
	movabsq	$-281474976710656, %rdx
	orq	%rdx, %rax
    .L2:

while your revision generates this:

        salq    $16, %rax
        sarq    $16, %rax

I am going to apply the revision, but will first validate in my environment before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671702</commentid>
    <comment_count>41</comment_count>
      <attachid>404330</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-15 04:53:01 -0700</bug_when>
    <thetext>Created attachment 404330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671740</commentid>
    <comment_count>42</comment_count>
      <attachid>404330</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-15 08:06:09 -0700</bug_when>
    <thetext>Comment on attachment 404330
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671741</commentid>
    <comment_count>43</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-15 08:13:29 -0700</bug_when>
    <thetext>/Volumes/Data/worker/Commit-Queue/build/Source/JavaScriptCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671743</commentid>
    <comment_count>44</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-15 08:19:49 -0700</bug_when>
    <thetext>(In reply to EWS from comment #43)
&gt; /Volumes/Data/worker/Commit-Queue/build/Source/JavaScriptCore/ChangeLog
&gt; neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or
&gt; &quot;Rubber stamp&quot; (case insensitive).

Is this something that I need to fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671748</commentid>
    <comment_count>45</comment_count>
      <attachid>404344</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-15 08:34:36 -0700</bug_when>
    <thetext>Created attachment 404344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671751</commentid>
    <comment_count>46</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-07-15 08:37:17 -0700</bug_when>
    <thetext>(In reply to Jim Mason from comment #44)
&gt; (In reply to EWS from comment #43)
&gt; &gt; /Volumes/Data/worker/Commit-Queue/build/Source/JavaScriptCore/ChangeLog
&gt; &gt; neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or
&gt; &gt; &quot;Rubber stamp&quot; (case insensitive).
&gt; 
&gt; Is this something that I need to fix?

Looks like it was missing Reviewed by NOBODY (OOPS!) in the ChangeLog.

Just updated the ChangeLog entries.  Let&apos;s try it again.  Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671770</commentid>
    <comment_count>47</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-15 09:32:06 -0700</bug_when>
    <thetext>Committed r264400: &lt;https://trac.webkit.org/changeset/264400&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404344.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671771</commentid>
    <comment_count>48</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-15 09:33:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65609790&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403873</attachid>
            <date>2020-07-09 09:06:16 -0700</date>
            <delta_ts>2020-07-09 11:56:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200709170615.patch</filename>
            <type>text/plain</type>
            <size>3570</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE3IEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgICAgICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2
YWx1ZSA8PD0gYWxpZ25tZW50U2hpZnRTaXplOworCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAg
Ly8gVGhlIEFNRCBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIG1vc3Qgc2lnbmlmaWNh
bnQgMTYKKyAgICAgICAgLy8gYml0cyBvZiBhbnkgdmlydHVhbCBhZGRyZXNzLCBiaXRzIDQ4IHRo
cm91Z2ggNjMsIG11c3QgYmUKKyAgICAgICAgLy8gY29waWVzIG9mIGJpdCA0NyAoaW4gYSBtYW5u
ZXIgYWtpbiB0byBzaWduIGV4dGVuc2lvbikuCisgICAgICAgIC8vCisgICAgICAgIC8vIFJlZmVy
ZW5jZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWDg2LTY0I1ZpcnR1YWxfYWRkcmVz
c19zcGFjZV9kZXRhaWxzCisgICAgICAgIGlmICh2YWx1ZSAmIDB4MVVMTCA8PCA0NykKKyAgICAg
ICAgICAgIHZhbHVlIHw9IDB4ZmZmZlVMTCA8PCA0ODsKKyNlbmRpZgorCiAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8VCo+KHZhbHVlKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403897</attachid>
            <date>2020-07-09 11:56:45 -0700</date>
            <delta_ts>2020-07-10 02:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200709195643.patch</filename>
            <type>text/plain</type>
            <size>4774</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywyOSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAg
dmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIENQVShYODZfNjQpCisgICAgICAg
IC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBtb3N0IHNpZ25pZmlj
YW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRkcmVzcywgYml0cyA0OCB0
aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBiaXQgNDcgKGluIGEgbWFu
bmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLworICAgICAgICAvLyBSZWZl
cmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02NCNWaXJ0dWFsX2FkZHJl
c3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFVTEwgPDwgNDcpCisgICAg
ICAgICAgICB2YWx1ZSB8PSAweGZmZmZVTEwgPDwgNDg7CisjZW5kaWYKKwogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXQoVCogcGFz
c2VkVmFsdWUpCiAgICAgewogICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihwYXNzZWRWYWx1ZSk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgLy8gRW5z
dXJlIGJpdHMgNDgtNjMgdHJhY2sgdGhlIHZhbHVlIG9mIGJpdCA0NywgcGVyIHRoZSBBTUQgc3Bl
Yy4KKyAgICAgICAgLy8gU2hpZnQgYml0IDQ3IHRvIGhpZ2ggb3JkZXIgYml0LCB0aGVuIGFyaXRo
bWV0aWMgc2hpZnQgYmFjay4KKyAgICAgICAgLy8gSWYgdmFsdWUgaXMgZGlmZmVyZW50LCBhZGRy
ZXNzIGlzIG5vdCBjYW5vbmljYWwuCisgICAgICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KHZhbHVlKSA9PSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSA8PCAxNiA+PiAxNik7
CisjZW5kaWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAg
ICAgICAgdmFsdWUgPj49IGFsaWdubWVudFNoaWZ0U2l6ZTsKICNpZiBDUFUoTElUVExFX0VORElB
TikKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAkocmV2aXNp
b24gMjY0MTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgVEVTVChXVEZfUGFja2VkLCBBc3NpZ25B
bmRHZXQpCiAgICAgICAgIHVpbnQ4X3QqIG1heCA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigoKDFVTEwpIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERS
RVNTX1dJRFRIKSkgLSAxKSk7CiAgICAgICAgIGtleSA9IG1heDsKICAgICAgICAgRVhQRUNUX0VR
KGtleS5nZXQoKSwgbWF4KTsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAvLyB2YWxpZGF0ZSBY
ODZfNjQgImhpZ2hlciBoYWxmIiBhZGRyZXNzCisgICAgICAgIGtleSA9IG1heCA9IGJpdHdpc2Vf
Y2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigtMSkpOworICAgICAgICBFWFBF
Q1RfRVEoa2V5LmdldCgpLCBtYXgpOworI2VuZGlmCiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403954</attachid>
            <date>2020-07-10 02:54:26 -0700</date>
            <delta_ts>2020-07-10 05:21:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200710105425.patch</filename>
            <type>text/plain</type>
            <size>5542</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywyNyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAg
dmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIENQVShYODZfNjQpCisgICAgICAg
IC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBtb3N0IHNpZ25pZmlj
YW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRkcmVzcywgYml0cyA0OCB0
aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBiaXQgNDcgKGluIGEgbWFu
bmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLworICAgICAgICAvLyBSZWZl
cmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02NCNWaXJ0dWFsX2FkZHJl
c3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFVTEwgPDwgNDcpCisgICAg
ICAgICAgICB2YWx1ZSB8PSAweGZmZmZVTEwgPDwgNDg7CisjZW5kaWYKKwogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXQoVCogcGFz
c2VkVmFsdWUpCiAgICAgewogICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihwYXNzZWRWYWx1ZSk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgLy8gRW5z
dXJlIGJpdHMgNDgtNjMgdHJhY2sgdGhlIHZhbHVlIG9mIGJpdCA0NywgcGVyIHRoZSBBTUQgc3Bl
Yy4KKyAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUpID09IChiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSA8PCAxNikgPj4gMTYpOworI2VuZGlmCiAgICAgICAg
IGlmIChpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSkKICAgICAgICAgICAgIHZhbHVlID4+PSBh
bGlnbm1lbnRTaGlmdFNpemU7CiAjaWYgQ1BVKExJVFRMRV9FTkRJQU4pCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHJldmlzaW9uIDI2NDE3MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDkgKzYyLDI3IEBAIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQogICAgIHsKICAg
ICAgICAgUGFja2VkUHRyPHVpbnQ4X3Q+IGtleSB7IG51bGxwdHIgfTsKICAgICAgICAgc3RhdGlj
X2Fzc2VydChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgIT0gNjQsICIiKTsK
LSAgICAgICAgdWludDhfdCogbWF4ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KCgoMVVMTCkgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lE
VEgpKSAtIDEpKTsKLSAgICAgICAga2V5ID0gbWF4OwotICAgICAgICBFWFBFQ1RfRVEoa2V5Lmdl
dCgpLCBtYXgpOworICAgICAgICB1aW50OF90KiBjYW5kaWRhdGVzW10gPQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPigweDEyMzQ1Njc4OVVMTCksCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgICAgICAgICBi
aXR3aXNlX2Nhc3Q8dWludDhfdCo+KCgxVUxMIDw8IDQ3KSAtIDEpLCAvLyBtYXggbG93ZXIgaGFs
ZgorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4ofigoMVVMTCA8PCA0Nykg
LSAxKSksIC8vIG1pbiBoaWdoZXIgaGFsZgorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigtMSkpLCAvLyBtYXggaGlnaGVyIGhhbGYK
KyNlbHNlCisgICAgICAgICAgICAgICAgLy8gQ2F1dGlvbjogVGhpcyB0ZXN0IHNob3VsZCBiZSBw
cm9jZXNzb3Itc3BlY2lmaWMuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAv
LyBJbiBhYnNlbmNlIG9mIGEgc3BlY2lmaWMgdGVzdCwgYXNzdW1lIHRoYXQgYWxsCisgICAgICAg
ICAgICAgICAgLy8gYml0cyBvZiB0aGUgRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggY2FuIGJlIHVz
ZWQuCisgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSkg
LSAxKSksCisjZW5kaWYKKyAgICAgICAgICAgIH07CisgICAgICAgIGludCBjb3VudCA9IHNpemVv
ZihjYW5kaWRhdGVzKSAvIHNpemVvZih1aW50OF90Kik7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tpXTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShrZXkuZ2V0KCksIGNhbmRpZGF0ZXNbaV0pOworICAgICAgICB9
CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403960</attachid>
            <date>2020-07-10 05:22:01 -0700</date>
            <delta_ts>2020-07-13 02:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200710132200.patch</filename>
            <type>text/plain</type>
            <size>5632</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywyNyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAg
dmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIENQVShYODZfNjQpCisgICAgICAg
IC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBtb3N0IHNpZ25pZmlj
YW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRkcmVzcywgYml0cyA0OCB0
aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBiaXQgNDcgKGluIGEgbWFu
bmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLworICAgICAgICAvLyBSZWZl
cmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02NCNWaXJ0dWFsX2FkZHJl
c3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFVTEwgPDwgNDcpCisgICAg
ICAgICAgICB2YWx1ZSB8PSAweGZmZmZVTEwgPDwgNDg7CisjZW5kaWYKKwogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXQoVCogcGFz
c2VkVmFsdWUpCiAgICAgewogICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihwYXNzZWRWYWx1ZSk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgLy8gRW5z
dXJlIGJpdHMgNDgtNjMgdHJhY2sgdGhlIHZhbHVlIG9mIGJpdCA0NywgcGVyIHRoZSBBTUQgc3Bl
Yy4KKyAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUpID09IChiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSA8PCAxNikgPj4gMTYpOworI2VuZGlmCiAgICAgICAg
IGlmIChpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSkKICAgICAgICAgICAgIHZhbHVlID4+PSBh
bGlnbm1lbnRTaGlmdFNpemU7CiAjaWYgQ1BVKExJVFRMRV9FTkRJQU4pCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHJldmlzaW9uIDI2NDE3MCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDkgKzYyLDMxIEBAIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQogICAgIHsKICAg
ICAgICAgUGFja2VkUHRyPHVpbnQ4X3Q+IGtleSB7IG51bGxwdHIgfTsKICAgICAgICAgc3RhdGlj
X2Fzc2VydChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgIT0gNjQsICIiKTsK
LSAgICAgICAgdWludDhfdCogbWF4ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KCgoMVVMTCkgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lE
VEgpKSAtIDEpKTsKLSAgICAgICAga2V5ID0gbWF4OwotICAgICAgICBFWFBFQ1RfRVEoa2V5Lmdl
dCgpLCBtYXgpOworICAgICAgICB1aW50OF90KiBjYW5kaWRhdGVzW10gPQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIDAsCisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICAgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KDB4MTIzNDU2Nzg5VUxMKSwKKyNlbHNlCisgICAgICAg
ICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPigweDEyMzQ1Njc4VUwpLAorI2VuZGlmCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KCgx
VUxMIDw8IDQ3KSAtIDEpLCAvLyBtYXggbG93ZXIgaGFsZgorICAgICAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50OF90Kj4ofigoMVVMTCA8PCA0NykgLSAxKSksIC8vIG1pbiBoaWdoZXIgaGFs
ZgorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigtMSkpLCAvLyBtYXggaGlnaGVyIGhhbGYKKyNlbHNlCisgICAgICAgICAgICAgICAg
Ly8gQ2F1dGlvbjogVGhpcyB0ZXN0IHNob3VsZCBiZSBwcm9jZXNzb3Itc3BlY2lmaWMuCisgICAg
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBJbiBhYnNlbmNlIG9mIGEgc3BlY2lm
aWMgdGVzdCwgYXNzdW1lIHRoYXQgYWxsCisgICAgICAgICAgICAgICAgLy8gYml0cyBvZiB0aGUg
RUZGRUNUSVZFX0FERFJFU1NfV0lEVEggY2FuIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgYml0
d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IE9TX0NP
TlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSkgLSAxKSksCisjZW5kaWYKKyAgICAgICAg
ICAgIH07CisgICAgICAgIGludCBjb3VudCA9IHNpemVvZihjYW5kaWRhdGVzKSAvIHNpemVvZih1
aW50OF90Kik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAg
ICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tpXTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShrZXku
Z2V0KCksIGNhbmRpZGF0ZXNbaV0pOworICAgICAgICB9CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404134</attachid>
            <date>2020-07-13 02:14:05 -0700</date>
            <delta_ts>2020-07-13 02:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200713101404.patch</filename>
            <type>text/plain</type>
            <size>6507</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywzMyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAg
dmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIEhBVkUoQ0FOT05JQ0FMX0FERFJF
U1NJTkcpCisgICAgICAgIC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRo
ZSBtb3N0IHNpZ25pZmljYW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRk
cmVzcywgYml0cyA0OCB0aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBi
aXQgNDcgKGluIGEgbWFubmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLwor
ICAgICAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02
NCNWaXJ0dWFsX2FkZHJlc3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFV
TEwgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0gMSkKKyAgICAgICAg
ICAgIHZhbHVlIHw9IH4oKDFVTEwgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lE
VEgpKSAtIDEpOworI2VuZGlmCisKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4odmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQgc2V0KFQqIHBhc3NlZFZhbHVlKQogICAgIHsKICAgICAg
ICAgdWludHB0cl90IHZhbHVlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGFzc2VkVmFsdWUp
OworI2lmIEhBVkUoQ0FOT05JQ0FMX0FERFJFU1NJTkcpCisgICAgICAgIC8vIEVuc3VyZSB0aGUg
YWRkcmVzcyBpcyBpbiBjYW5vbmljYWwgZm9ybSAoc2VlIG5vdGUgYWJvdmUpLgorICAgICAgICBB
U1NFUlQoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgPT0gKGJpdHdpc2VfY2FzdDxpbnRw
dHJfdD4odmFsdWUpCisgICAgICAgICAgICA8PCA2NCAtIE9TX0NPTlNUQU5UKEVGRkVDVElWRV9B
RERSRVNTX1dJRFRIKSkKKyAgICAgICAgICAgID4+IDY0IC0gT1NfQ09OU1RBTlQoRUZGRUNUSVZF
X0FERFJFU1NfV0lEVEgpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIC8vIEVuc3VyZSB0
aGUgYWRkcmVzcyBpcyBpbiB0aGUgbG93ZXIgaGFsZi4KKyAgICAgICAgLy8gSWYgdGhpcyBhc3Nl
cnQgZmFpbHMsIHlvdSBtYXkgbmVlZCB0byBlbmFibGUgQ0FOT05JQ0FMX0FERFJFU1NJTkcuCisg
ICAgICAgIEFTU0VSVCh2YWx1ZSA8IDFVTEwgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJF
U1NfV0lEVEgpIC0gMSk7CisjZW5kaWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9m
aXRhYmxlKQogICAgICAgICAgICAgdmFsdWUgPj49IGFsaWdubWVudFNoaWZ0U2l6ZTsKICNpZiBD
UFUoTElUVExFX0VORElBTikKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjQx
NzApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjcyLDMgKzY3Miw3IEBACiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTYwMAogI2RlZmluZSBIQVZFX0FQUF9BQ0NFTlRfQ09MT1JTIDEK
ICNlbmRpZgorCisjaWYgQ1BVKFg4Nl82NCkgJiYgIShPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8
fCBPUyhXSU5ET1dTKSkKKyNkZWZpbmUgSEFWRV9DQU5PTklDQUxfQUREUkVTU0lORyAxCisjZW5k
aWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAkocmV2aXNp
b24gMjY0MTcwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsMjYgQEAgVEVTVChXVEZfUGFja2VkLCBBc3NpZ25B
bmRHZXQpCiAgICAgewogICAgICAgICBQYWNrZWRQdHI8dWludDhfdD4ga2V5IHsgbnVsbHB0ciB9
OwogICAgICAgICBzdGF0aWNfYXNzZXJ0KE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJ
RFRIKSAhPSA2NCwgIiIpOwotICAgICAgICB1aW50OF90KiBtYXggPSBiaXR3aXNlX2Nhc3Q8dWlu
dDhfdCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKCgxVUxMKSA8PCBPU19DT05TVEFOVChFRkZF
Q1RJVkVfQUREUkVTU19XSURUSCkpIC0gMSkpOwotICAgICAgICBrZXkgPSBtYXg7Ci0gICAgICAg
IEVYUEVDVF9FUShrZXkuZ2V0KCksIG1heCk7CisgICAgICAgIHVpbnQ4X3QqIGNhbmRpZGF0ZXNb
XSA9IHsKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9B
RERSRVNTX1dJRFRIKSAvIDIpKSAtIDEpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4oKDFVTEwgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0gMSkg
LSAxKSwKKyNpZiBIQVZFKENBTk9OSUNBTF9BRERSRVNTSU5HKQorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnQ4X3QqPih+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNT
X1dJRFRIKSAtIDEpIC0gMSkpLCAvLyBtaW4gaGlnaGVyIGhhbGYKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50OF90Kj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSks
IC8vIG1heCBoaWdoZXIgaGFsZgorI2Vsc2UKKyAgICAgICAgICAgIC8vIENhdXRpb246IFRoaXMg
dGVzdCBzaG91bGQgYmUgcHJvY2Vzc29yLXNwZWNpZmljLgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIEluIGFic2VuY2Ugb2YgYSBzcGVjaWZpYyB0ZXN0LCBhc3N1bWUgdGhhdCBhbGwK
KyAgICAgICAgICAgIC8vIGJpdHMgb2YgdGhlIEVGRkVDVElWRV9BRERSRVNTX1dJRFRIIGNhbiBi
ZSB1c2VkLgorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSkg
LSAxKSksCisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGNvdW50ID0gc2l6ZW9mKGNh
bmRpZGF0ZXMpIC8gc2l6ZW9mKHVpbnQ4X3QqKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBjYW5kaWRhdGVzW2ldOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGtleS5nZXQoKSwgY2FuZGlkYXRlc1tpXSk7CisgICAgICAgIH0KICAg
ICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404137</attachid>
            <date>2020-07-13 02:50:33 -0700</date>
            <delta_ts>2020-07-13 03:12:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200713105031.patch</filename>
            <type>text/plain</type>
            <size>6519</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywzMyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAg
dmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIEhBVkUoQ0FOT05JQ0FMX0FERFJF
U1NJTkcpCisgICAgICAgIC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRo
ZSBtb3N0IHNpZ25pZmljYW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRk
cmVzcywgYml0cyA0OCB0aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBi
aXQgNDcgKGluIGEgbWFubmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLwor
ICAgICAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02
NCNWaXJ0dWFsX2FkZHJlc3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFV
TEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKQorICAgICAg
ICAgICAgdmFsdWUgfD0gfigoMVVMTCA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19X
SURUSCkpIC0gMSk7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih2
YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXQoVCogcGFzc2VkVmFsdWUpCiAgICAgewogICAg
ICAgICB1aW50cHRyX3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYXNzZWRWYWx1
ZSk7CisjaWYgSEFWRShDQU5PTklDQUxfQUREUkVTU0lORykKKyAgICAgICAgLy8gRW5zdXJlIHRo
ZSBhZGRyZXNzIGlzIGluIGNhbm9uaWNhbCBmb3JtIChzZWUgbm90ZSBhYm92ZSkuCisgICAgICAg
IEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSA9PSAoYml0d2lzZV9jYXN0PGlu
dHB0cl90Pih2YWx1ZSkKKyAgICAgICAgICAgIDw8ICg2NCAtIE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSkpCisgICAgICAgICAgICA+PiAoNjQgLSBPU19DT05TVEFOVChFRkZF
Q1RJVkVfQUREUkVTU19XSURUSCkpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIC8vIEVu
c3VyZSB0aGUgYWRkcmVzcyBpcyBpbiB0aGUgbG93ZXIgaGFsZi4KKyAgICAgICAgLy8gSWYgdGhp
cyBhc3NlcnQgZmFpbHMsIHlvdSBtYXkgbmVlZCB0byBlbmFibGUgQ0FOT05JQ0FMX0FERFJFU1NJ
TkcuCisgICAgICAgIEFTU0VSVCh2YWx1ZSA8IDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSAtIDEpKTsKKyNlbmRpZgogICAgICAgICBpZiAoaXNBbGlnbm1lbnRT
aGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA+Pj0gYWxpZ25tZW50U2hpZnRTaXpl
OwogI2lmIENQVShMSVRUTEVfRU5ESUFOKQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlz
aW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NzIsMyArNjcyLDcgQEAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwCiAjZGVmaW5lIEhBVkVfQVBQX0FDQ0VOVF9D
T0xPUlMgMQogI2VuZGlmCisKKyNpZiBDUFUoWDg2XzY0KSAmJiAhKE9TKERBUldJTikgfHwgT1Mo
TElOVVgpIHx8IE9TKFdJTkRPV1MpKQorI2RlZmluZSBIQVZFX0NBTk9OSUNBTF9BRERSRVNTSU5H
IDEKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3Bw
CShyZXZpc2lvbiAyNjQxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNr
ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2MiwyNiBAQCBURVNUKFdURl9QYWNrZWQs
IEFzc2lnbkFuZEdldCkKICAgICB7CiAgICAgICAgIFBhY2tlZFB0cjx1aW50OF90PiBrZXkgeyBu
dWxscHRyIH07CiAgICAgICAgIHN0YXRpY19hc3NlcnQoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FE
RFJFU1NfV0lEVEgpICE9IDY0LCAiIik7Ci0gICAgICAgIHVpbnQ4X3QqIG1heCA9IGJpdHdpc2Vf
Y2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoKDFVTEwpIDw8IE9TX0NPTlNU
QU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSkgLSAxKSk7Ci0gICAgICAgIGtleSA9IG1heDsK
LSAgICAgICAgRVhQRUNUX0VRKGtleS5nZXQoKSwgbWF4KTsKKyAgICAgICAgdWludDhfdCogY2Fu
ZGlkYXRlc1tdID0geworICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZG
RUNUSVZFX0FERFJFU1NfV0lEVEgpIC8gMikpIC0gMSkpLAorICAgICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnQ4X3QqPigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lE
VEgpIC0gMSkpIC0gMSksCisjaWYgSEFWRShDQU5PTklDQUxfQUREUkVTU0lORykKKyAgICAgICAg
ICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4ofigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNU
SVZFX0FERFJFU1NfV0lEVEgpIC0gMSkpIC0gMSkpLCAvLyBtaW4gaGlnaGVyIGhhbGYKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRy
X3Q+OjptYXgoKSksIC8vIG1heCBoaWdoZXIgaGFsZgorI2Vsc2UKKyAgICAgICAgICAgIC8vIENh
dXRpb246IFRoaXMgdGVzdCBzaG91bGQgYmUgcHJvY2Vzc29yLXNwZWNpZmljLgorICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgIC8vIEluIGFic2VuY2Ugb2YgYSBzcGVjaWZpYyB0ZXN0LCBhc3N1
bWUgdGhhdCBhbGwKKyAgICAgICAgICAgIC8vIGJpdHMgb2YgdGhlIEVGRkVDVElWRV9BRERSRVNT
X1dJRFRIIGNhbiBiZSB1c2VkLgorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERS
RVNTX1dJRFRIKSkgLSAxKSksCisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGNvdW50
ID0gc2l6ZW9mKGNhbmRpZGF0ZXMpIC8gc2l6ZW9mKHVpbnQ4X3QqKTsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBjYW5kaWRhdGVz
W2ldOworICAgICAgICAgICAgRVhQRUNUX0VRKGtleS5nZXQoKSwgY2FuZGlkYXRlc1tpXSk7Cisg
ICAgICAgIH0KICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404139</attachid>
            <date>2020-07-13 03:12:19 -0700</date>
            <delta_ts>2020-07-13 05:55:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200713111218.patch</filename>
            <type>text/plain</type>
            <size>6567</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0
MTQ4LgpJbmRleDogU291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Y2tlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywzMyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICAgICAgaWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAg
dmFsdWUgPDw9IGFsaWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIEhBVkUoQ0FOT05JQ0FMX0FERFJF
U1NJTkcpCisgICAgICAgIC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRo
ZSBtb3N0IHNpZ25pZmljYW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRk
cmVzcywgYml0cyA0OCB0aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBi
aXQgNDcgKGluIGEgbWFubmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLwor
ICAgICAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02
NCNWaXJ0dWFsX2FkZHJlc3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFV
TEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKQorICAgICAg
ICAgICAgdmFsdWUgfD0gfigoMVVMTCA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19X
SURUSCkpIC0gMSk7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih2
YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXQoVCogcGFzc2VkVmFsdWUpCiAgICAgewogICAg
ICAgICB1aW50cHRyX3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYXNzZWRWYWx1
ZSk7CisjaWYgSEFWRShDQU5PTklDQUxfQUREUkVTU0lORykKKyAgICAgICAgLy8gRW5zdXJlIHRo
ZSBhZGRyZXNzIGlzIGluIGNhbm9uaWNhbCBmb3JtIChzZWUgbm90ZSBhYm92ZSkuCisgICAgICAg
IEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSA9PSAoYml0d2lzZV9jYXN0PGlu
dHB0cl90Pih2YWx1ZSkKKyAgICAgICAgICAgIDw8ICg2NCAtIE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSkpCisgICAgICAgICAgICA+PiAoNjQgLSBPU19DT05TVEFOVChFRkZF
Q1RJVkVfQUREUkVTU19XSURUSCkpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIC8vIEVu
c3VyZSB0aGUgYWRkcmVzcyBpcyBpbiB0aGUgbG93ZXIgaGFsZi4KKyAgICAgICAgLy8gSWYgdGhp
cyBhc3NlcnQgZmFpbHMsIHlvdSBtYXkgbmVlZCB0byBlbmFibGUgQ0FOT05JQ0FMX0FERFJFU1NJ
TkcuCisgICAgICAgIEFTU0VSVCh2YWx1ZSA8IDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSAtIDEpKTsKKyNlbmRpZgogICAgICAgICBpZiAoaXNBbGlnbm1lbnRT
aGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA+Pj0gYWxpZ25tZW50U2hpZnRTaXpl
OwogI2lmIENQVShMSVRUTEVfRU5ESUFOKQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlz
aW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NzIsMyArNjcyLDcgQEAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwCiAjZGVmaW5lIEhBVkVfQVBQX0FDQ0VOVF9D
T0xPUlMgMQogI2VuZGlmCisKKyNpZiBDUFUoWDg2XzY0KSAmJiAhKE9TKERBUldJTikgfHwgT1Mo
TElOVVgpIHx8IE9TKFdJTkRPV1MpKQorI2RlZmluZSBIQVZFX0NBTk9OSUNBTF9BRERSRVNTSU5H
IDEKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3Bw
CShyZXZpc2lvbiAyNjQxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNr
ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2MiwyNiBAQCBURVNUKFdURl9QYWNrZWQs
IEFzc2lnbkFuZEdldCkKICAgICB7CiAgICAgICAgIFBhY2tlZFB0cjx1aW50OF90PiBrZXkgeyBu
dWxscHRyIH07CiAgICAgICAgIHN0YXRpY19hc3NlcnQoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FE
RFJFU1NfV0lEVEgpICE9IDY0LCAiIik7Ci0gICAgICAgIHVpbnQ4X3QqIG1heCA9IGJpdHdpc2Vf
Y2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoKDFVTEwpIDw8IE9TX0NPTlNU
QU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSkgLSAxKSk7Ci0gICAgICAgIGtleSA9IG1heDsK
LSAgICAgICAgRVhQRUNUX0VRKGtleS5nZXQoKSwgbWF4KTsKKyAgICAgICAgdWludDhfdCogY2Fu
ZGlkYXRlc1tdID0geworICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZG
RUNUSVZFX0FERFJFU1NfV0lEVEgpIC8gMikpIC0gMSkpLAorICAgICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IChPU19DT05TVEFO
VChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSAxKSkgLSAxKSksCisjaWYgSEFWRShDQU5PTklD
QUxfQUREUkVTU0lORykKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90Pih+KCgxVUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVT
U19XSURUSCkgLSAxKSkgLSAxKSkpLCAvLyBtaW4gaGlnaGVyIGhhbGYKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50OF90Kj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgo
KSksIC8vIG1heCBoaWdoZXIgaGFsZgorI2Vsc2UKKyAgICAgICAgICAgIC8vIENhdXRpb246IFRo
aXMgdGVzdCBzaG91bGQgYmUgcHJvY2Vzc29yLXNwZWNpZmljLgorICAgICAgICAgICAgLy8KKyAg
ICAgICAgICAgIC8vIEluIGFic2VuY2Ugb2YgYSBzcGVjaWZpYyB0ZXN0LCBhc3N1bWUgdGhhdCBh
bGwKKyAgICAgICAgICAgIC8vIGJpdHMgb2YgdGhlIEVGRkVDVElWRV9BRERSRVNTX1dJRFRIIGNh
biBiZSB1c2VkLgorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRI
KSkgLSAxKSksCisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGNvdW50ID0gc2l6ZW9m
KGNhbmRpZGF0ZXMpIC8gc2l6ZW9mKHVpbnQ4X3QqKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBjYW5kaWRhdGVzW2ldOworICAg
ICAgICAgICAgRVhQRUNUX0VRKGtleS5nZXQoKSwgY2FuZGlkYXRlc1tpXSk7CisgICAgICAgIH0K
ICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404143</attachid>
            <date>2020-07-13 05:55:48 -0700</date>
            <delta_ts>2020-07-14 02:42:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200713135547.patch</filename>
            <type>text/plain</type>
            <size>6682</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OnNl
dCk6CisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOiBBZGRlZCBIQVZFX0NBTk9OSUNBTF9B
RERSRVNTSU5HCisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0MTQ4LgpJbmRleDog
U291cmNlL1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFj
a2VkLmgJKHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhY2tlZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsMTIgKzE0MywzMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAg
aWYgKGlzQWxpZ25tZW50U2hpZnRQcm9maXRhYmxlKQogICAgICAgICAgICAgdmFsdWUgPDw9IGFs
aWdubWVudFNoaWZ0U2l6ZTsKKworI2lmIEhBVkUoQ0FOT05JQ0FMX0FERFJFU1NJTkcpCisgICAg
ICAgIC8vIFRoZSBBTUQgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBtb3N0IHNpZ25p
ZmljYW50IDE2CisgICAgICAgIC8vIGJpdHMgb2YgYW55IHZpcnR1YWwgYWRkcmVzcywgYml0cyA0
OCB0aHJvdWdoIDYzLCBtdXN0IGJlCisgICAgICAgIC8vIGNvcGllcyBvZiBiaXQgNDcgKGluIGEg
bWFubmVyIGFraW4gdG8gc2lnbiBleHRlbnNpb24pLgorICAgICAgICAvLworICAgICAgICAvLyBS
ZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02NCNWaXJ0dWFsX2Fk
ZHJlc3Nfc3BhY2VfZGV0YWlscworICAgICAgICBpZiAodmFsdWUgJiAweDFVTEwgPDwgKE9TX0NP
TlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKQorICAgICAgICAgICAgdmFsdWUg
fD0gfigoMVVMTCA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkpIC0gMSk7
CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7CiAgICAg
fQogCiAgICAgdm9pZCBzZXQoVCogcGFzc2VkVmFsdWUpCiAgICAgewogICAgICAgICB1aW50cHRy
X3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYXNzZWRWYWx1ZSk7CisjaWYgSEFW
RShDQU5PTklDQUxfQUREUkVTU0lORykKKyAgICAgICAgLy8gRW5zdXJlIHRoZSBhZGRyZXNzIGlz
IGluIGNhbm9uaWNhbCBmb3JtIChzZWUgbm90ZSBhYm92ZSkuCisgICAgICAgIEFTU0VSVChiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSA9PSAoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1
ZSkKKyAgICAgICAgICAgIDw8ICg2NCAtIE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJ
RFRIKSkpCisgICAgICAgICAgICA+PiAoNjQgLSBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVT
U19XSURUSCkpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIC8vIEVuc3VyZSB0aGUgYWRk
cmVzcyBpcyBpbiB0aGUgbG93ZXIgaGFsZi4KKyAgICAgICAgLy8gSWYgdGhpcyBhc3NlcnQgZmFp
bHMsIHlvdSBtYXkgbmVlZCB0byBlbmFibGUgQ0FOT05JQ0FMX0FERFJFU1NJTkcuCisgICAgICAg
IEFTU0VSVCh2YWx1ZSA8IDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJ
RFRIKSAtIDEpKTsKKyNlbmRpZgogICAgICAgICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFi
bGUpCiAgICAgICAgICAgICB2YWx1ZSA+Pj0gYWxpZ25tZW50U2hpZnRTaXplOwogI2lmIENQVShM
SVRUTEVfRU5ESUFOKQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9uIDI2NDE3MCkK
KysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzIs
MyArNjcyLDcgQEAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNjAwCiAjZGVmaW5lIEhBVkVfQVBQX0FDQ0VOVF9DT0xPUlMgMQogI2Vu
ZGlmCisKKyNpZiBDUFUoWDg2XzY0KSAmJiAhKE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9T
KFdJTkRPV1MpKQorI2RlZmluZSBIQVZFX0NBTk9OSUNBTF9BRERSRVNTSU5HIDEKKyNlbmRpZgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCShyZXZpc2lvbiAy
NjQxNzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw5ICs2MiwyNiBAQCBURVNUKFdURl9QYWNrZWQsIEFzc2lnbkFuZEdl
dCkKICAgICB7CiAgICAgICAgIFBhY2tlZFB0cjx1aW50OF90PiBrZXkgeyBudWxscHRyIH07CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgp
ICE9IDY0LCAiIik7Ci0gICAgICAgIHVpbnQ4X3QqIG1heCA9IGJpdHdpc2VfY2FzdDx1aW50OF90
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoKDFVTEwpIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSkgLSAxKSk7Ci0gICAgICAgIGtleSA9IG1heDsKLSAgICAgICAgRVhQ
RUNUX0VRKGtleS5nZXQoKSwgbWF4KTsKKyAgICAgICAgdWludDhfdCogY2FuZGlkYXRlc1tdID0g
eworICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJF
U1NfV0lEVEgpIC8gMikpIC0gMSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3Qq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVf
QUREUkVTU19XSURUSCkgLSAxKSkgLSAxKSksCisjaWYgSEFWRShDQU5PTklDQUxfQUREUkVTU0lO
RykKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90Pih+KCgxVUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSAx
KSkgLSAxKSkpLCAvLyBtaW4gaGlnaGVyIGhhbGYKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSksIC8vIG1heCBo
aWdoZXIgaGFsZgorI2VsaWYgIUNQVShYODZfNjQpCisgICAgICAgICAgICAvLyBDYXV0aW9uOiBU
aGlzIHRlc3Qgc2hvdWxkIGJlIHByb2Nlc3Nvci1zcGVjaWZpYy4KKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICAvLyBJbiBhYnNlbmNlIG9mIGEgc3BlY2lmaWMgdGVzdCwgYXNzdW1lIHRoYXQg
YWxsCisgICAgICAgICAgICAvLyBiaXRzIG9mIHRoZSBFRkZFQ1RJVkVfQUREUkVTU19XSURUSCBj
YW4gYmUgdXNlZC4KKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigoMVVMTCA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURU
SCkpIC0gMSkpLAorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGludCBjb3VudCA9IHNpemVv
ZihjYW5kaWRhdGVzKSAvIHNpemVvZih1aW50OF90Kik7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tpXTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShrZXkuZ2V0KCksIGNhbmRpZGF0ZXNbaV0pOworICAgICAgICB9
CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404218</attachid>
            <date>2020-07-14 02:42:53 -0700</date>
            <delta_ts>2020-07-14 07:22:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200714104252.patch</filename>
            <type>text/plain</type>
            <size>5653</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OnNl
dCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0MTQ4LgpJbmRleDogU291cmNl
L1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFja2VkLmgJ
KHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhY2tlZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNiArMTQzLDE3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBpZiAoaXNB
bGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA8PD0gYWxpZ25tZW50
U2hpZnRTaXplOworCisjaWYgQ1BVKFg4Nl82NCkgJiYgIShPUyhEQVJXSU4pIHx8IE9TKExJTlVY
KSB8fCBPUyhXSU5ET1dTKSkKKyAgICAgICAgLy8gVGhlIEFNRCBzcGVjaWZpY2F0aW9uIHJlcXVp
cmVzIHRoYXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMTYKKyAgICAgICAgLy8gYml0cyBvZiBhbnkg
dmlydHVhbCBhZGRyZXNzLCBiaXRzIDQ4IHRocm91Z2ggNjMsIG11c3QgYmUKKyAgICAgICAgLy8g
Y29waWVzIG9mIGJpdCA0NyAoaW4gYSBtYW5uZXIgYWtpbiB0byBzaWduIGV4dGVuc2lvbikuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvWDg2LTY0I1ZpcnR1YWxfYWRkcmVzc19zcGFjZV9kZXRhaWxzCisgICAgICAgIGlmICh2
YWx1ZSAmIDB4MVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0g
MSkpCisgICAgICAgICAgICB2YWx1ZSB8PSB+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSkgLSAxKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VCo+KHZhbHVlKTsKICAgICB9CiAKQEAgLTE1Niw2ICsxNjcsNyBAQCBwdWJsaWM6CiAj
ZWxzZQogICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPigmdmFsdWUpICsgKHNpemVvZih2b2lkKikgLSBzdG9yYWdlU2l6ZSksIHN0b3JhZ2VTaXpl
KTsKICNlbmRpZgorICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZ2V0KCkp
ID09IHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyKCkKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAkocmV2aXNpb24gMjY0MTcwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
OSArNjIsMjQgQEAgVEVTVChXVEZfUGFja2VkLCBBc3NpZ25BbmRHZXQpCiAgICAgewogICAgICAg
ICBQYWNrZWRQdHI8dWludDhfdD4ga2V5IHsgbnVsbHB0ciB9OwogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAhPSA2NCwgIiIpOwotICAg
ICAgICB1aW50OF90KiBtYXggPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oKCgxVUxMKSA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkp
IC0gMSkpOwotICAgICAgICBrZXkgPSBtYXg7Ci0gICAgICAgIEVYUEVDVF9FUShrZXkuZ2V0KCks
IG1heCk7CisgICAgICAgIHVpbnQ4X3QqIGNhbmRpZGF0ZXNbXSA9IHsKKyAgICAgICAgICAgIDAs
CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oKDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAvIDIpKSAt
IDEpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0g
MSkpIC0gMSkpLAorI2lmIENQVShYODZfNjQpICYmICEoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkg
fHwgT1MoV0lORE9XUykpCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4ofigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJF
U1NfV0lEVEgpIC0gMSkpIC0gMSkpKSwgLy8gbWluIGhpZ2hlciBoYWxmCisgICAgICAgICAgICBi
aXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4
KCkpLCAvLyBtYXggaGlnaGVyIGhhbGYKKyNlbHNlCisgICAgICAgICAgICAvLyBPdGhlciBPU2Vz
IHdpbGwgbmV2ZXIgYWxsb2NhdGUgdXNlciBzcGFjZSBhZGRyZXNzZXMgd2l0aAorICAgICAgICAg
ICAgLy8gYml0IDQ3IChpLmUuIE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAt
IDEpIHNldC4KKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PigoMVVMTCA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkp
IC0gMSkpLAorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGludCBjb3VudCA9IHNpemVvZihj
YW5kaWRhdGVzKSAvIHNpemVvZih1aW50OF90Kik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tpXTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShrZXkuZ2V0KCksIGNhbmRpZGF0ZXNbaV0pOworICAgICAgICB9CiAg
ICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404233</attachid>
            <date>2020-07-14 07:22:17 -0700</date>
            <delta_ts>2020-07-14 07:42:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200714152216.patch</filename>
            <type>text/plain</type>
            <size>6274</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OnNl
dCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0MTQ4LgpJbmRleDogU291cmNl
L1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFja2VkLmgJ
KHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhY2tlZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNiArMTQzLDE3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBpZiAoaXNB
bGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA8PD0gYWxpZ25tZW50
U2hpZnRTaXplOworCisjaWYgQ1BVKFg4Nl82NCkgJiYgIShPUyhEQVJXSU4pIHx8IE9TKExJTlVY
KSB8fCBPUyhXSU5ET1dTKSkKKyAgICAgICAgLy8gVGhlIEFNRCBzcGVjaWZpY2F0aW9uIHJlcXVp
cmVzIHRoYXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMTYKKyAgICAgICAgLy8gYml0cyBvZiBhbnkg
dmlydHVhbCBhZGRyZXNzLCBiaXRzIDQ4IHRocm91Z2ggNjMsIG11c3QgYmUKKyAgICAgICAgLy8g
Y29waWVzIG9mIGJpdCA0NyAoaW4gYSBtYW5uZXIgYWtpbiB0byBzaWduIGV4dGVuc2lvbikuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvWDg2LTY0I1ZpcnR1YWxfYWRkcmVzc19zcGFjZV9kZXRhaWxzCisgICAgICAgIGlmICh2
YWx1ZSAmIDB4MVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0g
MSkpCisgICAgICAgICAgICB2YWx1ZSB8PSB+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSkgLSAxKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VCo+KHZhbHVlKTsKICAgICB9CiAKQEAgLTE1Niw2ICsxNjcsNyBAQCBwdWJsaWM6CiAj
ZWxzZQogICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPigmdmFsdWUpICsgKHNpemVvZih2b2lkKikgLSBzdG9yYWdlU2l6ZSksIHN0b3JhZ2VTaXpl
KTsKICNlbmRpZgorICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZ2V0KCkp
ID09IHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyKCkKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDE3MCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3
LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtXVEZdIEZpeCBQ
YWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisKKyAgICAgICAg
UmV2aXNlZCB0ZXN0IGNhc2VzIGluIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcDoKKwogMjAyMC0wNy0w
OSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBPY2Nhc2lvbmFsIGNyYXNoIHVuZGVyIC1bVUlWaWV3IF9zZXRWaWV3RGVsZWdhdGU6XSB3aGVu
IHByZXNlbnRpbmcgZGF0ZSBhbmQgdGltZSBwaWNrZXJzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHJldmlzaW9uIDI2NDE3MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYy
LDI0IEBAIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQogICAgIHsKICAgICAgICAgUGFj
a2VkUHRyPHVpbnQ4X3Q+IGtleSB7IG51bGxwdHIgfTsKICAgICAgICAgc3RhdGljX2Fzc2VydChP
U19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgIT0gNjQsICIiKTsKLSAgICAgICAg
dWludDhfdCogbWF4ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KCgoMVVMTCkgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpKSAtIDEp
KTsKLSAgICAgICAga2V5ID0gbWF4OwotICAgICAgICBFWFBFQ1RfRVEoa2V5LmdldCgpLCBtYXgp
OworICAgICAgICB1aW50OF90KiBjYW5kaWRhdGVzW10gPSB7CisgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgx
VUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLyAyKSkgLSAxKSks
CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oKDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKSAt
IDEpKSwKKyNpZiBDUFUoWDg2XzY0KSAmJiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1Mo
V0lORE9XUykpCisgICAgICAgICAgICAvLyBUaGVzZSBPU2VzIHdpbGwgbmV2ZXIgYWxsb2NhdGUg
dXNlciBzcGFjZSBhZGRyZXNzZXMgd2l0aAorICAgICAgICAgICAgLy8gYml0IDQ3IChpLmUuIE9T
X0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpIHNldC4KKyAgICAgICAgICAg
IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoMVVMTCA8PCBP
U19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkpIC0gMSkpLAorI2Vsc2UKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pih+KCgx
VUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSAxKSkgLSAxKSkp
LCAvLyBtaW4gaGlnaGVyIGhhbGYKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4o
c3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSksIC8vIG1heCBoaWdoZXIgaGFs
ZgorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGludCBjb3VudCA9IHNpemVvZihjYW5kaWRh
dGVzKSAvIHNpemVvZih1aW50OF90Kik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tpXTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShrZXkuZ2V0KCksIGNhbmRpZGF0ZXNbaV0pOworICAgICAgICB9CiAgICAgfQog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404235</attachid>
            <date>2020-07-14 07:42:41 -0700</date>
            <delta_ts>2020-07-15 04:52:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200714154239.patch</filename>
            <type>text/plain</type>
            <size>6273</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OnNl
dCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0MTQ4LgpJbmRleDogU291cmNl
L1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFja2VkLmgJ
KHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhY2tlZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNiArMTQzLDE3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBpZiAoaXNB
bGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA8PD0gYWxpZ25tZW50
U2hpZnRTaXplOworCisjaWYgQ1BVKFg4Nl82NCkgJiYgIShPUyhEQVJXSU4pIHx8IE9TKExJTlVY
KSB8fCBPUyhXSU5ET1dTKSkKKyAgICAgICAgLy8gVGhlIEFNRCBzcGVjaWZpY2F0aW9uIHJlcXVp
cmVzIHRoYXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMTYKKyAgICAgICAgLy8gYml0cyBvZiBhbnkg
dmlydHVhbCBhZGRyZXNzLCBiaXRzIDQ4IHRocm91Z2ggNjMsIG11c3QgYmUKKyAgICAgICAgLy8g
Y29waWVzIG9mIGJpdCA0NyAoaW4gYSBtYW5uZXIgYWtpbiB0byBzaWduIGV4dGVuc2lvbikuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvWDg2LTY0I1ZpcnR1YWxfYWRkcmVzc19zcGFjZV9kZXRhaWxzCisgICAgICAgIGlmICh2
YWx1ZSAmIDB4MVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0g
MSkpCisgICAgICAgICAgICB2YWx1ZSB8PSB+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElW
RV9BRERSRVNTX1dJRFRIKSkgLSAxKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VCo+KHZhbHVlKTsKICAgICB9CiAKQEAgLTE1Niw2ICsxNjcsNyBAQCBwdWJsaWM6CiAj
ZWxzZQogICAgICAgICBtZW1jcHkobV9zdG9yYWdlLmRhdGEoKSwgYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPigmdmFsdWUpICsgKHNpemVvZih2b2lkKikgLSBzdG9yYWdlU2l6ZSksIHN0b3JhZ2VTaXpl
KTsKICNlbmRpZgorICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZ2V0KCkp
ID09IHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyKCkKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDE3MCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3
LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtXVEZdIEZpeCBQ
YWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisKKyAgICAgICAg
UmV2aXNlZCB0ZXN0IGNhc2VzIGluIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcDoKKwogMjAyMC0wNy0w
OSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBPY2Nhc2lvbmFsIGNyYXNoIHVuZGVyIC1bVUlWaWV3IF9zZXRWaWV3RGVsZWdhdGU6XSB3aGVu
IHByZXNlbnRpbmcgZGF0ZSBhbmQgdGltZSBwaWNrZXJzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHJldmlzaW9uIDI2NDE3MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYy
LDI0IEBAIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQogICAgIHsKICAgICAgICAgUGFj
a2VkUHRyPHVpbnQ4X3Q+IGtleSB7IG51bGxwdHIgfTsKICAgICAgICAgc3RhdGljX2Fzc2VydChP
U19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgIT0gNjQsICIiKTsKLSAgICAgICAg
dWludDhfdCogbWF4ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KCgoMVVMTCkgPDwgT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpKSAtIDEp
KTsKLSAgICAgICAga2V5ID0gbWF4OwotICAgICAgICBFWFBFQ1RfRVEoa2V5LmdldCgpLCBtYXgp
OworICAgICAgICB1aW50OF90KiBjYW5kaWRhdGVzW10gPSB7CisgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgx
VUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLyAyKSkgLSAxKSks
CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oKDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKSAt
IDEpKSwKKyNpZiAhQ1BVKFg4Nl82NCkgfHwgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1Mo
V0lORE9XUykKKyAgICAgICAgICAgIC8vIFRoZXNlIE9TZXMgd2lsbCBuZXZlciBhbGxvY2F0ZSB1
c2VyIHNwYWNlIGFkZHJlc3NlcyB3aXRoCisgICAgICAgICAgICAvLyBiaXQgNDcgKGkuZS4gT1Nf
Q09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC0gMSkgc2V0LgorICAgICAgICAgICAg
Yml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IE9T
X0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSkgLSAxKSksCisjZWxzZQorICAgICAg
ICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KH4oKDFV
TEwgPDwgKE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKSAtIDEpKSks
IC8vIG1pbiBoaWdoZXIgaGFsZgorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpKSwgLy8gbWF4IGhpZ2hlciBoYWxm
CisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGNvdW50ID0gc2l6ZW9mKGNhbmRpZGF0
ZXMpIC8gc2l6ZW9mKHVpbnQ4X3QqKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBjYW5kaWRhdGVzW2ldOworICAgICAgICAgICAg
RVhQRUNUX0VRKGtleS5nZXQoKSwgY2FuZGlkYXRlc1tpXSk7CisgICAgICAgIH0KICAgICB9CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404330</attachid>
            <date>2020-07-15 04:53:01 -0700</date>
            <delta_ts>2020-07-15 08:34:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200715125259.patch</filename>
            <type>text/plain</type>
            <size>6451</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgRml4ZWQgcG9pbnRlciB0ZXN0IHRvIHVzZSB1bnNpZ25lZCBpbiBwbGFjZSBvZiBz
aWduZWQuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMjAtMDctMDkgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKCkgcHV0cyAibWVzc2FnZSIgdHdpY2UsIHdpdGggZGlmZmVyZW50
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIHsKICAgICAgICAgLy8gV2UgZG8gdGhlIHN0YWNrIGNoZWNrIGhlcmUg
Zm9yIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3QKICAgICAgICAgLy8gd2Fu
dCB0byBlbWl0IGEgc3RhY2sgY2hlY2sgaW5zaWRlIGV2ZXJ5IHdyYXBwZXIgZnVuY3Rpb24uCi0g
ICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwotICAgICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94
ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVv
ZihSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAq
IGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVy
LCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBjb2RlLgotICAgICAgICBpZiAoVU5MSUtFTFko
KHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xpbWl0KCkpKSkpCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRTdGFja1BvaW50ZXIo
KSk7CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUo
KSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KKyAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odm0uc29mdFN0YWNrTGltaXQoKSkpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAgICAgdm0ud2FzbUNvbnRleHQu
c3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjQxNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDIwLTA3LTA5ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisg
ICAgICAgIFtXVEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFk
ZHJlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0MTQyCisKKyAgICAgICAgKiB3dGYvUGFja2VkLmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFs
aWduZWRQdHI6OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OnNl
dCk6CisKIDIwMjAtMDctMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY0MTQ4LgpJbmRleDogU291cmNl
L1dURi93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFja2VkLmgJ
KHJldmlzaW9uIDI2NDE3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhY2tlZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsNiArMTQzLDIwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBpZiAoaXNB
bGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA8PD0gYWxpZ25tZW50
U2hpZnRTaXplOworCisjaWYgQ1BVKFg4Nl82NCkgJiYgIShPUyhEQVJXSU4pIHx8IE9TKExJTlVY
KSB8fCBPUyhXSU5ET1dTKSkKKyAgICAgICAgLy8gVGhlIEFNRCBzcGVjaWZpY2F0aW9uIHJlcXVp
cmVzIHRoYXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMTYKKyAgICAgICAgLy8gYml0cyBvZiBhbnkg
dmlydHVhbCBhZGRyZXNzLCBiaXRzIDQ4IHRocm91Z2ggNjMsIG11c3QgYmUKKyAgICAgICAgLy8g
Y29waWVzIG9mIGJpdCA0NyAoaW4gYSBtYW5uZXIgYWtpbiB0byBzaWduIGV4dGVuc2lvbikuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIFRoZSBhYm92ZS1uYW1lZCBPU2VzIHdpbGwgbmV2ZXIgYWxs
b2NhdGUgdXNlciBzcGFjZSBhZGRyZXNzZXMKKyAgICAgICAgLy8gd2l0aCBiaXQgNDcgc2V0LCB0
aHVzIGFyZSBhbHJlYWR5IGluIGNhbm9uaWNhbCBmb3JtLgorICAgICAgICAvLworICAgICAgICAv
LyBSZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02NCNWaXJ0dWFs
X2FkZHJlc3Nfc3BhY2VfZGV0YWlscworICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgc2hpZnRC
aXRzID0gY291bnRPZkJpdHM8dWludHB0cl90PiAtIE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERS
RVNTX1dJRFRIKTsKKyAgICAgICAgdmFsdWUgPSAoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1
ZSkgPDwgc2hpZnRCaXRzKSA+PiBzaGlmdEJpdHM7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7CiAgICAgfQogCkBAIC0xNTYsNiArMTcwLDcgQEAgcHVi
bGljOgogI2Vsc2UKICAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksIGJpdHdpc2VfY2Fz
dDx1aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBzdG9y
YWdlU2l6ZSk7CiAjZW5kaWYKKyAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KGdldCgpKSA9PSB2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhcigpCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQx
NzApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAor
MjAyMC0wNy0wOSAgSmltIE1hc29uICA8am1hc29uQGliaW54LmNvbT4KKworICAgICAgICBbV1RG
XSBGaXggUGFja2VkQWxpZ25lZFB0ciBmb3IgWDg2XzY0IGNhbm9uaWNhbCBhZGRyZXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDE0MgorCisg
ICAgICAgIFJldmlzZWQgdGVzdCBjYXNlcyBpbiBURVNUKFdURl9QYWNrZWQsIEFzc2lnbkFuZEdl
dCkKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5jcHA6CisKIDIw
MjAtMDctMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gT2NjYXNpb25hbCBjcmFzaCB1bmRlciAtW1VJVmlldyBfc2V0Vmlld0RlbGVnYXRl
Ol0gd2hlbiBwcmVzZW50aW5nIGRhdGUgYW5kIHRpbWUgcGlja2VycwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCShyZXZpc2lvbiAyNjQxNzApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw5ICs2MiwyNCBAQCBURVNUKFdURl9QYWNrZWQsIEFzc2lnbkFuZEdldCkKICAgICB7CiAgICAg
ICAgIFBhY2tlZFB0cjx1aW50OF90PiBrZXkgeyBudWxscHRyIH07CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpICE9IDY0LCAiIik7Ci0g
ICAgICAgIHVpbnQ4X3QqIG1heCA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PigoKDFVTEwpIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRI
KSkgLSAxKSk7Ci0gICAgICAgIGtleSA9IG1heDsKLSAgICAgICAgRVhQRUNUX0VRKGtleS5nZXQo
KSwgbWF4KTsKKyAgICAgICAgdWludDhfdCogY2FuZGlkYXRlc1tdID0geworICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigoMVVMTCA8PCAoT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpIC8gMikp
IC0gMSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KCgxVUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkg
LSAxKSkgLSAxKSksCisjaWYgIUNQVShYODZfNjQpIHx8IE9TKERBUldJTikgfHwgT1MoTElOVVgp
IHx8IE9TKFdJTkRPV1MpCisgICAgICAgICAgICAvLyBUaGVzZSBPU2VzIHdpbGwgbmV2ZXIgYWxs
b2NhdGUgdXNlciBzcGFjZSBhZGRyZXNzZXMgd2l0aAorICAgICAgICAgICAgLy8gYml0IDQ3IChp
LmUuIE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpIHNldC4KKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigoMVVM
TCA8PCBPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkpIC0gMSkpLAorI2Vsc2UK
KyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih+KCgxVUxMIDw8IChPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSAxKSkg
LSAxKSkpLCAvLyBtaW4gaGlnaGVyIGhhbGYKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSksIC8vIG1heCBoaWdo
ZXIgaGFsZgorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGludCBjb3VudCA9IHNpemVvZihj
YW5kaWRhdGVzKSAvIHNpemVvZih1aW50OF90Kik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gY2FuZGlkYXRlc1tpXTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShrZXkuZ2V0KCksIGNhbmRpZGF0ZXNbaV0pOworICAgICAgICB9CiAg
ICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404344</attachid>
            <date>2020-07-15 08:34:36 -0700</date>
            <delta_ts>2020-07-15 09:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214142-20200715163434.patch</filename>
            <type>text/plain</type>
            <size>6480</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0Mzk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA3LTE1ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtX
VEZdIEZpeCBQYWNrZWRBbGlnbmVkUHRyIGZvciBYODZfNjQgY2Fub25pY2FsIGFkZHJlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTQyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBGaXhlZCBwb2lu
dGVyIHRlc3QgdG8gdXNlIHVuc2lnbmVkIGluIHBsYWNlIG9mIHNpZ25lZC4KKworICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJB
c3NlbWJseUZ1bmN0aW9uKToKKwogMjAyMC0wNy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEludHJvZHVjZSBKU0NURVNUX2hhcmRUaW1lb3V0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjY0Mzk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MiwxMCArMTIyLDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwK
ICAgICB7CiAgICAgICAgIC8vIFdlIGRvIHRoZSBzdGFjayBjaGVjayBoZXJlIGZvciB0aGUgd3Jh
cHBlciBmdW5jdGlvbiBiZWNhdXNlIHdlIGRvbid0CiAgICAgICAgIC8vIHdhbnQgdG8gZW1pdCBh
IHN0YWNrIGNoZWNrIGluc2lkZSBldmVyeSB3cmFwcGVyIGZ1bmN0aW9uLgotICAgICAgICBjb25z
dCBpbnRwdHJfdCBzcCA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY3VycmVudFN0YWNrUG9pbnRl
cigpKTsKLSAgICAgICAgY29uc3QgaW50cHRyX3QgZnJhbWVTaXplID0gKGJveGVkQXJncy5zaXpl
KCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgKiBzaXplb2YoUmVnaXN0ZXIp
OwotICAgICAgICBjb25zdCBpbnRwdHJfdCBzdGFja1NwYWNlVXNlZCA9IDIgKiBmcmFtZVNpemU7
IC8vIFdlJ3JlIG1ha2luZyB0d28gY2FsbHMuIE9uZSB0byB0aGUgd3JhcHBlciwgYW5kIG9uZSB0
byB0aGUgYWN0dWFsIHdhc20gY29kZS4KLSAgICAgICAgaWYgKFVOTElLRUxZKChzcCA8IHN0YWNr
U3BhY2VVc2VkKSB8fCAoKHNwIC0gc3RhY2tTcGFjZVVzZWQpIDwgYml0d2lzZV9jYXN0PGludHB0
cl90Pih2bS5zb2Z0U3RhY2tMaW1pdCgpKSkpKQorICAgICAgICBjb25zdCB1aW50cHRyX3Qgc3Ag
PSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjdXJyZW50U3RhY2tQb2ludGVyKCkpOworICAgICAg
ICBjb25zdCB1aW50cHRyX3QgZnJhbWVTaXplID0gKGJveGVkQXJncy5zaXplKCkgKyBDYWxsRnJh
bWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICBj
b25zdCB1aW50cHRyX3Qgc3RhY2tTcGFjZVVzZWQgPSAyICogZnJhbWVTaXplOyAvLyBXZSdyZSBt
YWtpbmcgdHdvIGNhbGxzLiBPbmUgdG8gdGhlIHdyYXBwZXIsIGFuZCBvbmUgdG8gdGhlIGFjdHVh
bCB3YXNtIGNvZGUuCisgICAgICAgIGlmIChVTkxJS0VMWSgoc3AgPCBzdGFja1NwYWNlVXNlZCkg
fHwgKChzcCAtIHN0YWNrU3BhY2VVc2VkKSA8IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZtLnNv
ZnRTdGFja0xpbWl0KCkpKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihnbG9iYWxPYmplY3QpKSk7CiAgICAgfQogICAgIHZtLndhc21Db250ZXh0LnN0b3JlKHdhc21J
bnN0YW5jZSwgdm0uc29mdFN0YWNrTGltaXQoKSk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0Mzk0KQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAyMC0wNy0xNSAgSmltIE1hc29uICA8am1hc29uQGliaW54LmNvbT4KKworICAgICAgICBbV1RG
XSBGaXggUGFja2VkQWxpZ25lZFB0ciBmb3IgWDg2XzY0IGNhbm9uaWNhbCBhZGRyZXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDE0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgKiB3dGYvUGFja2Vk
Lmg6CisgICAgICAgIChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OmdldCBjb25zdCk6CisgICAgICAg
IChXVEY6OlBhY2tlZEFsaWduZWRQdHI6OnNldCk6CisKIDIwMjAtMDctMTUgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlc29sdmUgcmFjZSBiZXR3ZWVuIElP
SElETWFuYWdlciBhbmQgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrLgpJbmRleDogU291cmNlL1dU
Ri93dGYvUGFja2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFja2VkLmgJKHJl
dmlzaW9uIDI2NDM5NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhY2tlZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsNiArMTQzLDIwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBpZiAoaXNBbGln
bm1lbnRTaGlmdFByb2ZpdGFibGUpCiAgICAgICAgICAgICB2YWx1ZSA8PD0gYWxpZ25tZW50U2hp
ZnRTaXplOworCisjaWYgQ1BVKFg4Nl82NCkgJiYgIShPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8
fCBPUyhXSU5ET1dTKSkKKyAgICAgICAgLy8gVGhlIEFNRCBzcGVjaWZpY2F0aW9uIHJlcXVpcmVz
IHRoYXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMTYKKyAgICAgICAgLy8gYml0cyBvZiBhbnkgdmly
dHVhbCBhZGRyZXNzLCBiaXRzIDQ4IHRocm91Z2ggNjMsIG11c3QgYmUKKyAgICAgICAgLy8gY29w
aWVzIG9mIGJpdCA0NyAoaW4gYSBtYW5uZXIgYWtpbiB0byBzaWduIGV4dGVuc2lvbikuCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFRoZSBhYm92ZS1uYW1lZCBPU2VzIHdpbGwgbmV2ZXIgYWxsb2Nh
dGUgdXNlciBzcGFjZSBhZGRyZXNzZXMKKyAgICAgICAgLy8gd2l0aCBiaXQgNDcgc2V0LCB0aHVz
IGFyZSBhbHJlYWR5IGluIGNhbm9uaWNhbCBmb3JtLgorICAgICAgICAvLworICAgICAgICAvLyBS
ZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Ni02NCNWaXJ0dWFsX2Fk
ZHJlc3Nfc3BhY2VfZGV0YWlscworICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgc2hpZnRCaXRz
ID0gY291bnRPZkJpdHM8dWludHB0cl90PiAtIE9TX0NPTlNUQU5UKEVGRkVDVElWRV9BRERSRVNT
X1dJRFRIKTsKKyAgICAgICAgdmFsdWUgPSAoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkg
PDwgc2hpZnRCaXRzKSA+PiBzaGlmdEJpdHM7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PFQqPih2YWx1ZSk7CiAgICAgfQogCkBAIC0xNTYsNiArMTcwLDcgQEAgcHVibGlj
OgogI2Vsc2UKICAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRhKCksIGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oJnZhbHVlKSArIChzaXplb2Yodm9pZCopIC0gc3RvcmFnZVNpemUpLCBzdG9yYWdl
U2l6ZSk7CiAjZW5kaWYKKyAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGdl
dCgpKSA9PSB2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhcigpCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQzOTQp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0wNy0xNSAgSmltIE1hc29uICA8am1hc29uQGliaW54LmNvbT4KKworICAgICAgICBbV1RGXSBG
aXggUGFja2VkQWxpZ25lZFB0ciBmb3IgWDg2XzY0IGNhbm9uaWNhbCBhZGRyZXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgUmV2aXNlZCB0ZXN0IGNh
c2VzIGluIFRFU1QoV1RGX1BhY2tlZCwgQXNzaWduQW5kR2V0KQorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFja2VkLmNwcDoKKwogMjAyMC0wNy0xNSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEludHJvZHVjZSBKU0NURVNU
X2hhcmRUaW1lb3V0CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYWNrZWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhY2tlZC5j
cHAJKHJldmlzaW9uIDI2NDM5NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bh
Y2tlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDkgKzYyLDI0IEBAIFRFU1QoV1RGX1BhY2tl
ZCwgQXNzaWduQW5kR2V0KQogICAgIHsKICAgICAgICAgUGFja2VkUHRyPHVpbnQ4X3Q+IGtleSB7
IG51bGxwdHIgfTsKICAgICAgICAgc3RhdGljX2Fzc2VydChPU19DT05TVEFOVChFRkZFQ1RJVkVf
QUREUkVTU19XSURUSCkgIT0gNjQsICIiKTsKLSAgICAgICAgdWludDhfdCogbWF4ID0gYml0d2lz
ZV9jYXN0PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgoMVVMTCkgPDwgT1NfQ09O
U1RBTlQoRUZGRUNUSVZFX0FERFJFU1NfV0lEVEgpKSAtIDEpKTsKLSAgICAgICAga2V5ID0gbWF4
OwotICAgICAgICBFWFBFQ1RfRVEoa2V5LmdldCgpLCBtYXgpOworICAgICAgICB1aW50OF90KiBj
YW5kaWRhdGVzW10gPSB7CisgICAgICAgICAgICAwLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IChPU19DT05TVEFOVChF
RkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLyAyKSkgLSAxKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludDhfdCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKDFVTEwgPDwgKE9TX0NPTlNU
QU5UKEVGRkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKSAtIDEpKSwKKyNpZiAhQ1BVKFg4Nl82
NCkgfHwgT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1MoV0lORE9XUykKKyAgICAgICAgICAg
IC8vIFRoZXNlIE9TZXMgd2lsbCBuZXZlciBhbGxvY2F0ZSB1c2VyIHNwYWNlIGFkZHJlc3NlcyB3
aXRoCisgICAgICAgICAgICAvLyBiaXQgNDcgKGkuZS4gT1NfQ09OU1RBTlQoRUZGRUNUSVZFX0FE
RFJFU1NfV0lEVEgpIC0gMSkgc2V0LgorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3Qq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KCgxVUxMIDw8IE9TX0NPTlNUQU5UKEVGRkVDVElWRV9B
RERSRVNTX1dJRFRIKSkgLSAxKSksCisjZWxzZQorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnQ4X3QqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KH4oKDFVTEwgPDwgKE9TX0NPTlNUQU5UKEVG
RkVDVElWRV9BRERSRVNTX1dJRFRIKSAtIDEpKSAtIDEpKSksIC8vIG1pbiBoaWdoZXIgaGFsZgor
ICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnRwdHJfdD46Om1heCgpKSwgLy8gbWF4IGhpZ2hlciBoYWxmCisjZW5kaWYKKyAgICAgICAgfTsK
KyAgICAgICAgaW50IGNvdW50ID0gc2l6ZW9mKGNhbmRpZGF0ZXMpIC8gc2l6ZW9mKHVpbnQ4X3Qq
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAg
ICBrZXkgPSBjYW5kaWRhdGVzW2ldOworICAgICAgICAgICAgRVhQRUNUX0VRKGtleS5nZXQoKSwg
Y2FuZGlkYXRlc1tpXSk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>