<?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>197362</bug_id>
          
          <creation_ts>2019-04-29 00:54:22 -0700</creation_ts>
          <short_desc>normalizeMapKey should normalize NaN to one PureNaN bit pattern to make MapHash same</short_desc>
          <delta_ts>2019-04-29 19:54:21 -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>JavaScriptCore</component>
          <version>Safari 12</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.13</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrea Puddu">me</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>andrea.giammarchi</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>me</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1531111</commentid>
    <comment_count>0</comment_count>
    <who name="Andrea Puddu">me</who>
    <bug_when>2019-04-29 00:54:22 -0700</bug_when>
    <thetext>Given this code:

`const uniqueSet = new Set([NaN, 0/0])`

The content of `uniqueSet` is:

`Set {NaN, NaN} (2)`


This behaviour violates the step 2.a. of the SameValueZero spec which states:

&gt; &quot;If x is NaN and y is NaN, return true.&quot;

https://www.ecma-international.org/ecma-262/#sec-samevaluezero</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531114</commentid>
    <comment_count>1</comment_count>
    <who name="Andrea Puddu">me</who>
    <bug_when>2019-04-29 00:59:24 -0700</bug_when>
    <thetext>I&apos;m not sure but perhaps it&apos;s just a bug within the Set constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531120</commentid>
    <comment_count>2</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2019-04-29 01:41:17 -0700</bug_when>
    <thetext>FWIW the issue is not the constructor, rather the `.add(NaN)` followed by `.add(0/0)` or even `.add(Intinity/Infinity)`.

Coming from here https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/runtime/SetPrototype.cpp#L102 I think the issue might be in here: https://github.com/WebKit/webkit/blob/dad62415730c8df3cbbe654eb15f0585e74af04c/Source/JavaScriptCore/runtime/HashMapImpl.h#L462-L470

where I suspect `areKeysEqual(exec, key, bucket-&gt;key())` might consider the globally available `NaN` and those produced by `0/0` or `Infinity/Infinity` different.

The same applies for `Map`

```
const m = new Map;
m.set(0/0, &apos;0/0&apos;);
m.set(NaN, &apos;NaN&apos;);
m.get(0/0);
m.get(NaN);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531122</commentid>
    <comment_count>3</comment_count>
      <attachid>368446</attachid>
    <who name="Andrea Puddu">me</who>
    <bug_when>2019-04-29 01:54:17 -0700</bug_when>
    <thetext>Created attachment 368446
Modified testcase for Set.prototype.size

Attaching a modified version of:

`JSTests/es6/Set_Set.prototype.size.js`

I suggest to add this change to cover this particular case.

Sorry but I&apos;m unable to run the `run-javascriptcore-tests` script from my machine due to the missing xcode dependency (cannot install the latest one on my macOS version), but I believe that with these changes it will fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531123</commentid>
    <comment_count>4</comment_count>
    <who name="Andrea Puddu">me</who>
    <bug_when>2019-04-29 02:06:44 -0700</bug_when>
    <thetext>(In reply to Andrea Giammarchi from comment #2)

&gt; FWIW the issue is not the constructor, rather the `.add(NaN)` followed by `.add(0/0)` or even `.add(Intinity/Infinity)`. 

&gt; where I suspect `areKeysEqual(exec, key, bucket-&gt;key())` might consider the globally available `NaN` and those produced by `0/0` or `Infinity/Infinity` different.

&gt; The same applies for `Map`


Agreed! Thanks for investigating further</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531217</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 12:03:23 -0700</bug_when>
    <thetext>I think the problem may be we are producing non pure NaN double JSValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531312</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 14:44:39 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; I think the problem may be we are producing non pure NaN double JSValue.

No. produced NaN is one of the pure NaN. What we want is normalizing NaN into one canonicalized value to calculate hash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531325</commentid>
    <comment_count>7</comment_count>
      <attachid>368498</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 15:15:24 -0700</bug_when>
    <thetext>Created attachment 368498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531327</commentid>
    <comment_count>8</comment_count>
      <attachid>368498</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-29 15:18:00 -0700</bug_when>
    <thetext>Comment on attachment 368498
Patch

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

r=me

&gt; JSTests/stress/hash-table-with-normalized-nan.js:81
&gt; +}

an we also have a test for Map?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531329</commentid>
    <comment_count>9</comment_count>
      <attachid>368498</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 15:18:48 -0700</bug_when>
    <thetext>Comment on attachment 368498
Patch

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

Thanks!

&gt;&gt; JSTests/stress/hash-table-with-normalized-nan.js:81
&gt;&gt; +}
&gt; 
&gt; an we also have a test for Map?

Sounds nice, added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531331</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 15:25:11 -0700</bug_when>
    <thetext>Committed r244760: &lt;https://trac.webkit.org/changeset/244760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531333</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-29 15:26:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/50313976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531343</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 15:32:12 -0700</bug_when>
    <thetext>*** Bug 197360 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531413</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 19:54:21 -0700</bug_when>
    <thetext>Committed r244763: &lt;https://trac.webkit.org/changeset/244763&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>368446</attachid>
            <date>2019-04-29 01:54:17 -0700</date>
            <delta_ts>2019-04-29 01:54:17 -0700</delta_ts>
            <desc>Modified testcase for Set.prototype.size</desc>
            <filename>Set_Set.prototype.size.js</filename>
            <type>text/javascript</type>
            <size>175</size>
            <attacher name="Andrea Puddu">me</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gdGVzdCgpIHsKCnZhciBvYmogPSB7fTsKdmFyIHNldCA9IG5ldyBTZXQoKTsKCnNl
dC5hZGQoTmFOKTsKc2V0LmFkZCgwLzApOwpzZXQuYWRkKDQ1Nik7CgpyZXR1cm4gc2V0LnNpemUg
PT09IDI7Cgp9CgppZiAoIXRlc3QoKSkKICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBmYWlsZWQi
KTsKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368498</attachid>
            <date>2019-04-29 15:15:24 -0700</date>
            <delta_ts>2019-04-29 15:18:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197362-20190429151524.patch</filename>
            <type>text/plain</type>
            <size>7657</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGNjYWUyYjk2ZWYxYjQ2N2ZjZWQ0MzJkNWIyZWEwMDQzZTdhZGFlLi4zNTYxNjQ3ZmJmNDYwYTNh
NTRlOTBmZGU0ZjYyNmM3YzU4YWFjMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOS0wNC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIG5vcm1hbGl6ZU1hcEtleSBzaG91bGQgbm9ybWFsaXplIE5hTiB0byBvbmUg
UHVyZU5hTiBiaXQgcGF0dGVybiB0byBtYWtlIE1hcEhhc2ggc2FtZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3VyIE1hcC9TZXQncyBoYXNoIGFsZ29y
aXRobSByZWxpZXMgb24gdGhlIGJpdCBwYXR0ZXJuIG9mIEpTVmFsdWUuIFNvIG91ciBNYXAvU2V0
IGhhcworICAgICAgICBub3JtYWxpemF0aW9uIG9mIHRoZSBrZXksIHdoaWNoIG5vcm1hbGl6ZXMg
SW50MzIgLyBEb3VibGUgZXRjLiBCdXQgd2UgZGlkIG5vdCBub3JtYWxpemUKKyAgICAgICAgcHVy
ZSBOYU5zIGludG8gb25lIGNhbm9uaWNhbGl6ZWQgcHVyZSBOYU4uIFNvIHdlIGVuZCB1cCBoYXZp
bmcgbXVsdGlwbGUgZGlmZmVyZW50IHB1cmUgTmFOcworICAgICAgICBpbiBvbmUgTWFwL1NldC4g
VGhpcyBwYXRjaCBub3JtYWxpemVzIE5hTiBpbnRvIG9uZSBqc05hTigpLCB3aGljaCB1c2VzIFBO
YU4gZm9yIHRoZSByZXByZXNlbnRhdGlvbi4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3Jt
YWxpemVNYXBLZXkpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9ybWFsaXplTWFwS2V5KToK
KyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgIChKU0M6Om5vcm1hbGl6
ZU1hcEtleSk6CisKIDIwMTktMDQtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBKSVRTdHViUm91dGluZVNldCB3YXN0ZXMgMTgwS0Igb2YgSGFzaFRhYmxl
IGNhcGFjaXR5IG9uIGNhbi5jb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzExMWFjZjNlYWI1MmMwMDUyMDQ5MTZiOTBiYTI0MzAy
NjAwYjQ4NC4uM2MwMzkwNzI1ZTgzNTcyZWJhMWI2Mjk3NjAzZjBjMzBmNTgzZDkxNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEx
NzE0LDYgKzExNzE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vcm1hbGl6ZU1h
cEtleShOb2RlKiBub2RlKQogICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsKIAogICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgcGFzc1Rocm91Z2hDYXNlczsKKyAgICBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGRvbmVDYXNlczsKIAogICAgIHBhc3NUaHJvdWdoQ2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90TnVtYmVyKGtleVJlZ3MsIHNjcmF0Y2hHUFIpKTsKICAgICBwYXNzVGhy
b3VnaENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkludDMyKGtleVJlZ3MpKTsKQEAgLTExNzIz
LDE5ICsxMTcyNCwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm9ybWFsaXplTWFw
S2V5KE5vZGUqIG5vZGUpCiAjZWxzZQogICAgIHVuYm94RG91YmxlKGtleVJlZ3MudGFnR1BSKCks
IGtleVJlZ3MucGF5bG9hZEdQUigpLCBkb3VibGVWYWx1ZUZQUiwgdGVtcEZQUik7CiAjZW5kaWYK
LSAgICBwYXNzVGhyb3VnaENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5hTihkb3VibGVWYWx1
ZUZQUikpOworICAgIGF1dG8gbm90TmFOID0gbV9qaXQuYnJhbmNoSWZOb3ROYU4oZG91YmxlVmFs
dWVGUFIpOworICAgIG1faml0Lm1vdmVUcnVzdGVkVmFsdWUoanNOYU4oKSwgcmVzdWx0UmVncyk7
CisgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCisgICAgbm90TmFOLmxpbmso
Jm1faml0KTsKICAgICBtX2ppdC50cnVuY2F0ZURvdWJsZVRvSW50MzIoZG91YmxlVmFsdWVGUFIs
IHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHNjcmF0Y2hHUFIs
IHRlbXBGUFIpOwogICAgIHBhc3NUaHJvdWdoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaERvdWJs
ZShKSVRDb21waWxlcjo6RG91YmxlTm90RXF1YWwsIGRvdWJsZVZhbHVlRlBSLCB0ZW1wRlBSKSk7
CiAKICAgICBtX2ppdC5ib3hJbnQzMihzY3JhdGNoR1BSLCByZXN1bHRSZWdzKTsKLSAgICBhdXRv
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkp
OwogCiAgICAgcGFzc1Rocm91Z2hDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZh
bHVlUmVncyhrZXlSZWdzLCByZXN1bHRSZWdzKTsKIAotICAgIGRvbmUubGluaygmbV9qaXQpOwor
ICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IDYyYTZkMzM0YzMxMTFiZGIwNDk2NjA4MDBjMjFiYzkwNWJkYzkwYmIuLjlj
OTkwM2RlMzgxNDIwMzE2NDlmMDlmZTkwYTRjY2ZkMzFiNTk3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTk4MjIsNiArOTgyMiw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90SW50MzJO
dW1iZXJDYXNlLCBub3ROYU5DYXNlKTsKICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gdW5i
b3hEb3VibGUoa2V5KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9ybWFsaXplZE5hTlJlc3Vs
dCA9IG1fb3V0LmFuY2hvcihtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc05hTigp
KSkpOwogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZChkb3VibGVWYWx1ZSwgZG91YmxlVmFsdWUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KG5vdE5hTkNhc2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROYU5DYXNlLCBjb252
ZXJ0aWJsZUNhc2UpOwpAQCAtOTgzMCwxMSArOTgzMSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChk
b3VibGVWYWx1ZSwgaW50ZWdlclZhbHVlQ29udmVydGVkVG9Eb3VibGUpLCB1bnN1cmUoY29udGlu
dWF0aW9uKSwgdW5zdXJlKGNvbnZlcnRpYmxlQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnZlcnRpYmxlQ2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihib3hJbnQzMihpbnRlZ2VyVmFsdWUpKTsKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgYm94ZWRJbnRSZXN1bHQgPSBtX291dC5hbmNob3IoYm94SW50
MzIoaW50ZWdlclZhbHVlKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIG5vcm1hbGl6ZWRO
YU5SZXN1bHQsIGJveGVkSW50UmVzdWx0KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0
TWFwQnVja2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
CmluZGV4IDRlODdjODkyZjkxZGQ2MmY2ZDYzNGVlMzEyMzAyZDJiMzJlNGQ2NGUuLjhkZWE2OGYx
ZTkwYzk0YTU0MjJhYjI1ZTI5NWI0N2E3NDZhMjhmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI0
NSw3ICsyNDYsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgbm9ybWFsaXplTWFwS2V5KEpTVmFs
dWUga2V5KQogCiAgICAgZG91YmxlIGQgPSBrZXkuYXNEb3VibGUoKTsKICAgICBpZiAoc3RkOjpp
c25hbihkKSkKLSAgICAgICAgcmV0dXJuIGtleTsKKyAgICAgICAgcmV0dXJuIGpzTmFOKCk7CiAK
ICAgICBpbnQgaSA9IHN0YXRpY19jYXN0PGludD4oZCk7CiAgICAgaWYgKGkgPT0gZCkgewpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzMTZi
ODhlZmY5YWM0ZDc3MjA3ODI2YWViZDhiOWFiNGEyZDRjMzIyLi4zMmJhZWFiZDVmOWIzNGE0MjEw
Zjg0YTI4Y2VhOTgyMjAwMTE1MjY0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA0LTI5ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgbm9ybWFsaXplTWFwS2V5IHNo
b3VsZCBub3JtYWxpemUgTmFOIHRvIG9uZSBQdXJlTmFOIGJpdCBwYXR0ZXJuIHRvIG1ha2UgTWFw
SGFzaCBzYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9oYXNoLXRhYmxlLXdpdGgtbm9ybWFsaXplZC1uYW4uanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZGl2KToKKyAgICAgICAgKE5hTjEpOgorICAgICAg
ICAoTmFOMik6CisgICAgICAgIChOYU4zKToKKyAgICAgICAgKE5hTjQpOgorICAgICAgICAoTmFO
MU5vSW5saW5lKToKKyAgICAgICAgKE5hTjJOb0lubGluZSk6CisgICAgICAgIChOYU4zTm9Jbmxp
bmUpOgorICAgICAgICAoTmFONE5vSW5saW5lKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAg
KHRlc3Q0KToKKwogMjAxOS0wNC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0NDcwOC4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2hhc2gtdGFibGUtd2l0aC1ub3JtYWxpemVkLW5hbi5qcyBi
L0pTVGVzdHMvc3RyZXNzL2hhc2gtdGFibGUtd2l0aC1ub3JtYWxpemVkLW5hbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NzY5OGVhM2U5MmZkNjk0YjZmYjg0MWQyYjZjZjY1YmY3MjA1NDYxCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaGFzaC10YWJsZS13aXRoLW5vcm1hbGl6ZWQtbmFuLmpz
CkBAIC0wLDAgKzEsODEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmdW5jdGlv
biBkaXYoYSwgYikgeworICAgIHJldHVybiBhIC8gYjsKK30KK25vSW5saW5lKGRpdik7CisKK2Z1
bmN0aW9uIE5hTjEoKSB7CisgICAgcmV0dXJuIGRpdigwLCAwKTsKK30KK2Z1bmN0aW9uIE5hTjIo
KSB7CisgICAgcmV0dXJuIE5hTjsKK30KK2Z1bmN0aW9uIE5hTjMoKSB7CisgICAgcmV0dXJuIElu
ZmluaXR5L0luZmluaXR5OworfQorZnVuY3Rpb24gTmFONCgpIHsKKyAgICByZXR1cm4gTmFOICsg
TmFOOworfQorCitmdW5jdGlvbiBOYU4xTm9JbmxpbmUoKSB7CisgICAgcmV0dXJuIGRpdigwLCAw
KTsKK30KK25vSW5saW5lKE5hTjFOb0lubGluZSk7CitmdW5jdGlvbiBOYU4yTm9JbmxpbmUoKSB7
CisgICAgcmV0dXJuIE5hTjsKK30KK25vSW5saW5lKE5hTjJOb0lubGluZSk7CitmdW5jdGlvbiBO
YU4zTm9JbmxpbmUoKSB7CisgICAgcmV0dXJuIEluZmluaXR5L0luZmluaXR5OworfQorbm9Jbmxp
bmUoTmFOM05vSW5saW5lKTsKK2Z1bmN0aW9uIE5hTjROb0lubGluZSgpIHsKKyAgICByZXR1cm4g
TmFOICsgTmFOOworfQorbm9JbmxpbmUoTmFONE5vSW5saW5lKTsKKworZnVuY3Rpb24gdGVzdDEo
KQoreworICAgIHZhciBzZXQgPSBuZXcgU2V0KCk7CisgICAgc2V0LmFkZChOYU4xKCkpOworICAg
IHNldC5hZGQoTmFOMigpKTsKKyAgICBzZXQuYWRkKE5hTjMoKSk7CisgICAgc2V0LmFkZChOYU40
KCkpOworICAgIHJldHVybiBzZXQuc2l6ZTsKK30KK25vSW5saW5lKHRlc3QxKTsKKworZnVuY3Rp
b24gdGVzdDIoKQoreworICAgIHJldHVybiBuZXcgU2V0KFtOYU4xKCksIE5hTjIoKSwgTmFOMygp
LCBOYU40KCldKS5zaXplOworfQorbm9JbmxpbmUodGVzdDIpOworCitmdW5jdGlvbiB0ZXN0Mygp
Cit7CisgICAgdmFyIHNldCA9IG5ldyBTZXQoKTsKKyAgICBzZXQuYWRkKE5hTjFOb0lubGluZSgp
KTsKKyAgICBzZXQuYWRkKE5hTjJOb0lubGluZSgpKTsKKyAgICBzZXQuYWRkKE5hTjNOb0lubGlu
ZSgpKTsKKyAgICBzZXQuYWRkKE5hTjROb0lubGluZSgpKTsKKyAgICByZXR1cm4gc2V0LnNpemU7
Cit9Citub0lubGluZSh0ZXN0Myk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sKKyAgICByZXR1cm4g
bmV3IFNldChbTmFOMU5vSW5saW5lKCksIE5hTjJOb0lubGluZSgpLCBOYU4zTm9JbmxpbmUoKSwg
TmFONE5vSW5saW5lKCldKS5zaXplOworfQorbm9JbmxpbmUodGVzdDQpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdDEoKSwgMSk7CisgICAgc2hv
dWxkQmUodGVzdDIoKSwgMSk7CisgICAgc2hvdWxkQmUodGVzdDMoKSwgMSk7CisgICAgc2hvdWxk
QmUodGVzdDQoKSwgMSk7Cit9Cg==
</data>
<flag name="review"
          id="384786"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>