<?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>228747</bug_id>
          
          <creation_ts>2021-08-03 12:10:16 -0700</creation_ts>
          <short_desc>fast/canvas/canvas-crash.html doesn&apos;t test what it intends to on iOS</short_desc>
          <delta_ts>2021-08-05 18:57:08 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>228788</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1781692</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-03 12:10:16 -0700</bug_when>
    <thetext>fast/canvas/canvas-crash.html doesn&apos;t test what it intends to on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781698</commentid>
    <comment_count>1</comment_count>
      <attachid>434850</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-03 12:16:51 -0700</bug_when>
    <thetext>Created attachment 434850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781699</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-03 12:16:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/81423634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781711</commentid>
    <comment_count>3</comment_count>
      <attachid>434850</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-03 12:52:50 -0700</bug_when>
    <thetext>Comment on attachment 434850
Patch

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

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:115
&gt; +static size_t maxCanvasAreaForTesting;
&gt; +static size_t maxActivePixelMemoryForTesting;

Could these be Markable&lt;&gt;?

&gt; Source/WebCore/testing/Internals.cpp:604
&gt; +    HTMLCanvasElement::setMaxPixelMemoryForTesting(0);
&gt; +    HTMLCanvasElement::setMaxCanvasAreaForTesting(0);

Ideally these would take std::optionals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781776</commentid>
    <comment_count>4</comment_count>
      <attachid>434868</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-03 15:52:21 -0700</bug_when>
    <thetext>Created attachment 434868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781777</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-03 15:58:58 -0700</bug_when>
    <thetext>windows newlines oO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781854</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-04 02:30:34 -0700</bug_when>
    <thetext>Heh, I think the configuration of the stress bot means it runs the test in the same process multiple times, and we hit the limit after a few tries :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781856</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-04 02:40:53 -0700</bug_when>
    <thetext>Committed r280630 (240243@main): &lt;https://commits.webkit.org/240243@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434868.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781965</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-08-04 11:37:58 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 228788</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781967</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-04 11:38:16 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #6)
&gt; Heh, I think the configuration of the stress bot means it runs the test in
&gt; the same process multiple times, and we hit the limit after a few tries :|

Except the same thing happens on the real testers too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781974</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-04 11:47:30 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #9)
&gt; (In reply to Tim Horton from comment #6)
&gt; &gt; Heh, I think the configuration of the stress bot means it runs the test in
&gt; &gt; the same process multiple times, and we hit the limit after a few tries :|
&gt; 
&gt; Except the same thing happens on the real testers too!

Leak?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781975</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-04 11:47:58 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #10)
&gt; (In reply to Tim Horton from comment #9)
&gt; &gt; (In reply to Tim Horton from comment #6)
&gt; &gt; &gt; Heh, I think the configuration of the stress bot means it runs the test in
&gt; &gt; &gt; the same process multiple times, and we hit the limit after a few tries :|
&gt; &gt; 
&gt; &gt; Except the same thing happens on the real testers too!
&gt; 
&gt; Leak?

(or rather, depending on GC to cleanup something big?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781976</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-04 11:50:48 -0700</bug_when>
    <thetext>Yes, that. And we reset the max down to the default between each test so it&apos;s immediately TOO MUCH CANVAS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782193</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-05 07:08:08 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #12)
&gt; Yes, that. And we reset the max down to the default between each test so
&gt; it&apos;s immediately TOO MUCH CANVAS

There are two options I can see here.

1) Remove the canvas from the document and force a GC using GCController.collect() to ensure the canvas is full destroyed before moving on to the next test.
2) Implement ActiveDOMObject::stop() for HTMLCanvasElement, and ensure the ImageBuffer  is destroyed there.


Ideally, we would do #2, but it is a bit more risk, so doing #1 first, and then doing #2 in another change may be the best option here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782302</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 12:05:50 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; (In reply to Tim Horton from comment #12)
&gt; &gt; Yes, that. And we reset the max down to the default between each test so
&gt; &gt; it&apos;s immediately TOO MUCH CANVAS
&gt; 
&gt; There are two options I can see here.
&gt; 
&gt; 1) Remove the canvas from the document and force a GC using
&gt; GCController.collect() to ensure the canvas is full destroyed before moving
&gt; on to the next test.
&gt; 2) Implement ActiveDOMObject::stop() for HTMLCanvasElement, and ensure the
&gt; ImageBuffer  is destroyed there.
&gt; 
&gt; 
&gt; Ideally, we would do #2, but it is a bit more risk, so doing #1 first, and
&gt; then doing #2 in another change may be the best option here.

https://bugs.webkit.org/show_bug.cgi?id=224500 tracks #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782392</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 16:29:05 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; (In reply to Tim Horton from comment #12)
&gt; &gt; Yes, that. And we reset the max down to the default between each test so
&gt; &gt; it&apos;s immediately TOO MUCH CANVAS
&gt; 
&gt; There are two options I can see here.
&gt; 
&gt; 1) Remove the canvas from the document and force a GC using
&gt; GCController.collect() to ensure the canvas is full destroyed before moving
&gt; on to the next test.

Oddly, this did not work, but I found a similar-but-even-less-flaky solution that does: resize the canvas before ending the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782393</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 16:31:33 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #15)
&gt; (In reply to Sam Weinig from comment #13)
&gt; &gt; (In reply to Tim Horton from comment #12)
&gt; &gt; &gt; Yes, that. And we reset the max down to the default between each test so
&gt; &gt; &gt; it&apos;s immediately TOO MUCH CANVAS
&gt; &gt; 
&gt; &gt; There are two options I can see here.
&gt; &gt; 
&gt; &gt; 1) Remove the canvas from the document and force a GC using
&gt; &gt; GCController.collect() to ensure the canvas is full destroyed before moving
&gt; &gt; on to the next test.
&gt; 
&gt; Oddly, this did not work, but I found a similar-but-even-less-flaky solution
&gt; that does: resize the canvas before ending the test.

Oh, it&apos;s not odd: the test doesn&apos;t actually use its &lt;canvas&gt; at all, it uses getCSSCanvasContext()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782394</commentid>
    <comment_count>17</comment_count>
      <attachid>435038</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 16:39:32 -0700</bug_when>
    <thetext>Created attachment 435038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782409</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-05 17:38:21 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; (In reply to Tim Horton from comment #15)
&gt; &gt; (In reply to Sam Weinig from comment #13)
&gt; &gt; &gt; (In reply to Tim Horton from comment #12)
&gt; &gt; &gt; &gt; Yes, that. And we reset the max down to the default between each test so
&gt; &gt; &gt; &gt; it&apos;s immediately TOO MUCH CANVAS
&gt; &gt; &gt; 
&gt; &gt; &gt; There are two options I can see here.
&gt; &gt; &gt; 
&gt; &gt; &gt; 1) Remove the canvas from the document and force a GC using
&gt; &gt; &gt; GCController.collect() to ensure the canvas is full destroyed before moving
&gt; &gt; &gt; on to the next test.
&gt; &gt; 
&gt; &gt; Oddly, this did not work, but I found a similar-but-even-less-flaky solution
&gt; &gt; that does: resize the canvas before ending the test.
&gt; 
&gt; Oh, it&apos;s not odd: the test doesn&apos;t actually use its &lt;canvas&gt; at all, it uses
&gt; getCSSCanvasContext()

Ah, that would makes sense. Those live for the lifetime of the document due to being &quot;name&quot; addressable. Your solution here seems great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782412</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 17:50:38 -0700</bug_when>
    <thetext>Stress bot is happy this time, I should have listened to it last time!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782421</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-05 18:57:05 -0700</bug_when>
    <thetext>Committed r280715 (240306@main): &lt;https://commits.webkit.org/240306@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435038.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434850</attachid>
            <date>2021-08-03 12:16:51 -0700</date>
            <delta_ts>2021-08-03 15:52:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228747-20210803121650.patch</filename>
            <type>text/plain</type>
            <size>11022</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZkYzcxMzMxNTI5NjQ2
MWJjYjE4ZWRjOTQyNTBmZTU0ZTRkOTY1MC4uZTJlMWMzMGQxZjdjM2ZmNWNiOGVhZjQxZGVkMzBi
ZWVmNzFlNzI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA4LTAzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIGZhc3QvY2FudmFz
L2NhbnZhcy1jcmFzaC5odG1sIGRvZXNuJ3QgdGVzdCB3aGF0IGl0IGludGVuZHMgdG8gb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3NDcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxNDIzNjM0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXN0IGZhc3QvY2FudmFzL2NhbnZhcy1j
cmFzaC5odG1sIGludGVuZHMgdG8gdGVzdCBjaGFuZ2VzIG1hZGUKKyAgICAgICAgdG8gYWN0dWFs
IGNhbnZhcyBjb2RlIChzZWUgcjIxNTYzMik7IGhvd2V2ZXIsIG9uIHRoZSBpT1Mgc2ltdWxhdG9y
CisgICAgICAgIHRoZSB0ZXN0IGRvZXNuJ3QgZXZlbiBtYW5hZ2UgdG8gbWFrZSBhIGNhbnZhcyBj
b250ZXh0IGJlY2F1c2Ugb2YKKyAgICAgICAgIm1heGltdW0gYXJlYSIgYW5kICJtYXhpbXVtIGJh
Y2tpbmcgc3RvcmUgc2l6ZSIgbGltaXRzLCB3aGljaCBkaWZmZXIKKyAgICAgICAgcGVyLXBsYXRm
b3JtLiBUaGlzIHJlc3VsdHMgaW4gdW5pcXVlIHRlc3QgcmVzdWx0cyBmb3IgaU9TLCBhcyB3ZWxs
CisgICAgICAgIGFzIHRoZSB0ZXN0IG5vdCBhY3R1YWxseSBleGVyY2lzaW5nIHRoZSBjb2RlIGl0
IHdhcyBpbnRlbmRlZCB0by4KKworICAgICAgICBGaXggdGhpcyBieSBhZGRpbmcgYW4gb3ZlcnJp
ZGUgZm9yIHRoZSBtYXhpbXVtIGFyZWEgbGltaXQgKHdlIGFscmVhZHkKKyAgICAgICAgaGFkIG9u
ZSBmb3IgbWF4aW11bSBiYWNraW5nIHN0b3JlIHNpemUpLCBhbmQgb3ZlcnJpZGluZyB0aGVtIGlu
CisgICAgICAgIHRoaXMgdGVzdCAoYW5kIGFub3RoZXIgc2ltaWxhcmx5IGFmZmxpY3RlZCB0ZXN0
KS4KKworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWF4Q2FudmFzQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6c2V0TWF4Q2FudmFzQXJlYUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0TWF4Q2FudmFzQXJlYSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MjEtMDgtMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQXNz
ZXJ0aW9uIGlzIG5vdCBhY3F1aXJlZCBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBvcGVuaW5nIGEg
U1FMaXRlIGRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IDc0ZjhhMmViZDcwMjU0ZGI5OGM3MmVhY2UzZjA3NmE2MTMyOTY3MTcuLjNhNTNhNTYw
OWQxMGVjN2Y3ZTI4ODk1ZjlmNDg3ODQyY2QyZmRkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0xMTEsMTYgKzExMSw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiBjb25zdCBpbnQgZGVmYXVsdFdpZHRoID0gMzAwOwogY29uc3QgaW50IGRl
ZmF1bHRIZWlnaHQgPSAxNTA7CiAKLS8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdodCB0byAz
Mjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQKLS8vIHJl
YWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFy
Z2VyIG1heGltdW0gZGltZW5zaW9ucywKLS8vIGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4
aW11bSBjYW52YXMgc2l6ZS4gVGhlIG1heGltdW0gY2FudmFzIHNpemUgaXMgaW4gZGV2aWNlIHBp
eGVscy4KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotY29uc3QgdW5zaWduZWQgbWF4Q2FudmFz
QXJlYSA9IDQwOTYgKiA0MDk2OwotI2Vsc2UKLWNvbnN0IHVuc2lnbmVkIG1heENhbnZhc0FyZWEg
PSAxNjM4NCAqIDE2Mzg0OwotI2VuZGlmCi0KLXN0YXRpYyBzaXplX3QgbWF4QWN0aXZlUGl4ZWxN
ZW1vcnlGb3JUZXN0aW5nID0gMDsKK3N0YXRpYyBzaXplX3QgbWF4Q2FudmFzQXJlYUZvclRlc3Rp
bmc7CitzdGF0aWMgc2l6ZV90IG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZzsKIAogSFRN
TENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQpAQCAtMjMyLDYgKzIyNCwyNiBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRN
YXhQaXhlbE1lbW9yeUZvclRlc3Rpbmcoc2l6ZV90IHNpemUpCiAgICAgbWF4QWN0aXZlUGl4ZWxN
ZW1vcnlGb3JUZXN0aW5nID0gc2l6ZTsKIH0KIAorc3RhdGljIGlubGluZSBzaXplX3QgbWF4Q2Fu
dmFzQXJlYSgpCit7CisgICAgaWYgKG1heENhbnZhc0FyZWFGb3JUZXN0aW5nKQorICAgICAgICBy
ZXR1cm4gbWF4Q2FudmFzQXJlYUZvclRlc3Rpbmc7CisKKyAgICAvLyBGaXJlZm94IGxpbWl0cyB3
aWR0aC9oZWlnaHQgdG8gMzI3NjcgcGl4ZWxzLCBidXQgc2xvd3MgZG93biBkcmFtYXRpY2FsbHkg
YmVmb3JlIGl0CisgICAgLy8gcmVhY2hlcyB0aGF0IGxpbWl0LiBXZSBsaW1pdCBieSBhcmVhIGlu
c3RlYWQsIGdpdmluZyB1cyBsYXJnZXIgbWF4aW11bSBkaW1lbnNpb25zLAorICAgIC8vIGluIGV4
Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4gVGhlIG1heGltdW0gY2Fu
dmFzIHNpemUgaXMgaW4gZGV2aWNlIHBpeGVscy4KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIHJldHVybiA0MDk2ICogNDA5NjsKKyNlbHNlCisgICAgcmV0dXJuIDE2Mzg0ICogMTYzODQ7
CisjZW5kaWYKK30KKwordm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4Q2FudmFzQXJlYUZv
clRlc3Rpbmcoc2l6ZV90IHNpemUpCit7CisgICAgbWF4Q2FudmFzQXJlYUZvclRlc3RpbmcgPSBz
aXplOworfQorCiBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
PiYmIGFyZ3VtZW50cykKIHsKICAgICBpZiAobV9jb250ZXh0KSB7CkBAIC04NjYsOCArODc4LDgg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiAg
ICAgYXV0byBjaGVja2VkQXJlYSA9IHNpemUoKS5hcmVhPFJlY29yZE92ZXJmbG93PigpOwogCi0g
ICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSB8fCBjaGVja2VkQXJlYSA+IG1heENh
bnZhc0FyZWEpIHsKLSAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiQ2FudmFzIGFy
ZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAod2lkdGggKiBoZWlnaHQgPiAiLCBtYXhDYW52
YXNBcmVhLCAiKS4iKTsKKyAgICBpZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpIHx8IGNo
ZWNrZWRBcmVhID4gbWF4Q2FudmFzQXJlYSgpKSB7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1h
a2VTdHJpbmcoIkNhbnZhcyBhcmVhIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKHdpZHRoICog
aGVpZ2h0ID4gIiwgbWF4Q2FudmFzQXJlYSgpLCAiKS4iKTsKICAgICAgICAgZG9jdW1lbnQoKS5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCBtZXNzYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaAppbmRleCAwZGQxOTBlMDA0M2NiODEyZjUyYzZjYmQwYjhhYzY1ZmRh
ZTg5NzhhLi5hMzZjNDY0MjMxYmU5YWJkNGI3Y2U4MDhjMTc4ZjNlMDY3NjBmNGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoUmVmUHRyPEltYWdlQnVm
ZmVyPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heFBpeGVsTWVt
b3J5Rm9yVGVzdGluZyhzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dE1heENhbnZhc0FyZWFGb3JUZXN0aW5nKHNpemVfdCk7CiAKICAgICBib29sIG5lZWRzUHJlcGFy
YXRpb25Gb3JEaXNwbGF5KCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ3M2M4M2VjZDVjYTIwNjJiYTgwYmJhYjdj
YzczNzJmOGUzOGJjM2QuLjBhYWI0YTI1NjYzNGY0NzdiY2NkNzQ3YzBkZWUwNTFjNzYwY2U2ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTYwMCw3ICs2MDAsOCBAQCB2
b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXI6OnNldEN1c3RvbVByaXZhdGVSZWNvcmRlckNyZWF0b3IobnVs
bHB0cik7CiAjZW5kaWYKIAotICAgIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhQaXhlbE1lbW9y
eUZvclRlc3RpbmcoMCk7IC8vIFRoaXMgbWVhbnMgdXNlIHRoZSBkZWZhdWx0IHZhbHVlLgorICAg
IEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhQaXhlbE1lbW9yeUZvclRlc3RpbmcoMCk7CisgICAg
SFRNTENhbnZhc0VsZW1lbnQ6OnNldE1heENhbnZhc0FyZWFGb3JUZXN0aW5nKDApOwogICAgIERP
TVdpbmRvdzo6b3ZlcnJpZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25Gb3JUZXN0aW5nKHN0
ZDo6bnVsbG9wdCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MDA5LDYgKzYwMTAsMTEgQEAg
dm9pZCBJbnRlcm5hbHM6OnNldE1heENhbnZhc1BpeGVsTWVtb3J5KHVuc2lnbmVkIHNpemUpCiAg
ICAgSFRNTENhbnZhc0VsZW1lbnQ6OnNldE1heFBpeGVsTWVtb3J5Rm9yVGVzdGluZyhzaXplKTsK
IH0KIAordm9pZCBJbnRlcm5hbHM6OnNldE1heENhbnZhc0FyZWEodW5zaWduZWQgc2l6ZSkKK3sK
KyAgICBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4Q2FudmFzQXJlYUZvclRlc3Rpbmcoc2l6ZSk7
Cit9CisKIGludCBJbnRlcm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZ2V0Q3VycmVudFByb2Nlc3NJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggMDViNGJkZDU1ZTExZjBlMTk0ZmQyNmUzOTMyZjM4NTY0ZjY0MTdmMy4uYmFlN2IzYmMx
MjYxZTc0YjY4ZDI5Y2QxYjliOGY2OTk5OWNmZjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCkBAIC0zNDYsNiArMzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlclByZWZl
cnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWMoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHNldE1h
eENhbnZhc1BpeGVsTWVtb3J5KHVuc2lnbmVkKTsKKyAgICB2b2lkIHNldE1heENhbnZhc0FyZWEo
dW5zaWduZWQpOwogCiAgICAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IHdoZWVsRXZlbnRIYW5kbGVy
Q291bnQoKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gdG91Y2hFdmVudEhhbmRsZXJDb3Vu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNmMDFlYWNkMjlmZWY4
MThmNmY2MDU4ZWIwMGI2NTQ5OTBlYzM4NTkuLjIyNDM5MDI3NmEyNGQxZjJjNGZhNWE5M2VjODA0
YWNkZGZiYjA1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTkzNyw2
ICs5MzcsNyBAQCBlbnVtIEF1dG9wbGF5UG9saWN5IHsKICAgICB1bmRlZmluZWQgbWFya0NvbnRl
eHRBc0luc2VjdXJlKCk7CiAKICAgICB1bmRlZmluZWQgc2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnko
dW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB1bmRlZmluZWQgc2V0TWF4Q2FudmFzQXJlYSh1bnNp
Z25lZCBsb25nIHNpemUpOwogCiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSByZWFkb25seSBhdHRy
aWJ1dGUgTm93UGxheWluZ1N0YXRlIG5vd1BsYXlpbmdTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzNjA3MGMz
MzI1ZjEwYTI4MDgwZmZmYmYwNzMwMTUzMjllOTVmMDYuLjA3OTYzNDRjNzYxZThjYzM1MTQ4Zjc2
Y2NjMDhjNWFhZDUwMGVmYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wOC0wMyAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBmYXN0L2NhbnZh
cy9jYW52YXMtY3Jhc2guaHRtbCBkb2Vzbid0IHRlc3Qgd2hhdCBpdCBpbnRlbmRzIHRvIG9uIGlP
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ3
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTQyMzYzND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5o
dG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLmh0
bWw6CisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mYXN0L2NhbnZhcy9jYW52YXMt
Y3Jhc2gtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11
bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLXNraWEtZXhjZXNzaXZlLXNpemUtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICBEZWxldGUgdGhlIGlPUy1zcGVjaWZpYyByZXN1bHRzLCBhbmQg
YWRvcHQgdGhlIG5ldyBvdmVycmlkZXMgaW4gdGhlc2UgdHdvIHRlc3RzLgorCiAyMDIxLTA4LTAy
ICBFcmljIEh1dGNoaXNvbiAgPGVodXRjaGlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9T
IGlQYWQgXSBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRvci13aXRo
LWh0bWwtZWxlbWVudHMtY3Jhc2guaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2guaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1sCmluZGV4IDg1OWVjNWFjYWRiMTFlZTEyMjM3
NDA0OGVmM2FjYTc0NDEzODg5N2UuLmQ4NDk0NWIyYmUwMGVkZmE4ZGQ4MjkwMDA4YjIxYzgyNzQz
NzAzMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1sCkBAIC0x
Miw2ICsxMiwxMCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAKIGZ1bmN0aW9uIGNhbnZhc3Rl
c3QoKQogeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnkoMTM5NTEgKiAxMTEzOCAqIDQpOworICAgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heENhbnZhc0FyZWEoMTM5NTEgKiAxMTEzOCk7CisgICAg
fQogICAgIHZhciBjdHggPSBkb2N1bWVudC5nZXRDU1NDYW52YXNDb250ZXh0KCIyZCIsICJjYW52
YXN0ZXN0IiwgMTM5NTEsIDExMTM4KTsKICAgICBjdHgucHV0SW1hZ2VEYXRhKGN0eC5nZXRJbWFn
ZURhdGEoMTQzMTY1NTc2NiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImEiKS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJtZWRpYSIpKS5jbGllbnRXaWR0aCwgNDA5NiwgLTEw
MjQpLCAxMjgsIC02NTUzNSwgMTI3LCAtMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0NywgLTIxNDc0ODM2
NDgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNraWEt
ZXhjZXNzaXZlLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1za2lh
LWV4Y2Vzc2l2ZS1zaXplLmh0bWwKaW5kZXggNjI3ODQxY2I4MjEzZWJlZDVmZjdmZThiOTEwZWY2
N2JjMmNmMDg2Ny4uOTZkMjg4OTA5YzcxYzRlNDA2Y2VhODZhY2VkM2Y2NTRiMDg0Nzg0NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNraWEtZXhjZXNzaXZlLXNp
emUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3Np
dmUtc2l6ZS5odG1sCkBAIC0xMSw2ICsxMSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpDQogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiAN
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsNCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnkoMTM0MjE3NzI4ICogNCk7DQorICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldE1heENhbnZhc0FyZWEoMTM0MjE3NzI4KTsNCisgICAgfQ0KKw0KICAgICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJpZ0NhbnZhcyIpOw0KICAgICB2
YXIgd2lkdGggPSBjYW52YXMud2lkdGg7DQogICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBhIGNv
bnRleHQgZmV0Y2ggdG8gZm9yY2UgYWxsb2NhdGlvbiBvZg0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLWNyYXNoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMv
Y2FudmFzLWNyYXNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGFiOTY4YzE0ZmY4NTVjYTkyMjY0ZWY4YThmZTRhMDI2Y2UzMGMxYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
c2ltdWxhdG9yL2Zhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogVG90YWwgY2FudmFzIG1lbW9y
eSB1c2UgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoMjI0IE1CKS4KLUNPTlNPTEUgTUVTU0FH
RTogVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2N0eC5wdXRJ
bWFnZURhdGEnKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yL2Zhc3QvY2FudmFzL2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLXNr
aWEtZXhjZXNzaXZlLXNpemUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzZDkwMTA3OWZmYTMwZDFiNGEyODFlNjE2ZTM4OWJmODk1Y2VlOTMwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLXNraWEtZXhjZXNzaXZlLXNpemUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6
IFRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKDIyNCBN
QikuCi1UaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgYnJvd3NlciBzdXJ2aXZlcyB0aGUg
YXR0ZW1wdGVkIGNyZWF0aW9uIG9mIGFuIGV4Y2Vzc2l2ZWx5IGxhcmdlIGNhbnZhcy4KLQotQ2Fu
dmFzIDJkIGNvbnRleHQgPSBudWxsIQotU3Vydml2ZWQgY2FudmFzIGNyZWF0aW9uIGF0dGVtcHQu
IFdpZHRoID0gMTM0MjE3NzI4Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434868</attachid>
            <date>2021-08-03 15:52:21 -0700</date>
            <delta_ts>2021-08-05 16:39:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228747-20210803155220.patch</filename>
            <type>text/plain</type>
            <size>13466</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNhNjdhYzNlN2ViMWZm
NTA5Mzg3MGI1ZWJlMWE2YmU3ZWEyZmZjNy4uODVjNjE3OWEyNjA1ZWQwMTVmY2ZlYmIzNTlkZDRi
NDI3YWY1ODAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA4LTAzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIGZhc3QvY2FudmFz
L2NhbnZhcy1jcmFzaC5odG1sIGRvZXNuJ3QgdGVzdCB3aGF0IGl0IGludGVuZHMgdG8gb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3NDcK
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhlIHRlc3Qg
ZmFzdC9jYW52YXMvY2FudmFzLWNyYXNoLmh0bWwgaW50ZW5kcyB0byB0ZXN0IGNoYW5nZXMgbWFk
ZQorICAgICAgICB0byBhY3R1YWwgY2FudmFzIGNvZGUgKHNlZSByMjE1NjMyKTsgaG93ZXZlciwg
b24gdGhlIGlPUyBzaW11bGF0b3IKKyAgICAgICAgdGhlIHRlc3QgZG9lc24ndCBldmVuIG1hbmFn
ZSB0byBtYWtlIGEgY2FudmFzIGNvbnRleHQgYmVjYXVzZSBvZgorICAgICAgICAibWF4aW11bSBh
cmVhIiBhbmQgIm1heGltdW0gYmFja2luZyBzdG9yZSBzaXplIiBsaW1pdHMsIHdoaWNoIGRpZmZl
cgorICAgICAgICBwZXItcGxhdGZvcm0uIFRoaXMgcmVzdWx0cyBpbiB1bmlxdWUgdGVzdCByZXN1
bHRzIGZvciBpT1MsIGFzIHdlbGwKKyAgICAgICAgYXMgdGhlIHRlc3Qgbm90IGFjdHVhbGx5IGV4
ZXJjaXNpbmcgdGhlIGNvZGUgaXQgd2FzIGludGVuZGVkIHRvLgorCisgICAgICAgIEZpeCB0aGlz
IGJ5IGFkZGluZyBhbiBvdmVycmlkZSBmb3IgdGhlIG1heGltdW0gYXJlYSBsaW1pdCAod2UgYWxy
ZWFkeQorICAgICAgICBoYWQgb25lIGZvciBtYXhpbXVtIGJhY2tpbmcgc3RvcmUgc2l6ZSksIGFu
ZCBvdmVycmlkaW5nIHRoZW0gaW4KKyAgICAgICAgdGhpcyB0ZXN0IChhbmQgYW5vdGhlciBzaW1p
bGFybHkgYWZmbGljdGVkIHRlc3QpLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXhDYW52YXNBcmVhKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNYXhDYW52YXNB
cmVhKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmlkbDoKKwogMjAyMS0wOC0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoaWxlIHJlYWRpbmcgV2ViR0wgZHJhd2luZyBi
dWZmZXIgaWYgY2FudmFzIGltYWdlIGJ1ZmZlciBhbGxvY2F0aW9uIGZhaWxzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDc0ZjhhMmViZDcwMjU0ZGI5OGM3
MmVhY2UzZjA3NmE2MTMyOTY3MTcuLmYyODIxODkxODY4ZmUyOTgxNDFjMzk1OTdiMzA5ZTkzODNm
NGM2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0x
MTEsMTYgKzExMSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBjb25zdCBpbnQgZGVm
YXVsdFdpZHRoID0gMzAwOwogY29uc3QgaW50IGRlZmF1bHRIZWlnaHQgPSAxNTA7CiAKLS8vIEZp
cmVmb3ggbGltaXRzIHdpZHRoL2hlaWdodCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3du
IGRyYW1hdGljYWxseSBiZWZvcmUgaXQKLS8vIHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQg
YnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKLS8v
IGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4gVGhlIG1heGlt
dW0gY2FudmFzIHNpemUgaXMgaW4gZGV2aWNlIHBpeGVscy4KLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotY29uc3QgdW5zaWduZWQgbWF4Q2FudmFzQXJlYSA9IDQwOTYgKiA0MDk2OwotI2Vsc2UK
LWNvbnN0IHVuc2lnbmVkIG1heENhbnZhc0FyZWEgPSAxNjM4NCAqIDE2Mzg0OwotI2VuZGlmCi0K
LXN0YXRpYyBzaXplX3QgbWF4QWN0aXZlUGl4ZWxNZW1vcnlGb3JUZXN0aW5nID0gMDsKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWF4Q2FudmFzQXJlYUZvclRlc3Rpbmc7CitzdGF0aWMg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZzsKIAog
SFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQpAQCAtMjEyLDcgKzIwNCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNl
dFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG1heEFj
dGl2ZVBpeGVsTWVtb3J5KCkKIHsKICAgICBpZiAobWF4QWN0aXZlUGl4ZWxNZW1vcnlGb3JUZXN0
aW5nKQotICAgICAgICByZXR1cm4gbWF4QWN0aXZlUGl4ZWxNZW1vcnlGb3JUZXN0aW5nOworICAg
ICAgICByZXR1cm4gKm1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZzsKIAogICAgIHN0YXRp
YyBzaXplX3QgbWF4UGl4ZWxNZW1vcnk7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwpAQCAtMjI3LDExICsyMTksMzEgQEAgc3RhdGljIGlubGluZSBzaXplX3QgbWF4QWN0aXZl
UGl4ZWxNZW1vcnkoKQogICAgIHJldHVybiBtYXhQaXhlbE1lbW9yeTsKIH0KIAotdm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHNpemVfdCBzaXplKQor
dm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogewogICAgIG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVz
dGluZyA9IHNpemU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1heENhbnZhc0FyZWEoKQor
eworICAgIGlmIChtYXhDYW52YXNBcmVhRm9yVGVzdGluZykKKyAgICAgICAgcmV0dXJuICptYXhD
YW52YXNBcmVhRm9yVGVzdGluZzsKKworICAgIC8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdo
dCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQK
KyAgICAvLyByZWFjaGVzIHRoYXQgbGltaXQuIFdlIGxpbWl0IGJ5IGFyZWEgaW5zdGVhZCwgZ2l2
aW5nIHVzIGxhcmdlciBtYXhpbXVtIGRpbWVuc2lvbnMsCisgICAgLy8gaW4gZXhjaGFuZ2UgZm9y
IGEgc21hbGxlciBtYXhpbXVtIGNhbnZhcyBzaXplLiBUaGUgbWF4aW11bSBjYW52YXMgc2l6ZSBp
cyBpbiBkZXZpY2UgcGl4ZWxzLgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgcmV0dXJu
IDQwOTYgKiA0MDk2OworI2Vsc2UKKyAgICByZXR1cm4gMTYzODQgKiAxNjM4NDsKKyNlbmRpZgor
fQorCit2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhRm9yVGVzdGluZyhz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK3sKKyAgICBtYXhDYW52YXNBcmVhRm9yVGVzdGlu
ZyA9IHNpemU7Cit9CisKIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5r
bm93bj4+JiYgYXJndW1lbnRzKQogewogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTg2Niw4ICs4
NzgsOCBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0
CiAKICAgICBhdXRvIGNoZWNrZWRBcmVhID0gc2l6ZSgpLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCk7
CiAKLSAgICBpZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRBcmVhID4g
bWF4Q2FudmFzQXJlYSkgewotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDYW52
YXMgYXJlYSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3aWR0aCAqIGhlaWdodCA+ICIsIG1h
eENhbnZhc0FyZWEsICIpLiIpOworICAgIGlmIChjaGVja2VkQXJlYS5oYXNPdmVyZmxvd2VkKCkg
fHwgY2hlY2tlZEFyZWEgPiBtYXhDYW52YXNBcmVhKCkpIHsKKyAgICAgICAgYXV0byBtZXNzYWdl
ID0gbWFrZVN0cmluZygiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAod2lk
dGggKiBoZWlnaHQgPiAiLCBtYXhDYW52YXNBcmVhKCksICIpLiIpOwogICAgICAgICBkb2N1bWVu
dCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDBkZDE5MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFj
NjVmZGFlODk3OGEuLmZmNTIxOWRkNTU0NmRlZGFkYTE3YTU3NWU4Zjg3ZTM0YWJmNTBiODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTEyOCw3ICsxMjgsOCBA
QCBwdWJsaWM6CiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgdGhlIGNvbnRleHRz
IG93biB0aGUgYnVmZmVycy4KICAgICB2b2lkIHNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4mJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRNYXhQaXhlbE1lbW9yeUZvclRlc3Rpbmcoc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBzZXRNYXhQaXhlbE1lbW9yeUZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNYXhDYW52YXNBcmVhRm9y
VGVzdGluZyhzdGQ6Om9wdGlvbmFsPHNpemVfdD4pOwogCiAgICAgYm9vbCBuZWVkc1ByZXBhcmF0
aW9uRm9yRGlzcGxheSgpOwogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkNzNjODNlY2Q1Y2EyMDYyYmE4MGJiYWI3Y2M3
MzcyZjhlMzhiYzNkLi40OTVlMGM5Zjk1NTY2ZjVkZjJjNDgwNDU0ZWYwZTk5NTdmNmQ4ZjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MDAsNyArNjAwLDggQEAgdm9p
ZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBXZWJD
b3JlOjpNZWRpYVJlY29yZGVyOjpzZXRDdXN0b21Qcml2YXRlUmVjb3JkZXJDcmVhdG9yKG51bGxw
dHIpOwogI2VuZGlmCiAKLSAgICBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlG
b3JUZXN0aW5nKDApOyAvLyBUaGlzIG1lYW5zIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICBI
VE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHN0ZDo6bnVsbG9w
dCk7CisgICAgSFRNTENhbnZhc0VsZW1lbnQ6OnNldE1heENhbnZhc0FyZWFGb3JUZXN0aW5nKHN0
ZDo6bnVsbG9wdCk7CiAgICAgRE9NV2luZG93OjpvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25E
dXJhdGlvbkZvclRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAg
LTYwMDksNiArNjAxMCwxMSBAQCB2b2lkIEludGVybmFsczo6c2V0TWF4Q2FudmFzUGl4ZWxNZW1v
cnkodW5zaWduZWQgc2l6ZSkKICAgICBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1v
cnlGb3JUZXN0aW5nKHNpemUpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0TWF4Q2FudmFzQXJl
YSh1bnNpZ25lZCBzaXplKQoreworICAgIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNB
cmVhRm9yVGVzdGluZyhzaXplKTsKK30KKwogaW50IEludGVybmFsczo6cHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdAogewogICAgIHJldHVybiBnZXRDdXJyZW50UHJvY2Vzc0lEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwNWI0YmRkNTVlMTFmMGUxOTRmZDI2ZTM5MzJmMzg1
NjRmNjQxN2YzLi5iYWU3YjNiYzEyNjFlNzRiNjhkMjljZDFiOWI4ZjY5OTk5Y2ZmODIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM0Niw2ICszNDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRVc2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhjb25zdCBTdHJpbmcm
KTsKIAogICAgIHZvaWQgc2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnkodW5zaWduZWQpOworICAgIHZv
aWQgc2V0TWF4Q2FudmFzQXJlYSh1bnNpZ25lZCk7CiAKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25l
ZD4gd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiB0
b3VjaEV2ZW50SGFuZGxlckNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
aW5kZXggY2YwMWVhY2QyOWZlZjgxOGY2ZjYwNThlYjAwYjY1NDk5MGVjMzg1OS4uMjI0MzkwMjc2
YTI0ZDFmMmM0ZmE1YTkzZWM4MDRhY2RkZmJiMDViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbApAQCAtOTM3LDYgKzkzNyw3IEBAIGVudW0gQXV0b3BsYXlQb2xpY3kgewogICAg
IHVuZGVmaW5lZCBtYXJrQ29udGV4dEFzSW5zZWN1cmUoKTsKIAogICAgIHVuZGVmaW5lZCBzZXRN
YXhDYW52YXNQaXhlbE1lbW9yeSh1bnNpZ25lZCBsb25nIHNpemUpOworICAgIHVuZGVmaW5lZCBz
ZXRNYXhDYW52YXNBcmVhKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKICAgICBbQ29uZGl0aW9uYWw9
VklERU9dIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb3dQbGF5aW5nU3RhdGUgbm93UGxheWluZ1N0YXRl
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZWU4YzQ5OWVjMGZiM2QwNjYxMzU3ZDE4ODBjMDIzY2QyM2ExMWM4MC4uMDMw
MTM2MjM0ZDQ3MjRmNzUzM2RlMjM3YzkzMzQwOTg0Mzg1ZTc5OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTA4LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1sIGRvZXNuJ3QgdGVzdCB3aGF0
IGl0IGludGVuZHMgdG8gb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS5odG1sOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLWNyYXNoLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL2Zhc3QvY2FudmFz
L2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgRGVsZXRlIHRoZSBpT1Mtc3BlY2lmaWMgcmVzdWx0cywgYW5kIGFkb3B0IHRoZSBuZXcgb3Zl
cnJpZGVzIGluIHRoZXNlIHR3byB0ZXN0cy4KKwogMjAyMS0wOC0wMyAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBmYXN0L2RvbS9uYXZpZ2F0b3ItaU9T
LXVzZXJBZ2VudC5odG1sIGZhaWxzIG9uIGlQYWQgYmVjYXVzZSB0aGUgcGxhdGZvcm0gaXMgbm90
ICJpUGhvbmUiIG9yICJpUGFkIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2gu
aHRtbAppbmRleCA4NTllYzVhY2FkYjExZWUxMjIzNzQwNDhlZjNhY2E3NDQxMzg4OTdlLi5jMzlh
MTk4MTViMWI3NjViMzA2ZjE5ODNmZmU5OGExMDAxNTA5NTk1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY3Jhc2guaHRtbApAQCAtMTIsNiArMTIsMTAgQEAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogCiBmdW5jdGlvbiBjYW52YXN0ZXN0KCkKIHsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heENhbnZhc1BpeGVsTWVt
b3J5KDE2Mzg0ICogMTYzODQgKiA0KTsKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRNYXhD
YW52YXNBcmVhKDEzOTUxICogMTExMzgpOworICAgIH0KICAgICB2YXIgY3R4ID0gZG9jdW1lbnQu
Z2V0Q1NTQ2FudmFzQ29udGV4dCgiMmQiLCAiY2FudmFzdGVzdCIsIDEzOTUxLCAxMTEzOCk7CiAg
ICAgY3R4LnB1dEltYWdlRGF0YShjdHguZ2V0SW1hZ2VEYXRhKDE0MzE2NTU3NjYsIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJhIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
bWVkaWEiKSkuY2xpZW50V2lkdGgsIDQwOTYsIC0xMDI0KSwgMTI4LCAtNjU1MzUsIDEyNywgLTIx
NDc0ODM2NDgsIDIxNDc0ODM2NDcsIC0yMTQ3NDgzNjQ4KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS5odG1sCmluZGV4
IDYyNzg0MWNiODIxM2ViZWQ1ZmY3ZmU4YjkxMGVmNjdiYzJjZjA4NjcuLjE3Yzk3ZDBiYzkwODg0
NjQ2Yzg5YjE3NGEzNGZhNDQ4NWY1NTQ0NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXNraWEtZXhjZXNzaXZlLXNpemUuaHRtbApAQCAtMSwzNyArMSw0
MiBAQAotPGhlYWQ+DQotPHNjcmlwdD4NCi1mdW5jdGlvbiBwcmludChtZXNzYWdlKQ0KLXsNCi0g
ICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7DQotICAgIHBh
cmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7DQot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdy
YXBoKTsNCi19DQotZnVuY3Rpb24gdGVzdCgpDQotew0KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpDQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCi0NCi0gICAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiaWdDYW52YXMiKTsNCi0gICAgdmFyIHdpZHRo
ID0gY2FudmFzLndpZHRoOw0KLSAgICAvLyBXZSBuZWVkIHRvIHBlcmZvcm0gYSBjb250ZXh0IGZl
dGNoIHRvIGZvcmNlIGFsbG9jYXRpb24gb2YNCi0gICAgLy8gY2FudmFzIHJlc291cmNlcy4NCi0g
ICAgaWYgKGNhbnZhcy5nZXRDb250ZXh0KQ0KLSAgICB7DQotICAgICAgdmFyIGN0eCA9IGNhbnZh
cy5nZXRDb250ZXh0KCIyZCIpOw0KLSAgICAgIGlmIChjdHggPT0gbnVsbCkNCi0gICAgICB7DQot
ICAgICAgICBwcmludCgiQ2FudmFzIDJkIGNvbnRleHQgPSBudWxsISIpOw0KLSAgICAgIH0NCi0g
ICAgfQ0KLQ0KLSAgICBwcmludCgiU3Vydml2ZWQgY2FudmFzIGNyZWF0aW9uIGF0dGVtcHQuIFdp
ZHRoID0gIiArIHdpZHRoKTsNCi19DQotPC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5IG9ubG9h
ZD0idGVzdCgpOyI+DQotPGNhbnZhcyBpZD0iYmlnQ2FudmFzIiB3aWR0aD0iMTM0MjE3NzI4IiBo
ZWlnaHQ9IjEiPjwvY2FudmFzPg0KLTxwPlRoaXMgdGVzdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBi
cm93c2VyIHN1cnZpdmVzIHRoZSBhdHRlbXB0ZWQgY3JlYXRpb24NCi1vZiBhbiBleGNlc3NpdmVs
eSBsYXJnZSBjYW52YXMuPC9wPg0KLTxocj4NCi08cD48b2wgaWQ9Y29uc29sZT48L29sPjwvcD4N
Ci08L2JvZHk+DQorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKK3sK
KyAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBw
YXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdy
YXBoKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heENhbnZhc1BpeGVsTWVtb3J5
KDE2Mzg0ICogMTYzODQgKiA0KTsKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRNYXhDYW52
YXNBcmVhKDEzNDIxNzcyOCk7CisgICAgfQorCisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJiaWdDYW52YXMiKTsKKyAgICB2YXIgd2lkdGggPSBjYW52YXMud2lkdGg7
CisgICAgLy8gV2UgbmVlZCB0byBwZXJmb3JtIGEgY29udGV4dCBmZXRjaCB0byBmb3JjZSBhbGxv
Y2F0aW9uIG9mCisgICAgLy8gY2FudmFzIHJlc291cmNlcy4KKyAgICBpZiAoY2FudmFzLmdldENv
bnRleHQpCisgICAgeworICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwor
ICAgICAgaWYgKGN0eCA9PSBudWxsKQorICAgICAgeworICAgICAgICBwcmludCgiQ2FudmFzIDJk
IGNvbnRleHQgPSBudWxsISIpOworICAgICAgfQorICAgIH0KKworICAgIHByaW50KCJTdXJ2aXZl
ZCBjYW52YXMgY3JlYXRpb24gYXR0ZW1wdC4gV2lkdGggPSAiICsgd2lkdGgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgorPGNhbnZhcyBpZD0iYmlnQ2Fu
dmFzIiB3aWR0aD0iMTM0MjE3NzI4IiBoZWlnaHQ9IjEiPjwvY2FudmFzPgorPHA+VGhpcyB0ZXN0
IGNoZWNrcyB0byBzZWUgaWYgdGhlIGJyb3dzZXIgc3Vydml2ZXMgdGhlIGF0dGVtcHRlZCBjcmVh
dGlvbgorb2YgYW4gZXhjZXNzaXZlbHkgbGFyZ2UgY2FudmFzLjwvcD4KKzxocj4KKzxwPjxvbCBp
ZD1jb25zb2xlPjwvb2w+PC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci9mYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2gtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mYXN0L2NhbnZhcy9jYW52YXMt
Y3Jhc2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWI5Njhj
MTRmZjg1NWNhOTIyNjRlZjhhOGZlNGEwMjZjZTMwYzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0
b3IvZmFzdC9jYW52YXMvY2FudmFzLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDMgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBl
eGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICgyMjQgTUIpLgotQ09OU09MRSBNRVNTQUdFOiBUeXBl
RXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnY3R4LnB1dEltYWdlRGF0
YScpCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvZmFz
dC9jYW52YXMvY2FudmFzLXNraWEtZXhjZXNzaXZlLXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mYXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNl
c3NpdmUtc2l6ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNk
OTAxMDc5ZmZhMzBkMWI0YTI4MWU2MTZlMzg5YmY4OTVjZWU5MzAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci9mYXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogVG90YWwg
Y2FudmFzIG1lbW9yeSB1c2UgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAoMjI0IE1CKS4KLVRo
aXMgdGVzdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBicm93c2VyIHN1cnZpdmVzIHRoZSBhdHRlbXB0
ZWQgY3JlYXRpb24gb2YgYW4gZXhjZXNzaXZlbHkgbGFyZ2UgY2FudmFzLgotCi1DYW52YXMgMmQg
Y29udGV4dCA9IG51bGwhCi1TdXJ2aXZlZCBjYW52YXMgY3JlYXRpb24gYXR0ZW1wdC4gV2lkdGgg
PSAxMzQyMTc3MjgKLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435038</attachid>
            <date>2021-08-05 16:39:32 -0700</date>
            <delta_ts>2021-08-05 18:57:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228747-20210805163931.patch</filename>
            <type>text/plain</type>
            <size>12530</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTYzNjAzNmE4NThjYWE3
NmIyZmE2NmUyNjYyNmY4NDM2ZGExMTA0NS4uMWE4YWFlMTFlMzdhNmQxMjcwNWZhYWQ4OTA2OTEy
MTJjMDg3ZTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA4LTA1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIGZhc3QvY2FudmFz
L2NhbnZhcy1jcmFzaC5odG1sIGRvZXNuJ3QgdGVzdCB3aGF0IGl0IGludGVuZHMgdG8gb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3NDcK
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhlIHRlc3Qg
ZmFzdC9jYW52YXMvY2FudmFzLWNyYXNoLmh0bWwgaW50ZW5kcyB0byB0ZXN0IGNoYW5nZXMgbWFk
ZQorICAgICAgICB0byBhY3R1YWwgY2FudmFzIGNvZGUgKHNlZSByMjE1NjMyKTsgaG93ZXZlciwg
b24gdGhlIGlPUyBzaW11bGF0b3IKKyAgICAgICAgdGhlIHRlc3QgZG9lc24ndCBldmVuIG1hbmFn
ZSB0byBtYWtlIGEgY2FudmFzIGNvbnRleHQgYmVjYXVzZSBvZgorICAgICAgICAibWF4aW11bSBh
cmVhIiBhbmQgIm1heGltdW0gYmFja2luZyBzdG9yZSBzaXplIiBsaW1pdHMsIHdoaWNoIGRpZmZl
cgorICAgICAgICBwZXItcGxhdGZvcm0uIFRoaXMgcmVzdWx0cyBpbiB1bmlxdWUgdGVzdCByZXN1
bHRzIGZvciBpT1MsIGFzIHdlbGwKKyAgICAgICAgYXMgdGhlIHRlc3Qgbm90IGFjdHVhbGx5IGV4
ZXJjaXNpbmcgdGhlIGNvZGUgaXQgd2FzIGludGVuZGVkIHRvLgorCisgICAgICAgIEZpeCB0aGlz
IGJ5IGFkZGluZyBhbiBvdmVycmlkZSBmb3IgdGhlIG1heGltdW0gYXJlYSBsaW1pdCAod2UgYWxy
ZWFkeQorICAgICAgICBoYWQgb25lIGZvciBtYXhpbXVtIGJhY2tpbmcgc3RvcmUgc2l6ZSksIGFu
ZCBvdmVycmlkaW5nIHRoZW0gaW4KKyAgICAgICAgdGhpcyB0ZXN0IChhbmQgYW5vdGhlciBzaW1p
bGFybHkgYWZmbGljdGVkIHRlc3QpLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXhDYW52YXNBcmVhKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNYXhDYW52YXNB
cmVhKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmlkbDoKKwogMjAyMS0wOC0wNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBnZXRVc2VyTWVkaWEgc29tZXRpbWVzIGRvZXNu
J3QgY2FwdHVyZSBmcm9tIHNwZWNpZmllZCBtaWNyb3Bob25lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDc0ZjhhMmViZDcwMjU0ZGI5OGM3MmVhY2UzZjA3
NmE2MTMyOTY3MTcuLmYyODIxODkxODY4ZmUyOTgxNDFjMzk1OTdiMzA5ZTkzODNmNGM2YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0xMTEsMTYgKzEx
MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBjb25zdCBpbnQgZGVmYXVsdFdpZHRo
ID0gMzAwOwogY29uc3QgaW50IGRlZmF1bHRIZWlnaHQgPSAxNTA7CiAKLS8vIEZpcmVmb3ggbGlt
aXRzIHdpZHRoL2hlaWdodCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGlj
YWxseSBiZWZvcmUgaXQKLS8vIHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJlYSBp
bnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKLS8vIGluIGV4Y2hh
bmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4gVGhlIG1heGltdW0gY2FudmFz
IHNpemUgaXMgaW4gZGV2aWNlIHBpeGVscy4KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotY29u
c3QgdW5zaWduZWQgbWF4Q2FudmFzQXJlYSA9IDQwOTYgKiA0MDk2OwotI2Vsc2UKLWNvbnN0IHVu
c2lnbmVkIG1heENhbnZhc0FyZWEgPSAxNjM4NCAqIDE2Mzg0OwotI2VuZGlmCi0KLXN0YXRpYyBz
aXplX3QgbWF4QWN0aXZlUGl4ZWxNZW1vcnlGb3JUZXN0aW5nID0gMDsKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWF4Q2FudmFzQXJlYUZvclRlc3Rpbmc7CitzdGF0aWMgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZzsKIAogSFRNTENhbnZh
c0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQpAQCAtMjEyLDcgKzIwNCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFNpemUoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG1heEFjdGl2ZVBpeGVs
TWVtb3J5KCkKIHsKICAgICBpZiAobWF4QWN0aXZlUGl4ZWxNZW1vcnlGb3JUZXN0aW5nKQotICAg
ICAgICByZXR1cm4gbWF4QWN0aXZlUGl4ZWxNZW1vcnlGb3JUZXN0aW5nOworICAgICAgICByZXR1
cm4gKm1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZzsKIAogICAgIHN0YXRpYyBzaXplX3Qg
bWF4UGl4ZWxNZW1vcnk7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAt
MjI3LDExICsyMTksMzEgQEAgc3RhdGljIGlubGluZSBzaXplX3QgbWF4QWN0aXZlUGl4ZWxNZW1v
cnkoKQogICAgIHJldHVybiBtYXhQaXhlbE1lbW9yeTsKIH0KIAotdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHNpemVfdCBzaXplKQordm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogewogICAgIG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZyA9IHNp
emU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1heENhbnZhc0FyZWEoKQoreworICAgIGlm
IChtYXhDYW52YXNBcmVhRm9yVGVzdGluZykKKyAgICAgICAgcmV0dXJuICptYXhDYW52YXNBcmVh
Rm9yVGVzdGluZzsKKworICAgIC8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdodCB0byAzMjc2
NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQKKyAgICAvLyBy
ZWFjaGVzIHRoYXQgbGltaXQuIFdlIGxpbWl0IGJ5IGFyZWEgaW5zdGVhZCwgZ2l2aW5nIHVzIGxh
cmdlciBtYXhpbXVtIGRpbWVuc2lvbnMsCisgICAgLy8gaW4gZXhjaGFuZ2UgZm9yIGEgc21hbGxl
ciBtYXhpbXVtIGNhbnZhcyBzaXplLiBUaGUgbWF4aW11bSBjYW52YXMgc2l6ZSBpcyBpbiBkZXZp
Y2UgcGl4ZWxzLgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgcmV0dXJuIDQwOTYgKiA0
MDk2OworI2Vsc2UKKyAgICByZXR1cm4gMTYzODQgKiAxNjM4NDsKKyNlbmRpZgorfQorCit2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhRm9yVGVzdGluZyhzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKK3sKKyAgICBtYXhDYW52YXNBcmVhRm9yVGVzdGluZyA9IHNpemU7
Cit9CisKIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxD
YW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGNvbnRleHRJZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYg
YXJndW1lbnRzKQogewogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTg2Niw4ICs4NzgsOCBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAKICAgICBh
dXRvIGNoZWNrZWRBcmVhID0gc2l6ZSgpLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCk7CiAKLSAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRBcmVhID4gbWF4Q2FudmFz
QXJlYSkgewotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDYW52YXMgYXJlYSBl
eGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3aWR0aCAqIGhlaWdodCA+ICIsIG1heENhbnZhc0Fy
ZWEsICIpLiIpOworICAgIGlmIChjaGVja2VkQXJlYS5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tl
ZEFyZWEgPiBtYXhDYW52YXNBcmVhKCkpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0
cmluZygiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAod2lkdGggKiBoZWln
aHQgPiAiLCBtYXhDYW52YXNBcmVhKCksICIpLiIpOwogICAgICAgICBkb2N1bWVudCgpLmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1l
c3NhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCmluZGV4IDBkZDE5MGUwMDQzY2I4MTJmNTJjNmNiZDBiOGFjNjVmZGFlODk3
OGEuLmZmNTIxOWRkNTU0NmRlZGFkYTE3YTU3NWU4Zjg3ZTM0YWJmNTBiODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTEyOCw3ICsxMjgsOCBAQCBwdWJsaWM6
CiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgdGhlIGNvbnRleHRzIG93biB0aGUg
YnVmZmVycy4KICAgICB2b2lkIHNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4mJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNYXhQaXhl
bE1lbW9yeUZvclRlc3Rpbmcoc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBzZXRNYXhQaXhlbE1lbW9yeUZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxzaXplX3Q+KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNYXhDYW52YXNBcmVhRm9yVGVzdGluZyhz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pOwogCiAgICAgYm9vbCBuZWVkc1ByZXBhcmF0aW9uRm9yRGlz
cGxheSgpOwogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBkNzNjODNlY2Q1Y2EyMDYyYmE4MGJiYWI3Y2M3MzcyZjhlMzhi
YzNkLi40OTVlMGM5Zjk1NTY2ZjVkZjJjNDgwNDU0ZWYwZTk5NTdmNmQ4ZjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MDAsNyArNjAwLDggQEAgdm9pZCBJbnRlcm5h
bHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBXZWJDb3JlOjpNZWRp
YVJlY29yZGVyOjpzZXRDdXN0b21Qcml2YXRlUmVjb3JkZXJDcmVhdG9yKG51bGxwdHIpOwogI2Vu
ZGlmCiAKLSAgICBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5n
KDApOyAvLyBUaGlzIG1lYW5zIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICBIVE1MQ2FudmFz
RWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHN0ZDo6bnVsbG9wdCk7CisgICAg
SFRNTENhbnZhc0VsZW1lbnQ6OnNldE1heENhbnZhc0FyZWFGb3JUZXN0aW5nKHN0ZDo6bnVsbG9w
dCk7CiAgICAgRE9NV2luZG93OjpvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZv
clRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTYwMDksNiAr
NjAxMCwxMSBAQCB2b2lkIEludGVybmFsczo6c2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnkodW5zaWdu
ZWQgc2l6ZSkKICAgICBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0
aW5nKHNpemUpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0TWF4Q2FudmFzQXJlYSh1bnNpZ25l
ZCBzaXplKQoreworICAgIEhUTUxDYW52YXNFbGVtZW50OjpzZXRNYXhDYW52YXNBcmVhRm9yVGVz
dGluZyhzaXplKTsKK30KKwogaW50IEludGVybmFsczo6cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dAogewogICAgIHJldHVybiBnZXRDdXJyZW50UHJvY2Vzc0lEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAwNWI0YmRkNTVlMTFmMGUxOTRmZDI2ZTM5MzJmMzg1NjRmNjQxN2Yz
Li5iYWU3YjNiYzEyNjFlNzRiNjhkMjljZDFiOWI4ZjY5OTk5Y2ZmODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM0Niw2ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVc2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZvaWQgc2V0TWF4Q2FudmFzUGl4ZWxNZW1vcnkodW5zaWduZWQpOworICAgIHZvaWQgc2V0TWF4
Q2FudmFzQXJlYSh1bnNpZ25lZCk7CiAKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gd2hlZWxF
dmVudEhhbmRsZXJDb3VudCgpOwogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiB0b3VjaEV2ZW50
SGFuZGxlckNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggY2Yw
MWVhY2QyOWZlZjgxOGY2ZjYwNThlYjAwYjY1NDk5MGVjMzg1OS4uMjI0MzkwMjc2YTI0ZDFmMmM0
ZmE1YTkzZWM4MDRhY2RkZmJiMDViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtOTM3LDYgKzkzNyw3IEBAIGVudW0gQXV0b3BsYXlQb2xpY3kgewogICAgIHVuZGVmaW5l
ZCBtYXJrQ29udGV4dEFzSW5zZWN1cmUoKTsKIAogICAgIHVuZGVmaW5lZCBzZXRNYXhDYW52YXNQ
aXhlbE1lbW9yeSh1bnNpZ25lZCBsb25nIHNpemUpOworICAgIHVuZGVmaW5lZCBzZXRNYXhDYW52
YXNBcmVhKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBOb3dQbGF5aW5nU3RhdGUgbm93UGxheWluZ1N0YXRlOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggY2VhNGY1YThmZmY3YWI1ZmQ5Yjc0ZWI0MzdhOTNmM2Q4YmNkZWMzZS4uODgwNjY3YjdlNjQ2
ZmM5NTU0ZDg1NDgxNDI1Mjk2ZjJmMTE2MmQ1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIx
LTA4LTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IGZhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1sIGRvZXNuJ3QgdGVzdCB3aGF0IGl0IGludGVu
ZHMgdG8gb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjg3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLWNyYXNoLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL2Zhc3QvY2FudmFzL2NhbnZhcy1z
a2lhLWV4Y2Vzc2l2ZS1zaXplLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgRGVsZXRl
IHRoZSBpT1Mtc3BlY2lmaWMgcmVzdWx0cywgYW5kIGFkb3B0IHRoZSBuZXcgb3ZlcnJpZGVzIGlu
IHRoZXNlIHR3byB0ZXN0cy4KKwogMjAyMS0wOC0wNCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgKCBSZWJhc2VsaW5lKSBbIGlPUyBdIGZhc3QvZm9ybXMvaW9z
L2lucHV0bW9kZS1ub25lLmh0bWwgaXMgYSBjb25zdGFudCBmYWlsdXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1sCmluZGV4IDg1OWVjNWFjYWRiMTFlZTEyMjM3NDA0
OGVmM2FjYTc0NDEzODg5N2UuLmY4YzIyOTAwOTM4ZDRhZWM0MWU1OTA0MjljMWI2NTgwOGRiZTU3
ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jcmFzaC5odG1sCkBAIC00LDcg
KzQsNiBAQAogPGJvZHk+CiAKIDxhIGlkPSJhIj48L2E+Ci08Y2FudmFzIGlkPSJjIiBjbGFzcz0i
b3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48L2NhbnZhcz4KIAogPHNjcmlwdD4KIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKQEAgLTEyLDggKzExLDE1IEBAIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKIAogZnVuY3Rpb24gY2FudmFzdGVzdCgpCiB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRNYXhDYW52YXNQaXhlbE1lbW9yeSgx
NjM4NCAqIDE2Mzg0ICogNCk7CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0TWF4Q2FudmFz
QXJlYSgxMzk1MSAqIDExMTM4KTsKKyAgICB9CiAgICAgdmFyIGN0eCA9IGRvY3VtZW50LmdldENT
U0NhbnZhc0NvbnRleHQoIjJkIiwgImNhbnZhc3Rlc3QiLCAxMzk1MSwgMTExMzgpOwogICAgIGN0
eC5wdXRJbWFnZURhdGEoY3R4LmdldEltYWdlRGF0YSgxNDMxNjU1NzY2LCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1lZGlh
IikpLmNsaWVudFdpZHRoLCA0MDk2LCAtMTAyNCksIDEyOCwgLTY1NTM1LCAxMjcsIC0yMTQ3NDgz
NjQ4LCAyMTQ3NDgzNjQ3LCAtMjE0NzQ4MzY0OCk7CisKKyAgICAvLyBSZXNpemUgdGhlIGNvbnRl
eHQgdG8gZW5zdXJlIHRoZSBsYXJnZSBjYW52YXMgZG9lc24ndCBsZWFrIGludG8gdGhlIG5leHQg
dGVzdC4KKyAgICBkb2N1bWVudC5nZXRDU1NDYW52YXNDb250ZXh0KCIyZCIsICJjYW52YXN0ZXN0
IiwgMSwgMSk7CiB9CiAKIGNhbnZhc3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS5odG1sCmluZGV4IDYyNzg0MWNi
ODIxM2ViZWQ1ZmY3ZmU4YjkxMGVmNjdiYzJjZjA4NjcuLjkzZjYxMzQ5MzJmMGVhZDM1MjNkYjVk
NjQ0ZDQ0YTA3NzJiZTI5ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1za2lhLWV4Y2Vzc2l2ZS1zaXplLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLXNraWEtZXhjZXNzaXZlLXNpemUuaHRtbApAQCAtMTEsMjAgKzExLDI1IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCiAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOw0KIA0KKyAgICBpZiAod2luZG93LmludGVybmFscykgew0KKyAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXRNYXhDYW52YXNQaXhlbE1lbW9yeSgxNjM4NCAqIDE2
Mzg0ICogNCk7DQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heENhbnZhc0FyZWEoMTM0
MjE3NzI4KTsNCisgICAgfQ0KKw0KICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImJpZ0NhbnZhcyIpOw0KICAgICB2YXIgd2lkdGggPSBjYW52YXMud2lkdGg7DQogICAg
IC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBhIGNvbnRleHQgZmV0Y2ggdG8gZm9yY2UgYWxsb2NhdGlv
biBvZg0KICAgICAvLyBjYW52YXMgcmVzb3VyY2VzLg0KLSAgICBpZiAoY2FudmFzLmdldENvbnRl
eHQpDQotICAgIHsNCi0gICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7DQot
ICAgICAgaWYgKGN0eCA9PSBudWxsKQ0KLSAgICAgIHsNCi0gICAgICAgIHByaW50KCJDYW52YXMg
MmQgY29udGV4dCA9IG51bGwhIik7DQotICAgICAgfQ0KKyAgICBpZiAoY2FudmFzLmdldENvbnRl
eHQpIHsNCisgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsNCisgICAg
ICAgIGlmIChjdHggPT0gbnVsbCkNCisgICAgICAgICAgICBwcmludCgiQ2FudmFzIDJkIGNvbnRl
eHQgPSBudWxsISIpOw0KICAgICB9DQogDQogICAgIHByaW50KCJTdXJ2aXZlZCBjYW52YXMgY3Jl
YXRpb24gYXR0ZW1wdC4gV2lkdGggPSAiICsgd2lkdGgpOw0KKw0KKyAgICAvLyBSZXNpemUgdGhl
IGNhbnZhcyB0byBlbnN1cmUgdGhlIGxhcmdlIGNhbnZhcyBkb2Vzbid0IGxlYWsgaW50byB0aGUg
bmV4dCB0ZXN0Lg0KKyAgICBjYW52YXMud2lkdGggPSAxOw0KIH0NCiA8L3NjcmlwdD4NCiA8L2hl
YWQ+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mYXN0
L2NhbnZhcy9jYW52YXMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci9mYXN0L2NhbnZhcy9jYW52YXMtY3Jhc2gtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWI5NjhjMTRmZjg1NWNhOTIyNjRlZjhhOGZlNGEw
MjZjZTMwYzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLWNy
YXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQ09OU09MRSBN
RVNTQUdFOiBUb3RhbCBjYW52YXMgbWVtb3J5IHVzZSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0
ICgyMjQgTUIpLgotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnY3R4LnB1dEltYWdlRGF0YScpCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvZmFzdC9jYW52YXMvY2FudmFzLXNraWEtZXhj
ZXNzaXZlLXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVs
YXRvci9mYXN0L2NhbnZhcy9jYW52YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTAxMDc5ZmZhMzBkMWI0YTI4MWU2MTZl
Mzg5YmY4OTVjZWU5MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mYXN0L2NhbnZhcy9jYW52
YXMtc2tpYS1leGNlc3NpdmUtc2l6ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2
ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogVG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVk
cyB0aGUgbWF4aW11bSBsaW1pdCAoMjI0IE1CKS4KLVRoaXMgdGVzdCBjaGVja3MgdG8gc2VlIGlm
IHRoZSBicm93c2VyIHN1cnZpdmVzIHRoZSBhdHRlbXB0ZWQgY3JlYXRpb24gb2YgYW4gZXhjZXNz
aXZlbHkgbGFyZ2UgY2FudmFzLgotCi1DYW52YXMgMmQgY29udGV4dCA9IG51bGwhCi1TdXJ2aXZl
ZCBjYW52YXMgY3JlYXRpb24gYXR0ZW1wdC4gV2lkdGggPSAxMzQyMTc3MjgKLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>