<?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>228630</bug_id>
          
          <creation_ts>2021-07-29 20:57:21 -0700</creation_ts>
          <short_desc>Add a HashTraits implementation for LayoutUnit</short_desc>
          <delta_ts>2021-08-04 05:58:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1780693</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-07-29 20:57:21 -0700</bug_when>
    <thetext>In the scroll snapping code we are converting LayoutUnits to float in order to hash them. This runs the risk of introducing floating point errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781226</commentid>
    <comment_count>1</comment_count>
      <attachid>434746</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-08-02 04:45:50 -0700</bug_when>
    <thetext>Created attachment 434746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781540</commentid>
    <comment_count>2</comment_count>
      <attachid>434746</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-08-02 22:12:06 -0700</bug_when>
    <thetext>Comment on attachment 434746
Patch

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

&gt; Source/WebCore/platform/LayoutUnit.h:847
&gt; +    static unsigned hash(const WebCore::LayoutUnit&amp; p) { return intHash(bitwise_cast&lt;Bits&gt;(p.rawValue())); }

I prefer DefaultHash&lt;int&gt;::hash(p.rawValue()) rather than bitwise_cast.

&gt; Source/WebCore/platform/LayoutUnit.h:865
&gt; +template&lt;&gt; struct DefaultHash&lt;WebCore::LayoutUnit&gt; : LayoutUnitHash { };

I prefer not having unnecessary LayoutUnitHash class. Simply merge the members to DefaultHash&lt;WebCore::LayoutUnit&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781576</commentid>
    <comment_count>3</comment_count>
      <attachid>434823</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-08-03 02:50:57 -0700</bug_when>
    <thetext>Created attachment 434823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781577</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-08-03 02:51:35 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #2)
&gt; Comment on attachment 434746 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434746&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:847
&gt; &gt; +    static unsigned hash(const WebCore::LayoutUnit&amp; p) { return intHash(bitwise_cast&lt;Bits&gt;(p.rawValue())); }
&gt; 
&gt; I prefer DefaultHash&lt;int&gt;::hash(p.rawValue()) rather than bitwise_cast.
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:865
&gt; &gt; +template&lt;&gt; struct DefaultHash&lt;WebCore::LayoutUnit&gt; : LayoutUnitHash { };
&gt; 
&gt; I prefer not having unnecessary LayoutUnitHash class. Simply merge the
&gt; members to DefaultHash&lt;WebCore::LayoutUnit&gt;.


Thanks for the review! I&apos;ve uploaded a new version of the change addressing these concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781714</commentid>
    <comment_count>5</comment_count>
      <attachid>434823</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-08-03 12:57:13 -0700</bug_when>
    <thetext>Comment on attachment 434823
Patch

Nice. LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781720</commentid>
    <comment_count>6</comment_count>
      <attachid>434823</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-03 13:17:36 -0700</bug_when>
    <thetext>Comment on attachment 434823
Patch

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

This is great. Note that this could have been done entirely within ScrollSnapOffsetsInfo.cpp, but I think it’s OK as is.

&gt; Source/WebCore/platform/LayoutUnit.h:851
&gt; +// The empty value is INT_MIN, the deleted value is INT_MAX;

Comments should say *why* not just *what*. What guarantees these values aren’t needed in hash tables? Why are these good choices?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781850</commentid>
    <comment_count>7</comment_count>
      <attachid>434894</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-08-04 01:42:59 -0700</bug_when>
    <thetext>Created attachment 434894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781869</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-08-04 05:30:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 434823 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434823&amp;action=review
&gt; 
&gt; This is great. Note that this could have been done entirely within
&gt; ScrollSnapOffsetsInfo.cpp, but I think it’s OK as is.
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutUnit.h:851
&gt; &gt; +// The empty value is INT_MIN, the deleted value is INT_MAX;
&gt; 
&gt; Comments should say *why* not just *what*. What guarantees these values
&gt; aren’t needed in hash tables? Why are these good choices?

I&apos;ve done my best to explain the reasoning for these choices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781870</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-04 05:57:10 -0700</bug_when>
    <thetext>Committed r280632 (240245@main): &lt;https://commits.webkit.org/240245@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434894.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781871</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-04 05:58:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/81511360&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434746</attachid>
            <date>2021-08-02 04:45:50 -0700</date>
            <delta_ts>2021-08-03 02:50:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228630-20210802134549.patch</filename>
            <type>text/plain</type>
            <size>4327</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI5ZTc2NzQ4NmVlMDM0
M2NkOWRiNjU2YmQ0YzBmNDFlZjgwMDhlYS4uM2Y2NjRiZTAwYWJiMzkyY2QyNzZmMmY4OTcxYjZk
ZGFmZWFiZjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYSBIYXNo
VHJhaXRzIGltcGxlbWVudGF0aW9uIGZvciBMYXlvdXRVbml0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5v
dCBjaGFuZ2UgYmVoYXZpb3IgaW4gYW4gZWFzaWx5LW9ic2VydmFibGUgd2F5LCBidXQKKyAgICAg
ICAgY291bGQgcHJldmVudCByYXJlIGhhc2hpbmcgcHJvYmxlbXMgaW4gdGhlIGZ1dHVyZS4KKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKTogVXNlIExh
eW91dFVuaXQgYXMgdGhlIGhhc2gsIHdoaWNoIGF2b2lkcworICAgICAgICBhbmQgZXh0cmEgY29u
dmVyc2lvbiB0byBmbG9hdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRVbml0Lmg6IEFkZCBh
IEhhc2hUcmFpdHMgaW1wbGVtZW50YXRpb24gZm9yIExheW91dFVuaXQuCisKIDIwMjEtMDgtMDIg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mt
c2Nyb2xsLXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2ZW4gc25hcCBvZmZz
ZXQgd2hlbiBzbmFwcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5kZXggMjcxY2QyMTU4ZDlkZjEwMzg4Nzg5
MTBiM2M2MjliZmUyMjg0MzdhOC4uZjEzMzI1OWRiYmM1NDg4MTllOTMzZWI3NTk2MzhlMTcxYWI3
ZTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCB1cGRhdGVTbmFw
T2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwg
Y29uc3QgUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWRkT3JVcGRhdGVT
dG9wRm9yU25hcE9mZnNldCA9IFtdKEhhc2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5p
dD4+JiBvZmZzZXRzLCBMYXlvdXRVbml0IG5ld09mZnNldCwgU2Nyb2xsU25hcFN0b3Agc3RvcCwg
Ym9vbCBoYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydCwgc2l6ZV90IHNuYXBBcmVhSW5kaWNl
cykKKyAgICBhdXRvIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQgPSBbXShIYXNoTWFwPExh
eW91dFVuaXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBvZmZzZXRzLCBMYXlvdXRVbml0IG5l
d09mZnNldCwgU2Nyb2xsU25hcFN0b3Agc3RvcCwgYm9vbCBoYXNTbmFwQXJlYUxhcmdlclRoYW5W
aWV3cG9ydCwgc2l6ZV90IHNuYXBBcmVhSW5kaWNlcykKICAgICB7CiAgICAgICAgIGF1dG8gb2Zm
c2V0ID0gb2Zmc2V0cy5lbnN1cmUobmV3T2Zmc2V0LCBbJl0gewogICAgICAgICAgICAgcmV0dXJu
IFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4geyBuZXdPZmZzZXQsIHN0b3AsIGhhc1NuYXBBcmVhTGFy
Z2VyVGhhblZpZXdwb3J0LCB7IH0gfTsKQEAgLTI0Myw4ICsyNDMsOCBAQCB2b2lkIHVwZGF0ZVNu
YXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
LCBjb25zdCBSZQogICAgICAgICBvZmZzZXQuaXRlcmF0b3ItPnZhbHVlLnNuYXBBcmVhSW5kaWNl
cy5hcHBlbmQoc25hcEFyZWFJbmRpY2VzKTsKICAgICB9OwogCi0gICAgSGFzaE1hcDxmbG9hdCwg
U25hcE9mZnNldDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsKLSAgICBIYXNo
TWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHNN
YXA7CisgICAgSGFzaE1hcDxMYXlvdXRVbml0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRzTWFwOworICAgIEhhc2hNYXA8TGF5b3V0VW5pdCwgU25hcE9mZnNldDxM
YXlvdXRVbml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwOwogICAgIFZlY3RvcjxMYXlvdXRS
ZWN0PiBzbmFwQXJlYXM7CiAKICAgICBhdXRvIG1heFNjcm9sbE9mZnNldCA9IHNjcm9sbGFibGVB
cmVhLm1heGltdW1TY3JvbGxPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xheW91dFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQu
aAppbmRleCAxZTU3MTI4MjAxZGJmMDU3NGZhMjA5MDZiYmU5MTA3NWU3MmJhZWE5Li5hOWU3MDdh
MDI5Nzg4NzQ1ZmFjOWQ0MjFlYWM4YjFmZmE0MTY1MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGF5b3V0VW5pdC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1NhdHVyYXRl
ZEFyaXRobWV0aWMuaD4KIApAQCAtODM4LDMgKzgzOSwyOSBAQCBpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvciIiIF9sdSh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBMYXlvdXRVbml0SGFzaCB7
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoaW50KT46OlVuc2lnbmVkVHlw
ZSBCaXRzOworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkxheW91dFVu
aXQmIHApIHsgcmV0dXJuIGludEhhc2goYml0d2lzZV9jYXN0PEJpdHM+KHAucmF3VmFsdWUoKSkp
OyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6TGF5b3V0VW5pdCYgYSwg
Y29uc3QgV2ViQ29yZTo6TGF5b3V0VW5pdCYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsK
KworLy8gVGhlIGVtcHR5IHZhbHVlIGlzIElOVF9NSU4sIHRoZSBkZWxldGVkIHZhbHVlIGlzIElO
VF9NQVg7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkxheW91dFVuaXQ+
IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6TGF5b3V0VW5pdD4geworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIFdlYkNv
cmU6OkxheW91dFVuaXQgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAgICBXZWJDb3JlOjpMYXlv
dXRVbml0IHZhbHVlOworICAgICAgICB2YWx1ZS5zZXRSYXdWYWx1ZShzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1pbigpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6TGF5b3V0VW5pdCYgc2xvdCkg
eyBzbG90LnNldFJhd1ZhbHVlKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoV2ViQ29yZTo6TGF5b3V0VW5pdCB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUucmF3VmFsdWUoKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOyB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpMYXlv
dXRVbml0PiA6IExheW91dFVuaXRIYXNoIHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434823</attachid>
            <date>2021-08-03 02:50:57 -0700</date>
            <delta_ts>2021-08-04 01:42:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228630-20210803115054.patch</filename>
            <type>text/plain</type>
            <size>4211</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI5ZTc2NzQ4NmVlMDM0
M2NkOWRiNjU2YmQ0YzBmNDFlZjgwMDhlYS4uM2Y2NjRiZTAwYWJiMzkyY2QyNzZmMmY4OTcxYjZk
ZGFmZWFiZjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYSBIYXNo
VHJhaXRzIGltcGxlbWVudGF0aW9uIGZvciBMYXlvdXRVbml0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5v
dCBjaGFuZ2UgYmVoYXZpb3IgaW4gYW4gZWFzaWx5LW9ic2VydmFibGUgd2F5LCBidXQKKyAgICAg
ICAgY291bGQgcHJldmVudCByYXJlIGhhc2hpbmcgcHJvYmxlbXMgaW4gdGhlIGZ1dHVyZS4KKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKTogVXNlIExh
eW91dFVuaXQgYXMgdGhlIGhhc2gsIHdoaWNoIGF2b2lkcworICAgICAgICBhbmQgZXh0cmEgY29u
dmVyc2lvbiB0byBmbG9hdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRVbml0Lmg6IEFkZCBh
IEhhc2hUcmFpdHMgaW1wbGVtZW50YXRpb24gZm9yIExheW91dFVuaXQuCisKIDIwMjEtMDgtMDIg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mt
c2Nyb2xsLXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2ZW4gc25hcCBvZmZz
ZXQgd2hlbiBzbmFwcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5kZXggMjcxY2QyMTU4ZDlkZjEwMzg4Nzg5
MTBiM2M2MjliZmUyMjg0MzdhOC4uZjEzMzI1OWRiYmM1NDg4MTllOTMzZWI3NTk2MzhlMTcxYWI3
ZTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCB1cGRhdGVTbmFw
T2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwg
Y29uc3QgUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWRkT3JVcGRhdGVT
dG9wRm9yU25hcE9mZnNldCA9IFtdKEhhc2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5p
dD4+JiBvZmZzZXRzLCBMYXlvdXRVbml0IG5ld09mZnNldCwgU2Nyb2xsU25hcFN0b3Agc3RvcCwg
Ym9vbCBoYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydCwgc2l6ZV90IHNuYXBBcmVhSW5kaWNl
cykKKyAgICBhdXRvIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQgPSBbXShIYXNoTWFwPExh
eW91dFVuaXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBvZmZzZXRzLCBMYXlvdXRVbml0IG5l
d09mZnNldCwgU2Nyb2xsU25hcFN0b3Agc3RvcCwgYm9vbCBoYXNTbmFwQXJlYUxhcmdlclRoYW5W
aWV3cG9ydCwgc2l6ZV90IHNuYXBBcmVhSW5kaWNlcykKICAgICB7CiAgICAgICAgIGF1dG8gb2Zm
c2V0ID0gb2Zmc2V0cy5lbnN1cmUobmV3T2Zmc2V0LCBbJl0gewogICAgICAgICAgICAgcmV0dXJu
IFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4geyBuZXdPZmZzZXQsIHN0b3AsIGhhc1NuYXBBcmVhTGFy
Z2VyVGhhblZpZXdwb3J0LCB7IH0gfTsKQEAgLTI0Myw4ICsyNDMsOCBAQCB2b2lkIHVwZGF0ZVNu
YXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
LCBjb25zdCBSZQogICAgICAgICBvZmZzZXQuaXRlcmF0b3ItPnZhbHVlLnNuYXBBcmVhSW5kaWNl
cy5hcHBlbmQoc25hcEFyZWFJbmRpY2VzKTsKICAgICB9OwogCi0gICAgSGFzaE1hcDxmbG9hdCwg
U25hcE9mZnNldDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsKLSAgICBIYXNo
TWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHNN
YXA7CisgICAgSGFzaE1hcDxMYXlvdXRVbml0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRzTWFwOworICAgIEhhc2hNYXA8TGF5b3V0VW5pdCwgU25hcE9mZnNldDxM
YXlvdXRVbml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwOwogICAgIFZlY3RvcjxMYXlvdXRS
ZWN0PiBzbmFwQXJlYXM7CiAKICAgICBhdXRvIG1heFNjcm9sbE9mZnNldCA9IHNjcm9sbGFibGVB
cmVhLm1heGltdW1TY3JvbGxPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xheW91dFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQu
aAppbmRleCAxZTU3MTI4MjAxZGJmMDU3NGZhMjA5MDZiYmU5MTA3NWU3MmJhZWE5Li4zZTY5NmJm
NTkxMGM3Nzk5YjM4MTRkOWFmYzRhOGQ2MzIxYzI2ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGF5b3V0VW5pdC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1NhdHVyYXRl
ZEFyaXRobWV0aWMuaD4KIApAQCAtODM4LDMgKzgzOSwyNiBAQCBpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvciIiIF9sdSh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFdlYkNvcmU6OkxheW91dFVuaXQ+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBXZWJDb3JlOjpMYXlvdXRVbml0JiBwKSB7IHJldHVybiBEZWZhdWx0SGFzaDxpbnQ+Ojpo
YXNoKHAucmF3VmFsdWUoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3Jl
OjpMYXlvdXRVbml0JiBhLCBjb25zdCBXZWJDb3JlOjpMYXlvdXRVbml0JiBiKSB7IHJldHVybiBh
ID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7Cit9OworCisvLyBUaGUgZW1wdHkgdmFsdWUgaXMgSU5UX01JTiwgdGhlIGRl
bGV0ZWQgdmFsdWUgaXMgSU5UX01BWDsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2Vi
Q29yZTo6TGF5b3V0VW5pdD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpMYXlvdXRVbml0
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsK
KyAgICBzdGF0aWMgV2ViQ29yZTo6TGF5b3V0VW5pdCBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAg
ICAgIFdlYkNvcmU6OkxheW91dFVuaXQgdmFsdWU7CisgICAgICAgIHZhbHVlLnNldFJhd1ZhbHVl
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpOworICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpM
YXlvdXRVbml0JiBzbG90KSB7IHNsb3Quc2V0UmF3VmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShXZWJDb3JlOjpM
YXlvdXRVbml0IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5yYXdWYWx1ZSgpID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434894</attachid>
            <date>2021-08-04 01:42:59 -0700</date>
            <delta_ts>2021-08-04 05:57:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228630-20210804104258.patch</filename>
            <type>text/plain</type>
            <size>4412</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk3YzU0OWYwNGRkNjQ5
MjhhMGQ0ODEyYjZlYzYzYmYyOGRlMjgyNy4uNGY2OTAyNTJiM2Q1ODM1NjRiNjg4OGZjMTY3ODQ5
N2MzNDMzMjgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYSBIYXNo
VHJhaXRzIGltcGxlbWVudGF0aW9uIGZvciBMYXlvdXRVbml0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBGdWppaSBIaXJvbm9yaS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5v
dCBjaGFuZ2UgYmVoYXZpb3IgaW4gYW4gZWFzaWx5LW9ic2VydmFibGUgd2F5LCBidXQKKyAgICAg
ICAgY291bGQgcHJldmVudCByYXJlIGhhc2hpbmcgcHJvYmxlbXMgaW4gdGhlIGZ1dHVyZS4KKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKTogVXNlIExh
eW91dFVuaXQgYXMgdGhlIGhhc2gsIHdoaWNoIGF2b2lkcworICAgICAgICBhbmQgZXh0cmEgY29u
dmVyc2lvbiB0byBmbG9hdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRVbml0Lmg6IEFkZCBh
IEhhc2hUcmFpdHMgaW1wbGVtZW50YXRpb24gZm9yIExheW91dFVuaXQuCisKIDIwMjEtMDgtMDMg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlYWRh
YmxlU3RyZWFtJ3MgcGlwZVRvKCkgYW5kIHBpcGVUaHJvdWdoKCkgZG9uJ3QgcHJvcGVybHkgY2hl
Y2sgZm9yIEFib3J0U2lnbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAppbmRleCAyNzFjZDIxNThkOWRmMTAzODg3
ODkxMGIzYzYyOWJmZTIyODQzN2E4Li5mMTMzMjU5ZGJiYzU0ODgxOWU5MzNlYjc1OTYzOGUxNzFh
YjdlMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIHVwZGF0ZVNu
YXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
LCBjb25zdCBSZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhZGRPclVwZGF0
ZVN0b3BGb3JTbmFwT2Zmc2V0ID0gW10oSGFzaE1hcDxmbG9hdCwgU25hcE9mZnNldDxMYXlvdXRV
bml0Pj4mIG9mZnNldHMsIExheW91dFVuaXQgbmV3T2Zmc2V0LCBTY3JvbGxTbmFwU3RvcCBzdG9w
LCBib29sIGhhc1NuYXBBcmVhTGFyZ2VyVGhhblZpZXdwb3J0LCBzaXplX3Qgc25hcEFyZWFJbmRp
Y2VzKQorICAgIGF1dG8gYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCA9IFtdKEhhc2hNYXA8
TGF5b3V0VW5pdCwgU25hcE9mZnNldDxMYXlvdXRVbml0Pj4mIG9mZnNldHMsIExheW91dFVuaXQg
bmV3T2Zmc2V0LCBTY3JvbGxTbmFwU3RvcCBzdG9wLCBib29sIGhhc1NuYXBBcmVhTGFyZ2VyVGhh
blZpZXdwb3J0LCBzaXplX3Qgc25hcEFyZWFJbmRpY2VzKQogICAgIHsKICAgICAgICAgYXV0byBv
ZmZzZXQgPSBvZmZzZXRzLmVuc3VyZShuZXdPZmZzZXQsIFsmXSB7CiAgICAgICAgICAgICByZXR1
cm4gU25hcE9mZnNldDxMYXlvdXRVbml0PiB7IG5ld09mZnNldCwgc3RvcCwgaGFzU25hcEFyZWFM
YXJnZXJUaGFuVmlld3BvcnQsIHsgfSB9OwpAQCAtMjQzLDggKzI0Myw4IEBAIHZvaWQgdXBkYXRl
U25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEsIGNvbnN0IFJlCiAgICAgICAgIG9mZnNldC5pdGVyYXRvci0+dmFsdWUuc25hcEFyZWFJbmRp
Y2VzLmFwcGVuZChzbmFwQXJlYUluZGljZXMpOwogICAgIH07CiAKLSAgICBIYXNoTWFwPGZsb2F0
LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzTWFwOwotICAgIEhh
c2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0
c01hcDsKKyAgICBIYXNoTWFwPExheW91dFVuaXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IHZl
cnRpY2FsU25hcE9mZnNldHNNYXA7CisgICAgSGFzaE1hcDxMYXlvdXRVbml0LCBTbmFwT2Zmc2V0
PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHNNYXA7CiAgICAgVmVjdG9yPExheW91
dFJlY3Q+IHNuYXBBcmVhczsKIAogICAgIGF1dG8gbWF4U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsYWJs
ZUFyZWEubWF4aW11bVNjcm9sbE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGF5b3V0VW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5p
dC5oCmluZGV4IDFlNTcxMjgyMDFkYmYwNTc0ZmEyMDkwNmJiZTkxMDc1ZTcyYmFlYTkuLjc3MDg4
NDUzZTUwY2RhODBkYjhkNzkwM2I5OGE4ZTc1MTNiZTFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYXlvdXRVbml0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU2F0dXJh
dGVkQXJpdGhtZXRpYy5oPgogCkBAIC04MzgsMyArODM5LDI4IEBAIGlubGluZSBMYXlvdXRVbml0
IG9wZXJhdG9yIiIgX2x1KHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8V2ViQ29yZTo6TGF5b3V0VW5pdD4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFdlYkNvcmU6OkxheW91dFVuaXQmIHApIHsgcmV0dXJuIERlZmF1bHRIYXNoPGludD46
Omhhc2gocC5yYXdWYWx1ZSgpKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNv
cmU6OkxheW91dFVuaXQmIGEsIGNvbnN0IFdlYkNvcmU6OkxheW91dFVuaXQmIGIpIHsgcmV0dXJu
IGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkID0gdHJ1ZTsKK307CisKKy8vIFRoZSBlbXB0eSB2YWx1ZSBpcyBJTlRfTUlOLCB0aGUg
ZGVsZXRlZCB2YWx1ZSBpcyBJTlRfTUFYLiBEdXJpbmcgdGhlIGNvdXJzZSBvZiBsYXlvdXQKKy8v
IHRoZXNlIHZhbHVlcyBhcmUgdHlwaWNhbGx5IG9ubHkgdXNlZCB0byByZXByZXNlbnQgdW5pbml0
aWFsaXplZCB2YWx1ZXMsIHNvIHRoZXkgYXJlCisvLyBnb29kIGNhbmRpZGF0ZXMgdG8gcmVwcmVz
ZW50IHRoZSBkZWxldGVkIGFuZCBlbXB0eSB2YWx1ZXMgaW4gSGFzaE1hcHMgYXMgd2VsbC4KK3Rl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6TGF5b3V0VW5pdD4gOiBHZW5lcmlj
SGFzaFRyYWl0czxXZWJDb3JlOjpMYXlvdXRVbml0PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6TGF5b3V0
VW5pdCBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkxheW91dFVuaXQgdmFs
dWU7CisgICAgICAgIHZhbHVlLnNldFJhd1ZhbHVlKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWluKCkpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpMYXlvdXRVbml0JiBzbG90KSB7IHNsb3Quc2V0
UmF3VmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShXZWJDb3JlOjpMYXlvdXRVbml0IHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5yYXdWYWx1ZSgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>