<?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>210317</bug_id>
          
          <creation_ts>2020-04-09 20:22:47 -0700</creation_ts>
          <short_desc>The rhs in `ReadModifyResolveNode` should be evaluated before throwing an exception if the lhs is read-only</short_desc>
          <delta_ts>2020-04-13 12:42:13 -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>WebKit Local 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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</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>1640006</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-09 20:22:47 -0700</bug_when>
    <thetext>```
(function() {
    let count = 0;

    const x = 42;
    try {
        x += (() =&gt; ++count)();
    } catch { }

    if (count !== 1)
        throw new Error(`expected 1 but got ${count}`);
})();
```

See NOTE 2 on &lt;https://tc39.es/proposal-logical-assignment/#sec-assignment-operators-runtime-semantics-evaluation&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640007</commentid>
    <comment_count>1</comment_count>
      <attachid>396038</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-09 20:26:25 -0700</bug_when>
    <thetext>Created attachment 396038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640022</commentid>
    <comment_count>2</comment_count>
      <attachid>396038</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-04-09 21:12:13 -0700</bug_when>
    <thetext>Comment on attachment 396038
Patch

Does this cause a test262 test to change, or maybe not one we have imported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640027</commentid>
    <comment_count>3</comment_count>
      <attachid>396038</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-09 21:34:12 -0700</bug_when>
    <thetext>Comment on attachment 396038
Patch

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

&gt; JSTests/stress/const-read-modify-assignment-eval-rhs-before-exception.js:24
&gt; +    try {
&gt; +        testConstReadModifyAssignmentRHSEvalBeforeException += (() =&gt; ++count)();
&gt; +    } catch { }

I&apos;m a bit worried about the fact that this test doesn&apos;t fail before your patch.
I spent a good while playing and I&apos;m honestly not sure how to hit the `!var.local() &amp;&amp; var.isReadOnly()` path in ReadModifyResolveNode (or AssignResolveNode).

(Tried top-level const, non-configurable non-writable global var, freezing the global object and then trying to set a global var in strict mode...these all lack `var.local()`, but none satisfy `var.isReadOnly()`.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640071</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-10 01:12:09 -0700</bug_when>
    <thetext>Alright, so here is a test that hits the non-local read-only path, fails before your patch, and succeeds with it:

(function () {
  let count = 0;

  const x = 42;
  function captureX() { return x; }

  try {
    x -= (() =&gt; count++)();
  } catch {
    if (count === 1)
      return;
  }
  throw new Error(&apos;failed!&apos;);
})();


I...actually don&apos;t understand why. I just adapted it from here:
https://github.com/WebKit/webkit/blob/master/JSTests/stress/const-semantics.js#L125-L129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640240</commentid>
    <comment_count>5</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-10 10:17:23 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #4)
&gt; Alright, so here is a test that hits the non-local read-only path, fails before your patch, and succeeds with it:
&gt; 
&gt; (function () {
&gt;   let count = 0;
&gt; 
&gt;   const x = 42;
&gt;   function captureX() { return x; }
&gt; 
&gt;   try {
&gt;     x -= (() =&gt; count++)();
&gt;   } catch {
&gt;     if (count === 1)
&gt;       return;
&gt;   }
&gt;   throw new Error(&apos;failed!&apos;);
&gt; })();
&gt; 
&gt; 
&gt; I...actually don&apos;t understand why. I just adapted it from here: https://github.com/WebKit/webkit/blob/master/JSTests/stress/const-semantics.js#L125-L129

(o.0) funky stuff :P

Thanks for the help! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640243</commentid>
    <comment_count>6</comment_count>
      <attachid>396098</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-10 10:23:15 -0700</bug_when>
    <thetext>Created attachment 396098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640259</commentid>
    <comment_count>7</comment_count>
      <attachid>396098</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-10 10:45:53 -0700</bug_when>
    <thetext>Comment on attachment 396098
Patch

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

r=me

&gt; JSTests/stress/const-read-modify-assignment-eval-rhs-before-exception.js:27
&gt; +Object.defineProperty(globalThis, &quot;testConstReadModifyAssignmentRHSEvalBeforeException&quot;, {

Hmm, if you don&apos;t remove this test you should probably at least change the property name, since it&apos;s a `!var.local() &amp;&amp; !var.isReadOnly()` red herring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640358</commentid>
    <comment_count>8</comment_count>
      <attachid>396098</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-10 14:15:15 -0700</bug_when>
    <thetext>Comment on attachment 396098
Patch

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

&gt;&gt; JSTests/stress/const-read-modify-assignment-eval-rhs-before-exception.js:27
&gt;&gt; +Object.defineProperty(globalThis, &quot;testConstReadModifyAssignmentRHSEvalBeforeException&quot;, {
&gt; 
&gt; Hmm, if you don&apos;t remove this test you should probably at least change the property name, since it&apos;s a `!var.local() &amp;&amp; !var.isReadOnly()` red herring.

I&apos;ll just remove it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640359</commentid>
    <comment_count>9</comment_count>
      <attachid>396121</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-10 14:16:15 -0700</bug_when>
    <thetext>Created attachment 396121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640378</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-10 14:50:15 -0700</bug_when>
    <thetext>Committed r259905: &lt;https://trac.webkit.org/changeset/259905&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396121.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640379</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-10 14:51:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/61605729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640799</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-13 01:03:43 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #4)
&gt; Alright, so here is a test that hits the non-local read-only path, fails
&gt; before your patch, and succeeds with it:
&gt; 
&gt; (function () {
&gt;   let count = 0;
&gt; 
&gt;   const x = 42;
&gt;   function captureX() { return x; }
&gt; 
&gt;   try {
&gt;     x -= (() =&gt; count++)();
&gt;   } catch {
&gt;     if (count === 1)
&gt;       return;
&gt;   }
&gt;   throw new Error(&apos;failed!&apos;);
&gt; })();
&gt; 
&gt; 
&gt; I...actually don&apos;t understand why. I just adapted it from here:
&gt; https://github.com/WebKit/webkit/blob/master/JSTests/stress/const-semantics.
&gt; js#L125-L129

This makes sense. !!.local() means it wasn’t captured. So it lives in a bytecode local for this function that’s being compiled. If .local() is false, it’s captured</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641042</commentid>
    <comment_count>13</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-13 12:42:13 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #12)
&gt; This makes sense. !!.local() means it wasn’t captured. So it lives in a
&gt; bytecode local for this function that’s being compiled. If .local() is
&gt; false, it’s captured

Ahh, that&apos;s clear then, thanks! My brain was stuck on thinking about &quot;local vs. global&quot;...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396038</attachid>
            <date>2020-04-09 20:26:25 -0700</date>
            <delta_ts>2020-04-10 10:23:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210317-20200409212624.patch</filename>
            <type>text/plain</type>
            <size>7771</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNjZDFmMGYxMzQ0NzBlMDRhNDM2MDc4NzA3NTYx
NDVhMTIxNzU4OGEuLjEwZTcyNjMwZGI1MDRhYzkxYWMwZDMwNTA3YzVlN2IzMzNmYWE2MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTA5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgcmhzIGluIGBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGVgIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHRocm93aW5nIGFu
IGV4Y2VwdGlvbiBpZiB0aGUgbGhzIGlzIHJlYWQtb25seQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6ZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KToKKyAgICAgICAgKEpT
Qzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICBJZiB0aGUg
Y29ycmVzcG9uZGluZyBgVmFyaWFibGVgIGlzIHJlYWQtb25seSwgcGFzcyBpdCB0byBgZW1pdFJl
YWRNb2RpZnlBc3NpZ25tZW50YCBhcyBhbgorICAgICAgICBhZGRpdGlvbmFsIG9wdGlvbmwgYXJn
dW1lbnQsIHdoZXJlIGl0IHdpbGwgYmUgdXNlZCB0byBgZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZO
ZWVkZWRgIGFmdGVyCisgICAgICAgIHRoZSByaHMgaXMgZW1pdHRlZC4KKwogMjAyMC0wNC0wOCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBTaW1wbGlm
eSBOU0FycmF5LCBOU0RpY3Rpb25hcnksIGFuZCBOU051bWJlciBpZGlvbXMgdGhyb3VnaG91dCBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCA0YzQzNDg4ODJjZmJjMjY5MjQ3YTc3MjJhNzJlYWIzOWJlMmVjNDlh
Li5kNGZkYjRkZDU0ZDQ5MmY5MGQyZDcyMWZkN2RhYzEyZmY3ZDJmODUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0y
NzUyLDcgKzI3NTIsNyBAQCBSZWdpc3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgbW92ZWQgdG8g
YmUgYSBtZXRob2Qgb24gQnl0ZWNvZGVHZW5lcmF0b3I/Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBS
ZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBFeHByZXNzaW9uTm9k
ZSogbV9yaWdodCwgT3BlcmF0b3Igb3BlciwgT3BlcmFuZFR5cGVzIHR5cGVzLCBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lID0gMCkKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIFJlZ2lzdGVySUQqIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIEV4cHJl
c3Npb25Ob2RlKiBtX3JpZ2h0LCBPcGVyYXRvciBvcGVyLCBPcGVyYW5kVHlwZXMgdHlwZXMsIFJl
YWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUgPSBudWxscHRyLCBW
YXJpYWJsZSogZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWRGb3JNZSA9IG51bGxwdHIpCiB7
CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQ7CiAgICAgc3dpdGNoIChvcGVyKSB7CkBAIC0yNzYzLDgg
KzI3NjMsMTMgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJJRCogZW1pdFJlYWRNb2Rp
ZnlBc3NpZ25tZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW4KICAgICAgICAgb3Bjb2RlSUQgPSBv
cF9kaXY7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3BlcmF0b3I6OlBsdXNFcToKLSAgICAg
ICAgaWYgKG1fcmlnaHQtPmlzQWRkKCkgJiYgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpLmRl
ZmluaXRlbHlJc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFkZE5v
ZGUqPihtX3JpZ2h0KS0+ZW1pdFN0cmNhdChnZW5lcmF0b3IsIGRzdCwgc3JjMSwgZW1pdEV4cHJl
c3Npb25JbmZvRm9yTWUpOworICAgICAgICBpZiAobV9yaWdodC0+aXNBZGQoKSAmJiBtX3JpZ2h0
LT5yZXN1bHREZXNjcmlwdG9yKCkuZGVmaW5pdGVseUlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFkZE5vZGUqPihtX3JpZ2h0KS0+ZW1p
dFN0cmNhdChnZW5lcmF0b3IsIGRzdCwgc3JjMSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUpOwor
ICAgICAgICAgICAgaWYgKGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkRm9yTWUpCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCplbWl0
UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZEZvck1lKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKwogICAgICAgICBvcGNvZGVJRCA9IG9wX2FkZDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBPcGVyYXRvcjo6TWludXNFcToKQEAgLTI4MDEsMTAgKzI4MDYsMTcgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJJRCogZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW4KIAogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9yaWdodCk7CiAKKyAgICBpZiAoZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZO
ZWVkZWRGb3JNZSkgeworICAgICAgICBib29sIHRocmV3RXhjZXB0aW9uID0gZ2VuZXJhdG9yLmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRl
ZEZvck1lKTsKKyAgICAgICAgaWYgKHRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IHNyYzI7CisgICAgfQorCiAgICAgLy8gQ2VydGFpbiByZWFkLW1vZGlmeSBub2RlcyByZXF1aXJl
IGV4cHJlc3Npb24gaW5mbyB0byBiZSBlbWl0dGVkICphZnRlciogbV9yaWdodCBoYXMgYmVlbiBn
ZW5lcmF0ZWQuCiAgICAgLy8gSWYgdGhpcyBpcyByZXF1aXJlZCB0aGUgbm9kZSBpcyBwYXNzZWQg
YXMgJ2VtaXRFeHByZXNzaW9uSW5mb0Zvck1lJzsgZG8gc28gbm93LgogICAgIGlmIChlbWl0RXhw
cmVzc2lvbkluZm9Gb3JNZSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhl
bWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3QoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUt
PmRpdm90U3RhcnQoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90RW5kKCkpOworCiAg
ICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJRCwg
ZHN0LCBzcmMxLCBzcmMyLCB0eXBlcyk7CiAgICAgaWYgKG9wZXIgPT0gT3BlcmF0b3I6OlVSU2hp
ZnQpCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3A8T3BVbnNpZ25lZD4ocmVz
dWx0LCByZXN1bHQpOwpAQCAtMjgxOCw4ICsyODMwLDcgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlm
eVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmUKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBsb2NhbCwgbnVsbHB0cik7CiAg
ICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKLSAgICAgICAgICAgIFJlZ2lzdGVySUQq
IHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFz
c2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2Nh
bCwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25U
eXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSksIG51bGxwdHIsICZ2YXIpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXN1bHQsIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC0y
ODQyLDEyICsyODUzLDcgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNj
b3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5v
dEZvdW5kKTsKICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCB2YWx1
ZS5nZXQoKSwgbnVsbHB0cik7Ci0gICAgaWYgKHZhci5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAg
Ym9vbCB0aHJld0V4Y2VwdGlvbiA9IGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5l
ZWRlZCh2YXIpOwotICAgICAgICBpZiAodGhyZXdFeGNlcHRpb24pCi0gICAgICAgICAgICByZXR1
cm4gdmFsdWUuZ2V0KCk7Ci0gICAgfQotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBl
bWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3Is
IE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHRE
ZXNjcmlwdG9yKCkpLCB0aGlzKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1p
dFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBP
cGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVz
Y3JpcHRvcigpKSwgdGhpcywgdmFyLmlzUmVhZE9ubHkoKSA/ICZ2YXIgOiBudWxscHRyKTsKICAg
ICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCF2YXIu
aXNSZWFkT25seSgpKSB7CiAgICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCksIFRocm93SWZOb3RGb3VuZCwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGExMmYxODEzOWZiNmU1NGRi
YTM2MjNkZTFmZjI4YzAzNjg3MTcyMDAuLjIzMGQyZWQwNmIwYjY3NGM2NzhhODAzZGVlZjY5ZmI0
NWE4MzY1YzUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDQtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSByaHMgaW4gYFJlYWRNb2RpZnlSZXNvbHZlTm9k
ZWAgc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGlmIHRo
ZSBsaHMgaXMgcmVhZC1vbmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAzMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9jb25zdC1yZWFkLW1vZGlmeS1hc3NpZ25tZW50LWV2YWwtcmhz
LWJlZm9yZS1leGNlcHRpb24uanM6IEFkZGVkLgorCiAyMDIwLTA0LTA5ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTW9kdWxlRW52aXJvbm1lbnQg
ZG8gbm90IGhhdmUgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgYXMgaXRzIHVwcGVyIHNjb3Bl
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jb25zdC1yZWFkLW1vZGlmeS1hc3NpZ25tZW50
LWV2YWwtcmhzLWJlZm9yZS1leGNlcHRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9jb25zdC1yZWFk
LW1vZGlmeS1hc3NpZ25tZW50LWV2YWwtcmhzLWJlZm9yZS1leGNlcHRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjg3OWFjOGY4OGM0ZjE3ZTcwYzRiOWUwMmVlZTIyYTMyZTA2Yjg3NQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbnN0LXJlYWQtbW9kaWZ5LWFzc2lnbm1lbnQtZXZhbC1y
aHMtYmVmb3JlLWV4Y2VwdGlvbi5qcwpAQCAtMCwwICsxLDI4IEBACisoZnVuY3Rpb24oKSB7Cisg
ICAgbGV0IGNvdW50ID0gMDsKKworICAgIGNvbnN0IHggPSA0MjsKKyAgICB0cnkgeworICAgICAg
ICB4ICs9ICgoKSA9PiArK2NvdW50KSgpOworICAgIH0gY2F0Y2ggeyB9CisKKyAgICBpZiAoY291
bnQgIT09IDEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgMSBidXQgZ290ICR7
Y291bnR9YCk7Cit9KSgpOworCitPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywgInRl
c3RDb25zdFJlYWRNb2RpZnlBc3NpZ25tZW50UkhTRXZhbEJlZm9yZUV4Y2VwdGlvbiIsIHsKKyAg
ICB2YWx1ZTogNDIsCisgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICB3cml0YWJsZTogZmFs
c2UsCit9KTsKKworKGZ1bmN0aW9uKCkgeworICAgIGxldCBjb3VudCA9IDA7CisKKyAgICB0cnkg
eworICAgICAgICB0ZXN0Q29uc3RSZWFkTW9kaWZ5QXNzaWdubWVudFJIU0V2YWxCZWZvcmVFeGNl
cHRpb24gKz0gKCgpID0+ICsrY291bnQpKCk7CisgICAgfSBjYXRjaCB7IH0KKworICAgIGlmIChj
b3VudCAhPT0gMSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAxIGJ1dCBnb3Qg
JHtjb3VudH1gKTsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396098</attachid>
            <date>2020-04-10 10:23:15 -0700</date>
            <delta_ts>2020-04-10 14:16:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210317-20200410112314.patch</filename>
            <type>text/plain</type>
            <size>7928</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNmMjQ0NzA3ZmI4ZmIzYjhjMDE2ODQ1ZDk4ZmQw
YzRhYmEzYTUzODUuLmRmMjE0NWU4MjY3OGJkMTc3YWVlNjMyMDQ5ZWIzODljNzg4MGZhODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSArMSwxNSBAQAorMjAyMC0wNC0xMCAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHJocyBpbiBgUmVhZE1v
ZGlmeVJlc29sdmVOb2RlYCBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSB0aHJvd2luZyBhbiBl
eGNlcHRpb24gaWYgdGhlIGxocyBpcyByZWFkLW9ubHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDMxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OmVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudCk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgSWYgdGhlIGNv
cnJlc3BvbmRpbmcgYFZhcmlhYmxlYCBpcyByZWFkLW9ubHksIHBhc3MgaXQgdG8gYGVtaXRSZWFk
TW9kaWZ5QXNzaWdubWVudGAgYXMgYW4KKyAgICAgICAgYWRkaXRpb25hbCBvcHRpb25sIGFyZ3Vt
ZW50LCB3aGVyZSBpdCB3aWxsIGJlIHVzZWQgdG8gYGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkYCBhZnRlcgorICAgICAgICB0aGUgcmhzIGlzIGVtaXR0ZWQuCisKID09IFJvbGxlZCBvdmVy
IHRvIENoYW5nZUxvZy0yMDIwLTA0LTEwID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNGM0MzQ4ODgyY2ZiYzI2OTI0
N2E3NzIyYTcyZWFiMzliZTJlYzQ5YS4uZDRmZGI0ZGQ1NGQ0OTJmOTBkMmQ3MjFmZDdkYWMxMmZm
N2QyZjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtMjc1Miw3ICsyNzUyLDcgQEAgUmVnaXN0ZXJJRCogQ29uZGl0
aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXIKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRklYTUU6IHNo
b3VsZCB0aGlzIGJlIG1vdmVkIHRvIGJlIGEgbWV0aG9kIG9uIEJ5dGVjb2RlR2VuZXJhdG9yPwot
c3RhdGljIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJJRCogZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjMSwgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQsIE9wZXJhdG9yIG9wZXIsIE9wZXJhbmRU
eXBlcyB0eXBlcywgUmVhZE1vZGlmeVJlc29sdmVOb2RlKiBlbWl0RXhwcmVzc2lvbkluZm9Gb3JN
ZSA9IDApCitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFz
c2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMxLCBFeHByZXNzaW9uTm9kZSogbV9yaWdodCwgT3BlcmF0b3Igb3Blciwg
T3BlcmFuZFR5cGVzIHR5cGVzLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9u
SW5mb0Zvck1lID0gbnVsbHB0ciwgVmFyaWFibGUqIGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkRm9yTWUgPSBudWxscHRyKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEOwogICAgIHN3aXRj
aCAob3BlcikgewpAQCAtMjc2Myw4ICsyNzYzLDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJl
Z2lzdGVySUQqIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
CiAgICAgICAgIG9wY29kZUlEID0gb3BfZGl2OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9w
ZXJhdG9yOjpQbHVzRXE6Ci0gICAgICAgIGlmIChtX3JpZ2h0LT5pc0FkZCgpICYmIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKS5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBZGROb2RlKj4obV9yaWdodCktPmVtaXRTdHJjYXQoZ2VuZXJhdG9y
LCBkc3QsIHNyYzEsIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lKTsKKyAgICAgICAgaWYgKG1fcmln
aHQtPmlzQWRkKCkgJiYgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpLmRlZmluaXRlbHlJc1N0
cmluZygpKSB7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxB
ZGROb2RlKj4obV9yaWdodCktPmVtaXRTdHJjYXQoZ2VuZXJhdG9yLCBkc3QsIHNyYzEsIGVtaXRF
eHByZXNzaW9uSW5mb0Zvck1lKTsKKyAgICAgICAgICAgIGlmIChlbWl0UmVhZE9ubHlFeGNlcHRp
b25JZk5lZWRlZEZvck1lKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlF
eGNlcHRpb25JZk5lZWRlZCgqZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWRGb3JNZSk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKICAgICAgICAgb3Bjb2RlSUQg
PSBvcF9hZGQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3BlcmF0b3I6Ok1pbnVzRXE6CkBA
IC0yODAxLDEwICsyODA2LDE3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQqIGVt
aXRSZWFkTW9kaWZ5QXNzaWdubWVudChCeXRlY29kZUdlbmVyYXRvciYgZ2VuCiAKICAgICBSZWdp
c3RlcklEKiBzcmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fcmlnaHQpOwogCisgICAgaWYgKGVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkRm9yTWUpIHsKKyAgICAgICAgYm9vbCB0aHJld0V4
Y2VwdGlvbiA9IGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgqZW1pdFJl
YWRPbmx5RXhjZXB0aW9uSWZOZWVkZWRGb3JNZSk7CisgICAgICAgIGlmICh0aHJld0V4Y2VwdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBzcmMyOworICAgIH0KKwogICAgIC8vIENlcnRhaW4gcmVh
ZC1tb2RpZnkgbm9kZXMgcmVxdWlyZSBleHByZXNzaW9uIGluZm8gdG8gYmUgZW1pdHRlZCAqYWZ0
ZXIqIG1fcmlnaHQgaGFzIGJlZW4gZ2VuZXJhdGVkLgogICAgIC8vIElmIHRoaXMgaXMgcmVxdWly
ZWQgdGhlIG5vZGUgaXMgcGFzc2VkIGFzICdlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSc7IGRvIHNv
IG5vdy4KICAgICBpZiAoZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90KCksIGVt
aXRFeHByZXNzaW9uSW5mb0Zvck1lLT5kaXZvdFN0YXJ0KCksIGVtaXRFeHByZXNzaW9uSW5mb0Zv
ck1lLT5kaXZvdEVuZCgpKTsKKwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5l
bWl0QmluYXJ5T3Aob3Bjb2RlSUQsIGRzdCwgc3JjMSwgc3JjMiwgdHlwZXMpOwogICAgIGlmIChv
cGVyID09IE9wZXJhdG9yOjpVUlNoaWZ0KQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRV
bmFyeU9wPE9wVW5zaWduZWQ+KHJlc3VsdCwgcmVzdWx0KTsKQEAgLTI4MTgsOCArMjgzMCw3IEBA
IFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFy
LmxvY2FsKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZh
ciwgbG9jYWwsIG51bGxwdHIpOwogICAgICAgICBpZiAodmFyLmlzUmVhZE9ubHkoKSkgewotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7Ci0g
ICAgICAgICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQo
Z2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbCwgbV9yaWdo
dCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1f
cmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcmVz
dWx0ID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgbG9jYWwsIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBl
cyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkp
LCBudWxscHRyLCAmdmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cmVzdWx0LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfQpAQCAtMjg0MiwxMiArMjg1Myw3IEBAIFJlZ2lzdGVySUQqIFJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3Bl
LmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVj
a0lmTmVjZXNzYXJ5KHZhciwgdmFsdWUuZ2V0KCksIG51bGxwdHIpOwotICAgIGlmICh2YXIuaXNS
ZWFkT25seSgpKSB7Ci0gICAgICAgIGJvb2wgdGhyZXdFeGNlcHRpb24gPSBnZW5lcmF0b3IuZW1p
dFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKLSAgICAgICAgaWYgKHRocmV3RXhjZXB0
aW9uKQotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmdldCgpOwotICAgIH0KLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgp
LCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5
cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSwgdGhpcyk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwg
bV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBl
KCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSksIHRoaXMsIHZhci5pc1JlYWRPbmx5KCkg
PyAmdmFyIDogbnVsbHB0cik7CiAgICAgUmVnaXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gcmVzdWx0
LmdldCgpOwogICAgIGlmICghdmFyLmlzUmVhZE9ubHkoKSkgewogICAgICAgICByZXR1cm5SZXN1
bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0Lmdl
dCgpLCBUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCBhMTJmMTgxMzlmYjZlNTRkYmEzNjIzZGUxZmYyOGMwMzY4NzE3MjAwLi45ZjI2ZGUzNjk0
YzU2MzY5OGI5Zjc1MjI2MThhZTMxODc1Zjk1ODYxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTEw
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgcmhzIGlu
IGBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGVgIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHRocm93
aW5nIGFuIGV4Y2VwdGlvbiBpZiB0aGUgbGhzIGlzIHJlYWQtb25seQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvY29uc3QtcmVhZC1tb2Rp
ZnktYXNzaWdubWVudC1ldmFsLXJocy1iZWZvcmUtZXhjZXB0aW9uLmpzOiBBZGRlZC4KKwogMjAy
MC0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIE1vZHVsZUVudmlyb25tZW50IGRvIG5vdCBoYXZlIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50IGFzIGl0cyB1cHBlciBzY29wZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29uc3Qt
cmVhZC1tb2RpZnktYXNzaWdubWVudC1ldmFsLXJocy1iZWZvcmUtZXhjZXB0aW9uLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY29uc3QtcmVhZC1tb2RpZnktYXNzaWdubWVudC1ldmFsLXJocy1iZWZvcmUt
ZXhjZXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNDgxMmY0MDRlODA5MjFiODQ4OWI0MTgyZDhjMjZj
OTM5MjU2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jb25zdC1yZWFkLW1v
ZGlmeS1hc3NpZ25tZW50LWV2YWwtcmhzLWJlZm9yZS1leGNlcHRpb24uanMKQEAgLTAsMCArMSw0
MiBAQAorKGZ1bmN0aW9uKCkgeworICAgIGxldCBjb3VudCA9IDA7CisKKyAgICBjb25zdCB4ID0g
NDI7CisgICAgdHJ5IHsKKyAgICAgICAgeCArPSAoKCkgPT4gKytjb3VudCkoKTsKKyAgICB9IGNh
dGNoIHsgfQorCisgICAgaWYgKGNvdW50ICE9PSAxKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGV4cGVjdGVkIDEgYnV0IGdvdCAke2NvdW50fWApOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBsZXQgY291bnQgPSAwOworCisgICAgY29uc3QgeCA9IDQyOworICAgIGZ1bmN0aW9uIGNh
cHR1cmVYKCkgeyByZXR1cm4geDsgfQorCisgICAgdHJ5IHsKKyAgICAgICAgeCArPSAoKCkgPT4g
Kytjb3VudCkoKTsKKyAgICB9IGNhdGNoIHsgfQorCisgICAgaWYgKGNvdW50ICE9PSAxKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIDEgYnV0IGdvdCAke2NvdW50fWApOworfSko
KTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsICJ0ZXN0Q29uc3RSZWFkTW9k
aWZ5QXNzaWdubWVudFJIU0V2YWxCZWZvcmVFeGNlcHRpb24iLCB7CisgICAgdmFsdWU6IDQyLAor
ICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgd3JpdGFibGU6IGZhbHNlLAorfSk7CisKKyhm
dW5jdGlvbigpIHsKKyAgICBsZXQgY291bnQgPSAwOworCisgICAgdHJ5IHsKKyAgICAgICAgdGVz
dENvbnN0UmVhZE1vZGlmeUFzc2lnbm1lbnRSSFNFdmFsQmVmb3JlRXhjZXB0aW9uICs9ICgoKSA9
PiArK2NvdW50KSgpOworICAgIH0gY2F0Y2ggeyB9CisKKyAgICBpZiAoY291bnQgIT09IDEpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgMSBidXQgZ290ICR7Y291bnR9YCk7Cit9
KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396121</attachid>
            <date>2020-04-10 14:16:15 -0700</date>
            <delta_ts>2020-04-10 14:50:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210317-20200410151614.patch</filename>
            <type>text/plain</type>
            <size>7584</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVkNGU5MDg1NGY2MzA2NTI3N2M1YTJhZTQxNWZi
ZjM4NGJkNDBhZmIuLjllYTUwMWY4YjQ5MmY0ZmJiZTcwMGE2MWQ2OWJmNzUzZTI3ZjQyYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgcmhzIGluIGBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGVgIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHRocm93aW5nIGFu
IGV4Y2VwdGlvbiBpZiB0aGUgbGhzIGlzIHJlYWQtb25seQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Um9zcyBLaXJzbGluZy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
OgorICAgICAgICAoSlNDOjplbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIElmIHRoZSBj
b3JyZXNwb25kaW5nIGBWYXJpYWJsZWAgaXMgcmVhZC1vbmx5LCBwYXNzIGl0IHRvIGBlbWl0UmVh
ZE1vZGlmeUFzc2lnbm1lbnRgIGFzIGFuCisgICAgICAgIGFkZGl0aW9uYWwgb3B0aW9ubCBhcmd1
bWVudCwgd2hlcmUgaXQgd2lsbCBiZSB1c2VkIHRvIGBlbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5l
ZWRlZGAgYWZ0ZXIKKyAgICAgICAgdGhlIHJocyBpcyBlbWl0dGVkLgorCiAyMDIwLTA0LTEwICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbW9yZSBQQUMgZGl2
ZXJzaXR5IGZvciBKSVQgcHJvYmUgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0YzQzNDg4ODJjZmJjMjY5MjQ3
YTc3MjJhNzJlYWIzOWJlMmVjNDlhLi5kNGZkYjRkZDU0ZDQ5MmY5MGQyZDcyMWZkN2RhYzEyZmY3
ZDJmODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC0yNzUyLDcgKzI3NTIsNyBAQCBSZWdpc3RlcklEKiBDb25kaXRp
b25hbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlYWRNb2RpZnlSZXNvbHZl
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBGSVhNRTogc2hv
dWxkIHRoaXMgYmUgbW92ZWQgdG8gYmUgYSBtZXRob2Qgb24gQnl0ZWNvZGVHZW5lcmF0b3I/Ci1z
dGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMxLCBFeHByZXNzaW9uTm9kZSogbV9yaWdodCwgT3BlcmF0b3Igb3BlciwgT3BlcmFuZFR5
cGVzIHR5cGVzLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1l
ID0gMCkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQqIGVtaXRSZWFkTW9kaWZ5QXNz
aWdubWVudChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYzEsIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0LCBPcGVyYXRvciBvcGVyLCBP
cGVyYW5kVHlwZXMgdHlwZXMsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJlc3Npb25J
bmZvRm9yTWUgPSBudWxscHRyLCBWYXJpYWJsZSogZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWRGb3JNZSA9IG51bGxwdHIpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQ7CiAgICAgc3dpdGNo
IChvcGVyKSB7CkBAIC0yNzYzLDggKzI3NjMsMTMgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVn
aXN0ZXJJRCogZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW4K
ICAgICAgICAgb3Bjb2RlSUQgPSBvcF9kaXY7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3Bl
cmF0b3I6OlBsdXNFcToKLSAgICAgICAgaWYgKG1fcmlnaHQtPmlzQWRkKCkgJiYgbV9yaWdodC0+
cmVzdWx0RGVzY3JpcHRvcigpLmRlZmluaXRlbHlJc1N0cmluZygpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEFkZE5vZGUqPihtX3JpZ2h0KS0+ZW1pdFN0cmNhdChnZW5lcmF0b3Is
IGRzdCwgc3JjMSwgZW1pdEV4cHJlc3Npb25JbmZvRm9yTWUpOworICAgICAgICBpZiAobV9yaWdo
dC0+aXNBZGQoKSAmJiBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkuZGVmaW5pdGVseUlzU3Ry
aW5nKCkpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFk
ZE5vZGUqPihtX3JpZ2h0KS0+ZW1pdFN0cmNhdChnZW5lcmF0b3IsIGRzdCwgc3JjMSwgZW1pdEV4
cHJlc3Npb25JbmZvRm9yTWUpOworICAgICAgICAgICAgaWYgKGVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkRm9yTWUpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4
Y2VwdGlvbklmTmVlZGVkKCplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZEZvck1lKTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKwogICAgICAgICBvcGNvZGVJRCA9
IG9wX2FkZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcGVyYXRvcjo6TWludXNFcToKQEAg
LTI4MDEsMTAgKzI4MDYsMTcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJJRCogZW1p
dFJlYWRNb2RpZnlBc3NpZ25tZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW4KIAogICAgIFJlZ2lz
dGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9yaWdodCk7CiAKKyAgICBpZiAoZW1p
dFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWRGb3JNZSkgeworICAgICAgICBib29sIHRocmV3RXhj
ZXB0aW9uID0gZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCplbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZEZvck1lKTsKKyAgICAgICAgaWYgKHRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIHNyYzI7CisgICAgfQorCiAgICAgLy8gQ2VydGFpbiByZWFk
LW1vZGlmeSBub2RlcyByZXF1aXJlIGV4cHJlc3Npb24gaW5mbyB0byBiZSBlbWl0dGVkICphZnRl
ciogbV9yaWdodCBoYXMgYmVlbiBnZW5lcmF0ZWQuCiAgICAgLy8gSWYgdGhpcyBpcyByZXF1aXJl
ZCB0aGUgbm9kZSBpcyBwYXNzZWQgYXMgJ2VtaXRFeHByZXNzaW9uSW5mb0Zvck1lJzsgZG8gc28g
bm93LgogICAgIGlmIChlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSkKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZS0+ZGl2b3QoKSwgZW1p
dEV4cHJlc3Npb25JbmZvRm9yTWUtPmRpdm90U3RhcnQoKSwgZW1pdEV4cHJlc3Npb25JbmZvRm9y
TWUtPmRpdm90RW5kKCkpOworCiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVt
aXRCaW5hcnlPcChvcGNvZGVJRCwgZHN0LCBzcmMxLCBzcmMyLCB0eXBlcyk7CiAgICAgaWYgKG9w
ZXIgPT0gT3BlcmF0b3I6OlVSU2hpZnQpCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVu
YXJ5T3A8T3BVbnNpZ25lZD4ocmVzdWx0LCByZXN1bHQpOwpAQCAtMjgxOCw4ICsyODMwLDcgQEAg
UmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIu
bG9jYWwoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFy
LCBsb2NhbCwgbnVsbHB0cik7CiAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKSB7Ci0gICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKLSAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChn
ZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLCBtX3JpZ2h0
LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9y
aWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByZXN1
bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpLCBsb2NhbCwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVz
KFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSks
IG51bGxwdHIsICZ2YXIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShy
ZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CkBAIC0yODQyLDEyICsyODUzLDcgQEAgUmVnaXN0ZXJJRCogUmVhZE1v
ZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmUKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUu
Z2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNr
SWZOZWNlc3NhcnkodmFyLCB2YWx1ZS5nZXQoKSwgbnVsbHB0cik7Ci0gICAgaWYgKHZhci5pc1Jl
YWRPbmx5KCkpIHsKLSAgICAgICAgYm9vbCB0aHJld0V4Y2VwdGlvbiA9IGdlbmVyYXRvci5lbWl0
UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwotICAgICAgICBpZiAodGhyZXdFeGNlcHRp
b24pCi0gICAgICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7Ci0gICAgfQotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCks
IG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlw
ZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlzKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmVzdWx0ID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBt
X3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUo
KSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSwgdGhpcywgdmFyLmlzUmVhZE9ubHkoKSA/
ICZ2YXIgOiBudWxscHRyKTsKICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSByZXN1bHQu
Z2V0KCk7CiAgICAgaWYgKCF2YXIuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHJldHVyblJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0
KCksIFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
bik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGExMmYxODEzOWZiNmU1NGRiYTM2MjNkZTFmZjI4YzAzNjg3MTcyMDAuLjhhMjE4ODgwMTM2
NWZhM2EyZjM0NDhlZGYyMmFiYjU4Y2VjNTVlMDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDQtMTAg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSByaHMgaW4g
YFJlYWRNb2RpZnlSZXNvbHZlTm9kZWAgc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgdGhyb3dp
bmcgYW4gZXhjZXB0aW9uIGlmIHRoZSBsaHMgaXMgcmVhZC1vbmx5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzMTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogc3RyZXNzL2NvbnN0LXJlYWQtbW9kaWZ5
LWFzc2lnbm1lbnQtZXZhbC1yaHMtYmVmb3JlLWV4Y2VwdGlvbi5qczogQWRkZWQuCisKIDIwMjAt
MDQtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBNb2R1bGVFbnZpcm9ubWVudCBkbyBub3QgaGF2ZSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dCBhcyBpdHMgdXBwZXIgc2NvcGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbnN0LXJl
YWQtbW9kaWZ5LWFzc2lnbm1lbnQtZXZhbC1yaHMtYmVmb3JlLWV4Y2VwdGlvbi5qcyBiL0pTVGVz
dHMvc3RyZXNzL2NvbnN0LXJlYWQtbW9kaWZ5LWFzc2lnbm1lbnQtZXZhbC1yaHMtYmVmb3JlLWV4
Y2VwdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTRlMzEwZTZhNGI4YTY1NTdlOWUxOGQ4YWMyMTRkNGQ4
NGNlMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY29uc3QtcmVhZC1tb2Rp
ZnktYXNzaWdubWVudC1ldmFsLXJocy1iZWZvcmUtZXhjZXB0aW9uLmpzCkBAIC0wLDAgKzEsMjYg
QEAKKyhmdW5jdGlvbigpIHsKKyAgICBsZXQgY291bnQgPSAwOworCisgICAgY29uc3QgeCA9IDQy
OworCisgICAgdHJ5IHsKKyAgICAgICAgeCArPSAoKCkgPT4gKytjb3VudCkoKTsKKyAgICB9IGNh
dGNoIHsgfQorCisgICAgaWYgKGNvdW50ICE9PSAxKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGV4cGVjdGVkIDEgYnV0IGdvdCAke2NvdW50fWApOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBsZXQgY291bnQgPSAwOworCisgICAgY29uc3QgeCA9IDQyOworICAgIGZ1bmN0aW9uIGNh
cHR1cmVYKCkgeyByZXR1cm4geDsgfQorCisgICAgdHJ5IHsKKyAgICAgICAgeCArPSAoKCkgPT4g
Kytjb3VudCkoKTsKKyAgICB9IGNhdGNoIHsgfQorCisgICAgaWYgKGNvdW50ICE9PSAxKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIDEgYnV0IGdvdCAke2NvdW50fWApOworfSko
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>