<?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>189780</bug_id>
          
          <creation_ts>2018-09-20 01:25:05 -0700</creation_ts>
          <short_desc>[JSC] Optimize Array#lastIndexOf</short_desc>
          <delta_ts>2018-09-26 09:12:50 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1461274</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-20 01:25:05 -0700</bug_when>
    <thetext>[JSC] Optimize Array#lastIndexOf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461275</commentid>
    <comment_count>1</comment_count>
      <attachid>350179</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-20 01:26:27 -0700</bug_when>
    <thetext>Created attachment 350179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462768</commentid>
    <comment_count>2</comment_count>
      <attachid>350179</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-24 11:05:21 -0700</bug_when>
    <thetext>Comment on attachment 350179
Patch

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

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:1274
&gt; +    if (isJSArray(thisObject)) {

There is a ton of duplicate code here with indexOf. Can we abstract away the way we iterate and combine these two implementations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463520</commentid>
    <comment_count>3</comment_count>
      <attachid>350179</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-25 22:15:28 -0700</bug_when>
    <thetext>Comment on attachment 350179
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:1274
&gt;&gt; +    if (isJSArray(thisObject)) {
&gt; 
&gt; There is a ton of duplicate code here with indexOf. Can we abstract away the way we iterate and combine these two implementations?

Sounds good. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463521</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-25 22:16:27 -0700</bug_when>
    <thetext>Committed r236496: &lt;https://trac.webkit.org/changeset/236496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463522</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-25 22:17:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/44785524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463609</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-26 09:12:50 -0700</bug_when>
    <thetext>Committed r236505: &lt;https://trac.webkit.org/changeset/236505&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350179</attachid>
            <date>2018-09-20 01:26:27 -0700</date>
            <delta_ts>2018-09-24 11:05:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189780-20180920172626.patch</filename>
            <type>text/plain</type>
            <size>15832</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NjNkYjRiNDRhNDllYWJiNDY5OGY4ODdhMWE1ZDgwM2M3OTJkMzk4Li44ZWY2MmQ2ZTBkZjUxNzYw
ODBhZTk0NGY4NGZhYTUzODlmYTgxMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOC0wOS0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIEFycmF5I2xhc3RJbmRleE9mCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBB
cnJheSNsYXN0SW5kZXhPZiBhcyB0aGUgc2FtZSB0byBBcnJheSNpbmRleE9mLiBXZSBhZGQgYSBm
YXN0IHBhdGgKKyAgICAgICAgZm9yIEpTQXJyYXkgd2l0aCBjb250aWd1b3VzIHN0b3JhZ2UuCisK
KyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisKIDIwMTgtMDktMTkgIFl1c3VrZSBTdXp1a2kgIDx5
dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBbSlNDXSBPcHRpbWl6ZSBBcnJh
eSNpbmRleE9mIGluIEMrKyBydW50aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZjcxNGMxZjVlOWQwZmNmZmUzZDIxNWU3ZDc1
YWJmYmVmOTk0NTQ5NS4uMGYwYWJmNjNkNmQ3NGNjZTgyMWViMTg4ZTJkOWJjOTkwYmJmMjVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMTI0NywxMSArMTI0NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUp
LnRvT2JqZWN0KGV4ZWMpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdGhpc09iaik7Ci0gICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKLSAgICAgICAgcmV0
dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdG9MZW5ndGgoZXhl
YywgdGhpc09iaik7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CisgICAgRVhDRVBUSU9O
X0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKKyAgICBpZiAoVU5M
SUtFTFkoIXRoaXNPYmplY3QpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHRvTGVuZ3RoKGV4ZWMsIHRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkgfHwgIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcigtMSkpOwogCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBKU1ZhbHVlIGZy
b21WYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgICAgICBkb3VibGUgZnJv
bURvdWJsZSA9IGZyb21WYWx1ZS50b0ludGVnZXIoZXhlYyk7Ci0gICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoZnJvbURvdWJsZSA8IDApIHsKICAgICAg
ICAgICAgIGZyb21Eb3VibGUgKz0gbGVuZ3RoOwogICAgICAgICAgICAgaWYgKGZyb21Eb3VibGUg
PCAwKQpAQCAtMTI3MCwxNCArMTI3MCw3OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAg
IEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOworCisgICAgaWYgKGlz
SlNBcnJheSh0aGlzT2JqZWN0KSkgeworICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXko
dGhpc09iamVjdCk7CisgICAgICAgIGlmIChhcnJheS0+Y2FuRG9GYXN0SW5kZXhlZEFjY2Vzcyh2
bSkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgICAg
IGlmICghc2VhcmNoRWxlbWVudC5pc051bWJlcigpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1
ZSBzZWFyY2hJbnQzMjsKKyAgICAgICAgICAgICAgICBpZiAoc2VhcmNoRWxlbWVudC5pc0ludDMy
KCkpCisgICAgICAgICAgICAgICAgICAgIHNlYXJjaEludDMyID0gc2VhcmNoRWxlbWVudDsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHNlYXJjaE51
bWJlciA9IHNlYXJjaEVsZW1lbnQuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFjYW5CZUludDMyKHNlYXJjaE51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICAgICAgICAgIHNl
YXJjaEludDMyID0ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2VhcmNoTnVtYmVyKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8mIGJ1dHRlcmZseSA9ICph
cnJheS0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICAgICAgYXV0byBkYXRhID0gYnV0dGVyZmx5
LmNvbnRpZ3VvdXMoKS5kYXRhKCk7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAvLyBB
cnJheSNsYXN0SW5kZXhPZiB1c2VzIGA9PT1gIHNlbWFudGljcyAobm90IEhhc2hNYXAgaXNFcXVh
bCBzZW1hbnRpY3MpLgorICAgICAgICAgICAgICAgICAgICAvLyBBbmQgdGhlIGhvbGUgbmV2ZXIg
bWF0Y2hlcyBhZ2FpbnN0IEludDMyIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICBpZiAoc2Vh
cmNoSW50MzIgPT0gZGF0YVtpbmRleF0uZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7CisgICAgICAgICAgICAgICAg
fSB3aGlsZSAoaW5kZXgtLSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcigtMSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBBTExfQ09O
VElHVU9VU19JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgICAgIGF1dG8mIGJ1dHRlcmZs
eSA9ICphcnJheS0+YnV0dGVyZmx5KCk7CisgICAgICAgICAgICAgICAgYXV0byBkYXRhID0gYnV0
dGVyZmx5LmNvbnRpZ3VvdXMoKS5kYXRhKCk7CisgICAgICAgICAgICAgICAgZG8geworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gZGF0YVtpbmRleF0uZ2V0KCk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgc2Vh
cmNoRWxlbWVudCwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgp
KTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChpbmRleC0tKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXNlYXJjaEVsZW1lbnQuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOworICAgICAgICAgICAgICAgIGRvdWJs
ZSBzZWFyY2hOdW1iZXIgPSBzZWFyY2hFbGVtZW50LmFzTnVtYmVyKCk7CisgICAgICAgICAgICAg
ICAgYXV0byYgYnV0dGVyZmx5ID0gKmFycmF5LT5idXR0ZXJmbHkoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGRhdGEgPSBidXR0ZXJmbHkuY29udGlndW91c0RvdWJsZSgpLmRhdGEoKTsKKyAgICAg
ICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IGxlbmd0
aCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEFycmF5I2xhc3RJbmRleE9mIHVzZXMgYD09PWAg
c2VtYW50aWNzIChub3QgSGFzaE1hcCBpc0VxdWFsIHNlbWFudGljcykuCisgICAgICAgICAgICAg
ICAgICAgIC8vIEFuZCB0aGUgaG9sZSBuZXZlciBtYXRjaGVzIHNpbmNlIGl0IGlzIE5hTi4KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbaW5kZXhdID09IHNlYXJjaE51bWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgp
KTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChpbmRleC0tKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCiAgICAgZG8gewotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRl
eCA8IGxlbmd0aCk7Ci0gICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNP
YmosIGluZGV4KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCk7CisgICAgICAgIEpTVmFs
dWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmplY3QsIGluZGV4KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGJvb2wgaXNFcXVhbCA9IEpTVmFsdWU6OnN0cmljdEVxdWFs
KGV4ZWMsIHNlYXJjaEVsZW1lbnQsIGUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKICAgICAgICAgaWYgKGlzRXF1YWwpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7CiAgICAgfSB3aGlsZSAoaW5kZXgtLSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZkMTNm
MDE3ZDczZTQ5YjEzMTU4ODUxYzkyYTdlMGM2MjNhYzg4NTUuLjk5MmY1MjU4YTQ4Mjg1Zjc0MGMx
YTMzYjhkODZmZmNmZTVmNGNjZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTgtMDktMjAgIFl1c3VrZSBT
dXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBPcHRp
bWl6ZSBBcnJheSNsYXN0SW5kZXhPZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg5NzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJyYXktbGFzdGluZGV4b2YtYXJyYXktcHJvdG90eXBl
LXRyYXAuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoQW5jZXN0b3JB
cnJheS5wcm90b3R5cGUuZ2V0IDIpOgorICAgICAgICAoQW5jZXN0b3JBcnJheSk6CisgICAgICAg
ICogc3RyZXNzL2FycmF5LWxhc3RpbmRleG9mLWhhdmUtYS1iYWQtdGltZS1jLXJ1bnRpbWUuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1sYXN0
aW5kZXhvZi1ob2xlLW5hbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0aHJvdy5uZXcuRXJyb3IpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1p
bmZpbml0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvdy5u
ZXcuRXJyb3IpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1uZWdhdGl2ZS16
ZXJvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93Lm5ldy5F
cnJvcik6CisgICAgICAgICogc3RyZXNzL2FycmF5LWxhc3RpbmRleG9mLW93bi1nZXR0ZXIuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3cubmV3LkVycm9yLmdl
dCBhcnJheSk6CisgICAgICAgIChnZXQgYXJyYXkpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1s
YXN0aW5kZXhvZi1wcm90b3R5cGUtdHJhcC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChEZXJpdmVkQXJyYXkucHJvdG90eXBlLmdldCAyKToKKyAgICAgICAgKERlcml2
ZWRBcnJheSk6CisKIDIwMTgtMDktMTkgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KIAogICAgICAgICBbSlNDXSBPcHRpbWl6ZSBBcnJheSNpbmRleE9mIGluIEMr
KyBydW50aW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1h
cnJheS1wcm90b3R5cGUtdHJhcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5LWxhc3RpbmRleG9m
LWFycmF5LXByb3RvdHlwZS10cmFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlN2JjN2JlOTExMTAzZGJjNTU4
NWJmNGI5MWY3MzVmMjIyNGIwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9h
cnJheS1sYXN0aW5kZXhvZi1hcnJheS1wcm90b3R5cGUtdHJhcC5qcwpAQCAtMCwwICsxLDQ1IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworY2xhc3MgQW5jZXN0b3JBcnJheSBleHRlbmRzIE9iamVjdCB7CisgICAgZ2V0
IDIoKSB7CisgICAgICAgIHRoaXMuY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIDQyOwor
ICAgIH0KK30KKworQXJyYXkucHJvdG90eXBlLl9fcHJvdG9fXyA9IEFuY2VzdG9yQXJyYXkucHJv
dG90eXBlOworCit7CisgICAgbGV0IGFycmF5ID0gW107CisgICAgYXJyYXkubGVuZ3RoID0gNDI7
CisgICAgc2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoNDIpLCAyKTsKKyAgICBzaG91bGRCZShh
cnJheS5jYWxsZWQsIHRydWUpOworfQoreworICAgIGxldCBhcnJheSA9IFsyMCwgMjBdOworICAg
IGFycmF5Lmxlbmd0aCA9IDQyOworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKDQyKSwg
Mik7CisgICAgc2hvdWxkQmUoYXJyYXkuY2FsbGVkLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYXJy
YXkgPSBbIkhlbGxvIl07CisgICAgYXJyYXkubGVuZ3RoID0gNDI7CisgICAgc2hvdWxkQmUoYXJy
YXkubGFzdEluZGV4T2YoNDIpLCAyKTsKKyAgICBzaG91bGRCZShhcnJheS5jYWxsZWQsIHRydWUp
OworfQoreworICAgIGxldCBhcnJheSA9IFs0Mi4xOTVdOworICAgIGFycmF5Lmxlbmd0aCA9IDQy
OworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKDQyKSwgMik7CisgICAgc2hvdWxkQmUo
YXJyYXkuY2FsbGVkLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYXJyYXkgPSBbIkhlbGxvIl07Cisg
ICAgYXJyYXkubGVuZ3RoID0gNDI7CisgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKKyAg
ICBzaG91bGRCZShhcnJheS5sYXN0SW5kZXhPZig0MiksIDIpOworICAgIHNob3VsZEJlKGFycmF5
LmNhbGxlZCwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1sYXN0
aW5kZXhvZi1oYXZlLWEtYmFkLXRpbWUtYy1ydW50aW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJy
YXktbGFzdGluZGV4b2YtaGF2ZS1hLWJhZC10aW1lLWMtcnVudGltZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MWJhYjIyNWE1ZTgwYWNmNjYyNGIxYTA5ZDY4OGM2OTJhOWYyNTUwCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktbGFzdGluZGV4b2YtaGF2ZS1hLWJhZC10aW1lLWMtcnVu
dGltZS5qcwpAQCAtMCwwICsxLDQzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgMiwgeworICAgIGdldCgpIHsKKyAgICAgICAgdGhpcy5jYWxsZWQg
PSB0cnVlOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorfSk7CisKK3sKKyAgICBsZXQgYXJy
YXkgPSBbXTsKKyAgICBhcnJheS5sZW5ndGggPSA0MjsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0
SW5kZXhPZig0MiksIDIpOworICAgIHNob3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9Cit7
CisgICAgbGV0IGFycmF5ID0gWzIwLCAyMF07CisgICAgYXJyYXkubGVuZ3RoID0gNDI7CisgICAg
c2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoNDIpLCAyKTsKKyAgICBzaG91bGRCZShhcnJheS5j
YWxsZWQsIHRydWUpOworfQoreworICAgIGxldCBhcnJheSA9IFsiSGVsbG8iXTsKKyAgICBhcnJh
eS5sZW5ndGggPSA0MjsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0SW5kZXhPZig0MiksIDIpOwor
ICAgIHNob3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGFycmF5ID0g
WzQyLjE5NV07CisgICAgYXJyYXkubGVuZ3RoID0gNDI7CisgICAgc2hvdWxkQmUoYXJyYXkubGFz
dEluZGV4T2YoNDIpLCAyKTsKKyAgICBzaG91bGRCZShhcnJheS5jYWxsZWQsIHRydWUpOworfQor
eworICAgIGxldCBhcnJheSA9IFsiSGVsbG8iXTsKKyAgICBhcnJheS5sZW5ndGggPSA0MjsKKyAg
ICBlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRl
eE9mKDQyKSwgMik7CisgICAgc2hvdWxkQmUoYXJyYXkuY2FsbGVkLCB0cnVlKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWxhc3RpbmRleG9mLWhvbGUtbmFuLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYXJyYXktbGFzdGluZGV4b2YtaG9sZS1uYW4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYy
ZWQ4Mzc1NTljM2FkN2ZiYjkwN2YxMTBlNjZjYTZlMDI5ZTk3MAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2FycmF5LWxhc3RpbmRleG9mLWhvbGUtbmFuLmpzCkBAIC0wLDAgKzEs
MTkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCisKK3sKKyAgICBsZXQgYXJyYXkgPSBbNDIsICwgLCAwXTsKKyAgICBz
aG91bGRCZShhcnJheS5sYXN0SW5kZXhPZihOdW1iZXIuTmFOKSwgLTEpOworICAgIHNob3VsZEJl
KGFycmF5Lmxhc3RJbmRleE9mKDApLCAzKTsKK30KK3sKKyAgICBsZXQgYXJyYXkgPSBbNDIuMTk1
LCAsICwgMF07CisgICAgc2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoTnVtYmVyLk5hTiksIC0x
KTsKK30KK3sKKyAgICBsZXQgYXJyYXkgPSBbNDIuMTk1LCBOdW1iZXIuTmFOLCAsIDBdOworICAg
IHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKE51bWJlci5OYU4pLCAtMSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1pbmZpbml0eS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FycmF5LWxhc3RpbmRleG9mLWluZmluaXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMGE0
YjYxNmQ3MmJkNjEwNmU2NjE3YWU5NWY3MDJhNDEwZTMzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1pbmZpbml0eS5qcwpAQCAtMCwwICsxLDIx
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworeworICAgIGxldCBhcnJheSA9IFs0Mi4xOTUsIC0wLjAsIC1JbmZpbml0
eV07CisgICAgc2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoSW5maW5pdHkpLCAtMSk7CisgICAg
c2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoLUluZmluaXR5KSwgMik7CisgICAgc2hvdWxkQmUo
YXJyYXkubGFzdEluZGV4T2YoNDIpLCAtMSk7Cit9Cit7CisgICAgbGV0IGFycmF5ID0gWzEsIDIs
IDMsIDBdOworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKEluZmluaXR5KSwgLTEpOwor
ICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKC1JbmZpbml0eSksIC0xKTsKK30KK3sKKyAg
ICBsZXQgYXJyYXkgPSBbIlN0cmluZyIsIDQyLjUsIEluZmluaXR5LCAzM107CisgICAgc2hvdWxk
QmUoYXJyYXkubGFzdEluZGV4T2YoSW5maW5pdHkpLCAyKTsKKyAgICBzaG91bGRCZShhcnJheS5s
YXN0SW5kZXhPZigtSW5maW5pdHkpLCAtMSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9hcnJheS1sYXN0aW5kZXhvZi1uZWdhdGl2ZS16ZXJvLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJy
YXktbGFzdGluZGV4b2YtbmVnYXRpdmUtemVyby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmJmMmFkNWQyZDFm
YTQ3MGE3ZTFiNzJjMDNjYTFlNWM4NTBkYjEzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvYXJyYXktbGFzdGluZGV4b2YtbmVnYXRpdmUtemVyby5qcwpAQCAtMCwwICsxLDI1IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworeworICAgIGxldCBhcnJheSA9IFs0Mi4xOTUsIC0wLjBdOworICAgIHNob3Vs
ZEJlKGFycmF5Lmxhc3RJbmRleE9mKDApLCAxKTsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0SW5k
ZXhPZigtMCksIDEpOworfQoreworICAgIGxldCBhcnJheSA9IFs0Mi4xOTUsIDAsIC0wLjBdOwor
ICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKDApLCAyKTsKKyAgICBzaG91bGRCZShhcnJh
eS5sYXN0SW5kZXhPZigtMCksIDIpOworfQoreworICAgIGxldCBhcnJheSA9IFs0MiwgMF07Cisg
ICAgc2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoMCksIDEpOworICAgIHNob3VsZEJlKGFycmF5
Lmxhc3RJbmRleE9mKC0wKSwgMSk7Cit9Cit7CisgICAgbGV0IGFycmF5ID0gWzQyLCAwLCA0NF07
CisgICAgc2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoMCksIDEpOworICAgIHNob3VsZEJlKGFy
cmF5Lmxhc3RJbmRleE9mKC0wKSwgMSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9h
cnJheS1sYXN0aW5kZXhvZi1vd24tZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktbGFz
dGluZGV4b2Ytb3duLWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGFiMDkxN2Q0YjQwYzI2NDQ4ZTI5
ZjdlYTU4YTEyMDNkYmNlY2IxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJy
YXktbGFzdGluZGV4b2Ytb3duLWdldHRlci5qcwpAQCAtMCwwICsxLDY2IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
eworICAgIGxldCBhcnJheSA9IFtdOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcnJheSwg
MiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICB0aGlzLmNhbGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhcnJheS5sZW5n
dGggPSA0MjsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0SW5kZXhPZig0MiksIDIpOworICAgIHNo
b3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGFycmF5ID0gWzIwLCAy
MF07CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFycmF5LCAyLCB7CisgICAgICAgIGdldCgp
IHsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiA0
MjsKKyAgICAgICAgfQorICAgIH0pOworICAgIGFycmF5Lmxlbmd0aCA9IDQyOworICAgIHNob3Vs
ZEJlKGFycmF5Lmxhc3RJbmRleE9mKDQyKSwgMik7CisgICAgc2hvdWxkQmUoYXJyYXkuY2FsbGVk
LCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYXJyYXkgPSBbIkhlbGxvIl07CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGFycmF5LCAyLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHRo
aXMuY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAg
IH0pOworICAgIGFycmF5Lmxlbmd0aCA9IDQyOworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRl
eE9mKDQyKSwgMik7CisgICAgc2hvdWxkQmUoYXJyYXkuY2FsbGVkLCB0cnVlKTsKK30KK3sKKyAg
ICBsZXQgYXJyYXkgPSBbNDIuMTk1XTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJyYXks
IDIsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgdGhpcy5jYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfSk7CisgICAgYXJyYXkubGVu
Z3RoID0gNDI7CisgICAgc2hvdWxkQmUoYXJyYXkubGFzdEluZGV4T2YoNDIpLCAyKTsKKyAgICBz
aG91bGRCZShhcnJheS5jYWxsZWQsIHRydWUpOworfQoreworICAgIGxldCBhcnJheSA9IFsiSGVs
bG8iXTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJyYXksIDIsIHsKKyAgICAgICAgZ2V0
KCkgeworICAgICAgICAgICAgdGhpcy5jYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IDQyOworICAgICAgICB9CisgICAgfSk7CisgICAgYXJyYXkubGVuZ3RoID0gNDI7CisgICAgZW5z
dXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0SW5kZXhPZig0
MiksIDIpOworICAgIHNob3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1wcm90b3R5cGUtdHJhcC5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FycmF5LWxhc3RpbmRleG9mLXByb3RvdHlwZS10cmFwLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVlNWVkY2IwNGZkZDk5MTYzYTk4ZjJhOTJjMWZkOTM5MGVkOTk5ZGEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1sYXN0aW5kZXhvZi1wcm90b3R5cGUtdHJhcC5q
cwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworY2xhc3MgRGVyaXZlZEFycmF5IGV4dGVuZHMg
QXJyYXkgeworICAgIGdldCAyKCkgeworICAgICAgICB0aGlzLmNhbGxlZCA9IHRydWU7CisgICAg
ICAgIHJldHVybiA0MjsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICBh
cnJheS5fX3Byb3RvX18gPSBEZXJpdmVkQXJyYXkucHJvdG90eXBlOworICAgIGFycmF5Lmxlbmd0
aCA9IDQyOworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKDQyKSwgMik7CisgICAgc2hv
dWxkQmUoYXJyYXkuY2FsbGVkLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYXJyYXkgPSBbMjAsIDIw
XTsKKyAgICBhcnJheS5fX3Byb3RvX18gPSBEZXJpdmVkQXJyYXkucHJvdG90eXBlOworICAgIGFy
cmF5Lmxlbmd0aCA9IDQyOworICAgIHNob3VsZEJlKGFycmF5Lmxhc3RJbmRleE9mKDQyKSwgMik7
CisgICAgc2hvdWxkQmUoYXJyYXkuY2FsbGVkLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYXJyYXkg
PSBbIkhlbGxvIl07CisgICAgYXJyYXkuX19wcm90b19fID0gRGVyaXZlZEFycmF5LnByb3RvdHlw
ZTsKKyAgICBhcnJheS5sZW5ndGggPSA0MjsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0SW5kZXhP
Zig0MiksIDIpOworICAgIHNob3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9Cit7CisgICAg
bGV0IGFycmF5ID0gWzQyLjE5NV07CisgICAgYXJyYXkuX19wcm90b19fID0gRGVyaXZlZEFycmF5
LnByb3RvdHlwZTsKKyAgICBhcnJheS5sZW5ndGggPSA0MjsKKyAgICBzaG91bGRCZShhcnJheS5s
YXN0SW5kZXhPZig0MiksIDIpOworICAgIHNob3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9
Cit7CisgICAgbGV0IGFycmF5ID0gWyJIZWxsbyJdOworICAgIGFycmF5Ll9fcHJvdG9fXyA9IERl
cml2ZWRBcnJheS5wcm90b3R5cGU7CisgICAgYXJyYXkubGVuZ3RoID0gNDI7CisgICAgZW5zdXJl
QXJyYXlTdG9yYWdlKGFycmF5KTsKKyAgICBzaG91bGRCZShhcnJheS5sYXN0SW5kZXhPZig0Miks
IDIpOworICAgIHNob3VsZEJlKGFycmF5LmNhbGxlZCwgdHJ1ZSk7Cit9Cg==
</data>
<flag name="review"
          id="367664"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>