<?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>234855</bug_id>
          
          <creation_ts>2022-01-04 11:57:45 -0800</creation_ts>
          <short_desc>Add FixedVector::clear(), contains(), find(), and findMatching().</short_desc>
          <delta_ts>2022-01-24 13:00:16 -0800</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234628</see_also>
          <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>
          
          <blocked>234864</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828025</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-04 11:57:45 -0800</bug_when>
    <thetext>This is needed so that we can use FixedVector in DeferredWorkTimer (see https://bugs.webkit.org/show_bug.cgi?id=234628#c2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828033</commentid>
    <comment_count>1</comment_count>
      <attachid>448318</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-04 12:22:24 -0800</bug_when>
    <thetext>Created attachment 448318
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828049</commentid>
    <comment_count>2</comment_count>
      <attachid>448318</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-04 12:55:22 -0800</bug_when>
    <thetext>Comment on attachment 448318
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828113</commentid>
    <comment_count>3</comment_count>
      <attachid>448318</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-04 15:06:05 -0800</bug_when>
    <thetext>Comment on attachment 448318
proposed patch.

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

&gt; Source/WTF/wtf/FixedVector.h:186
&gt; +size_t FixedVector&lt;T&gt;::findMatching(const MatchFunction&amp; matches) const

FWIW, the standard library calls this operation &quot;findIf&quot;, which I find slightly clearer. (&quot;Matching&quot; sort of implies that you are searching for &apos;matches&apos; as an entry in the subject vector.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828125</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-04 15:55:05 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 448318 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448318&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FixedVector.h:186
&gt; &gt; +size_t FixedVector&lt;T&gt;::findMatching(const MatchFunction&amp; matches) const
&gt; 
&gt; FWIW, the standard library calls this operation &quot;findIf&quot;, which I find
&gt; slightly clearer. (&quot;Matching&quot; sort of implies that you are searching for
&gt; &apos;matches&apos; as an entry in the subject vector.)

The findMatching name is a pre-existing one from WTF::Vector, and FixedVector aims to match Vector&apos;s API.  It looks like it is used all over the place.  I&apos;ll leave it as is for now so that we don&apos;t pollute this patch.  We can do a global rename in a separate patch later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828137</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-04 16:09:18 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; The findMatching name is a pre-existing one from WTF::Vector, and
&gt; FixedVector aims to match Vector&apos;s API.  It looks like it is used all over
&gt; the place.  I&apos;ll leave it as is for now so that we don&apos;t pollute this patch.
&gt; We can do a global rename in a separate patch later.

Will do this renaming in https://bugs.webkit.org/show_bug.cgi?id=234864.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829874</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-11 11:58:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/87412124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833392</commentid>
    <comment_count>7</comment_count>
      <attachid>448318</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-24 11:03:57 -0800</bug_when>
    <thetext>Comment on attachment 448318
proposed patch.

Thanks for the review.  Landing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833419</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-24 12:02:21 -0800</bug_when>
    <thetext>Committed r288458 (246344@main): &lt;https://commits.webkit.org/246344@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448318.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833444</commentid>
    <comment_count>9</comment_count>
      <attachid>448318</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 13:00:16 -0800</bug_when>
    <thetext>Comment on attachment 448318
proposed patch.

I think that adding contains, findMatching, and find, are small steps in the wrong direction.

All of these work well on a Span, no need to have them as member functions on Vector. We need to find a way to not replicate the huge number of Vector functions all on FixedVector, by changing them to non-member functions with Span arguments. Both Vector and FixedVector can be efficiently changed into a Span, which can be thought of as a sort of VectorView.

If we convert most const functions in Vector to work on Span, then we can use them on C arrays (possibly), std::array, any Span, Vector, FixedVector, or even other things we invent in the future.

I think that eventually we should be doing that with one function at a time, rather than replicating all the Vector functions one at a time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448318</attachid>
            <date>2022-01-04 12:22:24 -0800</date>
            <delta_ts>2022-01-24 12:02:24 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-234855.patch</filename>
            <type>text/plain</type>
            <size>9681</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3NTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIyLTAxLTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgRml4ZWRWZWN0b3I6OmNsZWFyKCksIGNvbnRhaW5zKCksIGZpbmQoKSwgYW5kIGZpbmRNYXRj
aGluZygpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIEZpeGVkVmVjdG9yIGluc3RlYWQgb2YgVmVjdG9yIGluIERlZmVycmVkV29ya1RpbWVyOjpU
aWNrZXREYXRhIG5vdyB0aGF0CisgICAgICAgIHRoZSBuZWVkZWQgQVBJcyBoYXZlIGJlZW4gYWRk
ZWQuCisKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmg6CisKIDIwMjItMDEt
MDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3Nl
bWJseSBpMzIuYXRvbWljLndhaXQgdGltZW91dCB2YWx1ZSBpbmNvcnJlY3RseSBpbnRlcnByZXRl
ZCBieSBmYWN0b3IgMTAwMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVm
ZXJyZWRXb3JrVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCShyZXZpc2lvbiAyODc1NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAg
IGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiAhc2NyaXB0RXhlY3V0aW9uT3duZXIu
Z2V0KCk7IH0KIAotICAgICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsK
KyAgICAgICAgRml4ZWRWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICAg
ICAgU3Ryb25nPEpTT2JqZWN0PiBzY3JpcHRFeGVjdXRpb25Pd25lcjsKICAgICB9OwogCkluZGV4
OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg3NTc3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIEZpeGVkVmVjdG9yOjpjbGVhcigpLCBjb250YWlucygpLCBm
aW5kKCksIGFuZCBmaW5kTWF0Y2hpbmcoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0ZpeGVkVmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZp
eGVkVmVjdG9yOjpjbGVhcik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yPFQ+Ojpjb250YWlu
cyBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yPFQ+OjpmaW5kTWF0Y2hpbmcgY29u
c3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3RvcjxUPjo6ZmluZCBjb25zdCk6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaXhlZFZl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgJKHJldmlz
aW9uIDI4NzU3NykKKysrIFNvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKICAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlz
KVtzaXplKCkgLSAxXTsgfQogICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRo
aXMpW3NpemUoKSAtIDFdOyB9CiAKKyAgICB2b2lkIGNsZWFyKCkgeyBtX3N0b3JhZ2UgPSBudWxs
cHRyOyB9CisKICAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKQogICAgIHsKICAgICAgICAgaWYg
KCFtX3N0b3JhZ2UpCkBAIC0xNTEsNiArMTUzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICptX3N0b3JhZ2UgPT0gKm90aGVyLm1fc3RvcmFnZTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIGNvbnRhaW5zKGNvbnN0IFUmKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBzaXplX3QgZmluZChjb25zdCBVJikgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTWF0Y2hGdW5jdGlvbj4gc2l6ZV90IGZpbmRNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0
aW9uJikgY29uc3Q7CisKICAgICB2b2lkIHN3YXAoRml4ZWRWZWN0b3I8VD4mIG90aGVyKQogICAg
IHsKICAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwpAQCAtMTY5LDYgKzE3NSwzMyBAQCBwcml2YXRl
Ogogc3RhdGljX2Fzc2VydChzaXplb2YoRml4ZWRWZWN0b3I8aW50PikgPT0gc2l6ZW9mKGludCop
KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+Citib29sIEZp
eGVkVmVjdG9yPFQ+Ojpjb250YWlucyhjb25zdCBVJiB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmluZCh2YWx1ZSkgIT0gbm90Rm91bmQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPgorc2l6ZV90IEZpeGVkVmVjdG9yPFQ+Ojpm
aW5kTWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYgbWF0Y2hlcykgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtYXRjaGVz
KGF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gbm90Rm91
bmQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorc2l6
ZV90IEZpeGVkVmVjdG9yPFQ+OjpmaW5kKGNvbnN0IFUmIHZhbHVlKSBjb25zdAoreworICAgIHJl
dHVybiBmaW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGl0ZW0g
PT0gdmFsdWU7CisgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9p
ZCBzd2FwKEZpeGVkVmVjdG9yPFQ+JiBhLCBGaXhlZFZlY3RvcjxUPiYgYikKIHsKICAgICBhLnN3
YXAoYik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODc1ODApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMS0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEZpeGVkVmVjdG9yOjpjbGVhcigpLCBjb250YWlucygpLCBmaW5k
KCksIGFuZCBmaW5kTWF0Y2hpbmcoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cyBmb3IgRml4ZWRWZWN0b3IuICBBbHNvIGFk
ZGVkIHRoZSBDbGVhckNvbnRhaW5zQW5kRmluZCB0ZXN0IHRvCisgICAgICAgIFZlY3RvciBzaW5j
ZSBpdCBpcyBtaXNzaW5nIHRoZXNlIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAxLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmUtZGlzYWJsZSBXS0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLkV4dGVuc2lvblRhYk5hdmlnYXRlZENhbGxiYWNrcyBBUEkgdGVz
dCBpbiBkZWJ1ZyBidWlsZHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
eGVkVmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaXhlZFZlY3Rvci5jcHAJKHJldmlzaW9uIDI4NzU3NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OCw2ICs3OCw0NiBA
QCBURVNUKFdURl9GaXhlZFZlY3RvciwgT3ZlcmxvYWRlZE9wZXJhdG9yCiAgICAgdmVjdG9yWzBd
ID0gVGVzdCgpOwogfQogCitURVNUKFdURl9GaXhlZFZlY3RvciwgQ2xlYXJDb250YWluc0FuZEZp
bmQpCit7CisgICAgRml4ZWRWZWN0b3I8aW50PiB2OworICAgIEVYUEVDVF9UUlVFKHYuaXNFbXB0
eSgpKTsKKyAgICB2LmNsZWFyKCk7CisgICAgRVhQRUNUX1RSVUUodi5pc0VtcHR5KCkpOworCisg
ICAgdiA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OworICAgIEVYUEVDVF9FUSgx
MFUsIHYuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uodi5jb250YWlucygxKSk7CisgICAgRVhQ
RUNUX0VRKG5vdEZvdW5kLCB2LmZpbmQoMSkpOworICAgIHYuY2xlYXIoKTsKKyAgICBFWFBFQ1Rf
VFJVRSh2LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHYuY29udGFpbnMoMSkpOworICAg
IEVYUEVDVF9FUShub3RGb3VuZCwgdi5maW5kKDEpKTsKKworICAgIHYgPSB7IDMsIDEsIDIsIDEs
IDEsIDQsIDIsIDIsIDEsIDEsIDMsIDUgfTsKKyAgICBFWFBFQ1RfRVEoMTJVLCB2LnNpemUoKSk7
CisgICAgRVhQRUNUX1RSVUUodi5jb250YWlucygzKSk7CisgICAgRVhQRUNUX1RSVUUodi5jb250
YWlucyg0KSk7CisgICAgRVhQRUNUX1RSVUUodi5jb250YWlucyg1KSk7CisgICAgRVhQRUNUX0ZB
TFNFKHYuY29udGFpbnMoNikpOworICAgIEVYUEVDVF9FUSgwVSwgdi5maW5kKDMpKTsKKyAgICBF
WFBFQ1RfRVEoNVUsIHYuZmluZCg0KSk7CisgICAgRVhQRUNUX0VRKDExVSwgdi5maW5kKDUpKTsK
KyAgICBFWFBFQ1RfRVEobm90Rm91bmQsIHYuZmluZCg2KSk7CisgICAgRVhQRUNUX1RSVUUodiA9
PSBGaXhlZFZlY3RvcjxpbnQ+KHsgMywgMSwgMiwgMSwgMSwgNCwgMiwgMiwgMSwgMSwgMywgNSB9
KSk7CisgICAgdi5jbGVhcigpOworICAgIEVYUEVDVF9FUSgwVSwgdi5zaXplKCkpOworICAgIEVY
UEVDVF9GQUxTRSh2LmNvbnRhaW5zKDMpKTsKKyAgICBFWFBFQ1RfRkFMU0Uodi5jb250YWlucyg0
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHYuY29udGFpbnMoNSkpOworICAgIEVYUEVDVF9GQUxTRSh2
LmNvbnRhaW5zKDYpKTsKKyAgICBFWFBFQ1RfRVEobm90Rm91bmQsIHYuZmluZCgzKSk7CisgICAg
RVhQRUNUX0VRKG5vdEZvdW5kLCB2LmZpbmQoNCkpOworICAgIEVYUEVDVF9FUShub3RGb3VuZCwg
di5maW5kKDUpKTsKKyAgICBFWFBFQ1RfRVEobm90Rm91bmQsIHYuZmluZCg2KSk7CisgICAgRVhQ
RUNUX1RSVUUodiA9PSBGaXhlZFZlY3RvcjxpbnQ+KHsgfSkpOworfQorCiBURVNUKFdURl9GaXhl
ZFZlY3RvciwgQ29weSkKIHsKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKQEAg
LTExNyw2ICsxNTcsMjEgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHlBc3NpZ24pCiAgICAg
RVhQRUNUX0VRKDJVLCB2ZWMyWzJdKTsKIH0KIAorVEVTVChXVEZfRml4ZWRWZWN0b3IsIEZpbmRN
YXRjaGluZykKK3sKKyAgICBGaXhlZFZlY3RvcjxpbnQ+IHY7CisgICAgRVhQRUNUX1RSVUUodi5m
aW5kTWF0Y2hpbmcoW10oaW50KSB7IHJldHVybiBmYWxzZTsgfSkgPT0gbm90Rm91bmQpOworICAg
IEVYUEVDVF9UUlVFKHYuZmluZE1hdGNoaW5nKFtdKGludCkgeyByZXR1cm4gdHJ1ZTsgfSkgPT0g
bm90Rm91bmQpOworCisgICAgdiA9IHsgMywgMSwgMiwgMSwgMiwgMSwgMiwgMiwgMSwgMSwgMSwg
MyB9OworICAgIEVYUEVDVF9UUlVFKHYuZmluZE1hdGNoaW5nKFtdKGludCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPiAzOyB9KSA9PSBub3RGb3VuZCk7CisgICAgRVhQRUNUX1RSVUUodi5maW5kTWF0
Y2hpbmcoW10oaW50KSB7IHJldHVybiBmYWxzZTsgfSkgPT0gbm90Rm91bmQpOworICAgIEVYUEVD
VF9FUSgwVSwgdi5maW5kTWF0Y2hpbmcoW10oaW50KSB7IHJldHVybiB0cnVlOyB9KSk7CisgICAg
RVhQRUNUX0VRKDBVLCB2LmZpbmRNYXRjaGluZyhbXShpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
IDw9IDM7IH0pKTsKKyAgICBFWFBFQ1RfRVEoMVUsIHYuZmluZE1hdGNoaW5nKFtdKGludCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPCAzOyB9KSk7CisgICAgRVhQRUNUX0VRKDJVLCB2LmZpbmRNYXRj
aGluZyhbXShpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDI7IH0pKTsKK30KKwogVEVTVChX
VEZfRml4ZWRWZWN0b3IsIE1vdmUpCiB7CiAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEo
Myk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAJKHJldmlz
aW9uIDI4NzU3NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjg1LDYgKzY4NSw0NiBAQCBURVNUKFdURl9WZWN0b3IsIFJlbW92ZUFs
bCkKICAgICBFWFBFQ1RfVFJVRSh2MiA9PSB2RXhwZWN0ZWQpOwogfQogCitURVNUKFdURl9WZWN0
b3IsIENsZWFyQ29udGFpbnNBbmRGaW5kKQoreworICAgIFZlY3RvcjxpbnQ+IHY7CisgICAgRVhQ
RUNUX1RSVUUodi5pc0VtcHR5KCkpOworICAgIHYuY2xlYXIoKTsKKyAgICBFWFBFQ1RfVFJVRSh2
LmlzRW1wdHkoKSk7CisKKyAgICB2ID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07
CisgICAgRVhQRUNUX0VRKDEwVSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRSh2LmNvbnRh
aW5zKDEpKTsKKyAgICBFWFBFQ1RfRVEobm90Rm91bmQsIHYuZmluZCgxKSk7CisgICAgdi5jbGVh
cigpOworICAgIEVYUEVDVF9UUlVFKHYuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uodi5j
b250YWlucygxKSk7CisgICAgRVhQRUNUX0VRKG5vdEZvdW5kLCB2LmZpbmQoMSkpOworCisgICAg
diA9IHsgMywgMSwgMiwgMSwgMSwgNCwgMiwgMiwgMSwgMSwgMywgNSB9OworICAgIEVYUEVDVF9F
USgxMlUsIHYuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh2LmNvbnRhaW5zKDMpKTsKKyAgICBF
WFBFQ1RfVFJVRSh2LmNvbnRhaW5zKDQpKTsKKyAgICBFWFBFQ1RfVFJVRSh2LmNvbnRhaW5zKDUp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uodi5jb250YWlucyg2KSk7CisgICAgRVhQRUNUX0VRKDBVLCB2
LmZpbmQoMykpOworICAgIEVYUEVDVF9FUSg1VSwgdi5maW5kKDQpKTsKKyAgICBFWFBFQ1RfRVEo
MTFVLCB2LmZpbmQoNSkpOworICAgIEVYUEVDVF9FUShub3RGb3VuZCwgdi5maW5kKDYpKTsKKyAg
ICBFWFBFQ1RfVFJVRSh2ID09IFZlY3RvcjxpbnQ+KHsgMywgMSwgMiwgMSwgMSwgNCwgMiwgMiwg
MSwgMSwgMywgNSB9KSk7CisgICAgdi5jbGVhcigpOworICAgIEVYUEVDVF9FUSgwVSwgdi5zaXpl
KCkpOworICAgIEVYUEVDVF9GQUxTRSh2LmNvbnRhaW5zKDMpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
di5jb250YWlucyg0KSk7CisgICAgRVhQRUNUX0ZBTFNFKHYuY29udGFpbnMoNSkpOworICAgIEVY
UEVDVF9GQUxTRSh2LmNvbnRhaW5zKDYpKTsKKyAgICBFWFBFQ1RfRVEobm90Rm91bmQsIHYuZmlu
ZCgzKSk7CisgICAgRVhQRUNUX0VRKG5vdEZvdW5kLCB2LmZpbmQoNCkpOworICAgIEVYUEVDVF9F
UShub3RGb3VuZCwgdi5maW5kKDUpKTsKKyAgICBFWFBFQ1RfRVEobm90Rm91bmQsIHYuZmluZCg2
KSk7CisgICAgRVhQRUNUX1RSVUUodiA9PSBWZWN0b3I8aW50Pih7IH0pKTsKK30KKwogVEVTVChX
VEZfVmVjdG9yLCBGaW5kTWF0Y2hpbmcpCiB7CiAgICAgVmVjdG9yPGludD4gdjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>