<?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>213104</bug_id>
          
          <creation_ts>2020-06-11 16:49:24 -0700</creation_ts>
          <short_desc>Document.currentScript does not work for SVGScriptElements</short_desc>
          <delta_ts>2020-06-12 11:12:11 -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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661788</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-11 16:49:24 -0700</bug_when>
    <thetext>Document.currentScript does not work for SVGScriptElements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661789</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-11 16:51:04 -0700</bug_when>
    <thetext>Document.currentScript is specified to work with both HTMLScriptElements and SVGScriptElements (https://html.spec.whatwg.org/multipage/dom.html#dom-document-currentscript) but out implementation only works with HTMLScriptElements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661794</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-11 17:02:30 -0700</bug_when>
    <thetext>This is manifest by the failing WPT test html/dom/documents/dom-tree-accessors/Document.currentScript.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661795</commentid>
    <comment_count>3</comment_count>
      <attachid>401695</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-11 17:02:37 -0700</bug_when>
    <thetext>Created attachment 401695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661802</commentid>
    <comment_count>4</comment_count>
      <attachid>401696</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-11 17:32:54 -0700</bug_when>
    <thetext>Created attachment 401696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661803</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-06-11 17:33:34 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661831</commentid>
    <comment_count>6</comment_count>
      <attachid>401702</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-11 20:13:39 -0700</bug_when>
    <thetext>Created attachment 401702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661846</commentid>
    <comment_count>7</comment_count>
      <attachid>401702</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-11 20:42:10 -0700</bug_when>
    <thetext>Comment on attachment 401702
Patch

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

r=me

&gt; Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:1913
&gt; +        return NULL;

nullptr?

&gt; Source/WebKitLegacy/mac/DOM/DOMDocument.mm:409
&gt; +        return NULL;

nil?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661933</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-12 07:28:45 -0700</bug_when>
    <thetext>Committed r262945: &lt;https://trac.webkit.org/changeset/262945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661934</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-12 07:29:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/64296452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661988</commentid>
    <comment_count>10</comment_count>
      <attachid>401702</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-12 09:40:08 -0700</bug_when>
    <thetext>Comment on attachment 401702
Patch

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

&gt; Source/WebCore/dom/Document.h:1040
&gt; +    void pushCurrentScript(Element*);

This should take Element&amp;.

&gt; Source/WebCore/dom/Document.h:1792
&gt; +    Vector&lt;RefPtr&lt;Element&gt;&gt; m_currentScriptStack;

This should be Vector&lt;Ref&lt;Element&gt;&gt;.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:1911
&gt; +    WebCore::Element* element = item-&gt;currentScript();

auto would make this better.

&gt; Source/WebKitLegacy/mac/DOM/DOMDocument.mm:407
&gt; +    WebCore::Element* element = IMPL-&gt;currentScript();

auto would make this better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662004</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-12 10:03:24 -0700</bug_when>
    <thetext>Sorry, didn’t notice my comments were post-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662029</commentid>
    <comment_count>12</comment_count>
      <attachid>401702</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-12 10:40:34 -0700</bug_when>
    <thetext>Comment on attachment 401702
Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:1040
&gt;&gt; +    void pushCurrentScript(Element*);
&gt; 
&gt; This should take Element&amp;.

This needs to be Element* since this can take `nullptr` in meaningful way.
If the module script is executed (&lt;script type=&quot;module&quot;&gt;), currentScript needs to be `null` JS value.
This is represented by `nullptr` here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662038</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-12 10:56:50 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 401702 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401702&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1040
&gt; &gt; +    void pushCurrentScript(Element*);
&gt; 
&gt; This should take Element&amp;.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1792
&gt; &gt; +    Vector&lt;RefPtr&lt;Element&gt;&gt; m_currentScriptStack;
&gt; 
&gt; This should be Vector&lt;Ref&lt;Element&gt;&gt;.

Unfortunately, null is used in a meaningful way in this stack, so it can&apos;t use references here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662039</commentid>
    <comment_count>14</comment_count>
      <attachid>401702</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-12 10:57:14 -0700</bug_when>
    <thetext>Comment on attachment 401702
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/Document.h:1040
&gt;&gt;&gt;&gt; +    void pushCurrentScript(Element*);
&gt;&gt;&gt; 
&gt;&gt;&gt; This should take Element&amp;.
&gt;&gt; 
&gt;&gt; This needs to be Element* since this can take `nullptr` in meaningful way.
&gt;&gt; If the module script is executed (&lt;script type=&quot;module&quot;&gt;), currentScript needs to be `null` JS value.
&gt;&gt; This is represented by `nullptr` here.
&gt; 
&gt; Unfortunately, null is used in a meaningful way in this stack, so it can&apos;t use references here.

So you’re saying that when executing a module script we explicitly push a nullptr? OK, got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662040</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-12 10:57:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Sorry, didn’t notice my comments were post-commit.

Oh, please don&apos;t ever worry about that. I think some of my best comments are post-commit!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662042</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-12 10:58:25 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; Comment on attachment 401702 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401702&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/dom/Document.h:1040
&gt; &gt;&gt;&gt;&gt; +    void pushCurrentScript(Element*);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; This should take Element&amp;.
&gt; &gt;&gt; 
&gt; &gt;&gt; This needs to be Element* since this can take `nullptr` in meaningful way.
&gt; &gt;&gt; If the module script is executed (&lt;script type=&quot;module&quot;&gt;), currentScript needs to be `null` JS value.
&gt; &gt;&gt; This is represented by `nullptr` here.
&gt; &gt; 
&gt; &gt; Unfortunately, null is used in a meaningful way in this stack, so it can&apos;t use references here.
&gt; 
&gt; So you’re saying that when executing a module script we explicitly push a
&gt; nullptr? OK, got it.

Yeah. The code is:

`m_document.pushCurrentScript(shouldPushNullForCurrentScript ? nullptr : &amp;scriptElement.element());`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662049</commentid>
    <comment_count>17</comment_count>
      <attachid>401702</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-12 11:12:11 -0700</bug_when>
    <thetext>Comment on attachment 401702
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/dom/Document.h:1040
&gt;&gt;&gt;&gt;&gt;&gt; +    void pushCurrentScript(Element*);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; This should take Element&amp;.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; This needs to be Element* since this can take `nullptr` in meaningful way.
&gt;&gt;&gt;&gt; If the module script is executed (&lt;script type=&quot;module&quot;&gt;), currentScript needs to be `null` JS value.
&gt;&gt;&gt;&gt; This is represented by `nullptr` here.
&gt;&gt;&gt; 
&gt;&gt;&gt; Unfortunately, null is used in a meaningful way in this stack, so it can&apos;t use references here.
&gt;&gt; 
&gt;&gt; So you’re saying that when executing a module script we explicitly push a nullptr? OK, got it.
&gt; 
&gt; Yeah. The code is:
&gt; 
&gt; `m_document.pushCurrentScript(shouldPushNullForCurrentScript ? nullptr : &amp;scriptElement.element());`

Yes. And this is specified behavior :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401695</attachid>
            <date>2020-06-11 17:02:37 -0700</date>
            <delta_ts>2020-06-11 17:32:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213104-20200611170237.patch</filename>
            <type>text/plain</type>
            <size>14344</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA2LTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBEb2N1bWVudC5jdXJyZW50U2NyaXB0
IGRvZXMgbm90IHdvcmsgZm9yIFNWR1NjcmlwdEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVzIHJlc3VsdHMgZm9yIGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBBZGQgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggdG8gdGhlIFhjb2RlIHByb2pl
Y3QgYXMgaXQgd2FzIG1pc3NpbmcuCisKKyAgICAgICAgKiBkb20vQ3VycmVudFNjcmlwdEluY3Jl
bWVudGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXI6OkN1
cnJlbnRTY3JpcHRJbmNyZW1lbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXI6On5DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIpOgorICAgICAgICBSZS13b3Jr
IHVzaW5nIFNjcmlwdEVsZW1lbnQsIHJlbW92aW5nIHRoZSBIVE1MU2NyaXB0RWxlbWVudCBjaGVj
a3MuIEFsc28gY2hhbmdlcworICAgICAgICBzY3JpcHRUeXBlIGNoZWNrIHRvIGV4cGxpY2l0bHkg
Y2hlY2sgdGhhdCBhZ2FpbnN0IGNsYXNzaWMgc2NyaXB0cywgYXMgdGhleSBhcmUKKyAgICAgICAg
dGhlIG9ubHkgc3VwcG9ydGVkIHR5cGUsIGFuZCBpZiBhbnkgdHlwZXMgb3RoZXIgdGhhbiBtb2R1
bGVzIGFyZSBhZGRlZCBpbiB0aGUgCisgICAgICAgIGZ1dHVyZSwgd2Ugd291bGQgbm90IHdhbnQg
dGhpcyB0byBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnB1c2hDdXJyZW50U2NyaXB0KToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjdXJyZW50U2Ny
aXB0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuIEVsZW1lbnQsIHJhdGhlciB0aGFuIGFuIEhUTUxT
Y3JpcHRFbGVtZW50IGZvciBjdXJyZW50U2NyaXB0L2N1cnJlbnRTY3JpcHRTdGFjaworICAgICAg
ICBzbyB0aGF0IGVpdGhlciBhbiBIVE1MU2NyaXB0RWxlbWVudCBvciBhbiBTVkdTY3JpcHRFbGVt
ZW50IGNhbiBiZSBzdG9yZWQuIFVzaW5nIGEgCisgICAgICAgIFNjcmlwdEVsZW1lbnQgd291bGQg
YmUgcG9zc2libGUsIGJ1dCB3b3VsZCBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiB1bm5l
Y2Vzc2FyaWx5CisgICAgICAgIGJ5IHJlcXVpcmluZyBjdXJyZW50U2NyaXB0IHRvIGhhdmUgYW4g
YWRkaXRpb25hbCBjaGVja3MgYmVmb3JlIGV4dHJhY3RpbmcgdGhlIEVsZW1lbnQuCisgICAgICAg
IFZhcmlhbnQ8UmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiwgUmVmUHRyPFNWR1NjcmlwdEVsZW1l
bnQ+PiBjb3VsZCBhbHNvIGhhdmUgYmVlbiB1c2VkCisgICAgICAgIGJ1dCBhbHNvIHdvdWxkIHVu
bmVjZXNzYXJpbHkgY29tcGxpY2F0ZWQgdGhlIGludGVyZmFjZSBhbmQgY2F1c2VkIG1vcmUgbWVt
b3J5IHRvIGJlIHVzZWQuIAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAg
VXBkYXRlIGludGVyZmFjZSB0byB1c2UgRWxlbWVudCByYXRoZXIgSFRNTFNjcmlwdEVsZW1lbnQg
d2l0aCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgd2UKKyAgICAgICAgYXJlIG5vdCB1c2luZyBI
VE1MT3JTVkdTY3JpcHRFbGVtZW50IGJ1dCByZXRhaW5pbmcgdGhlIHNhbWUgb2JzZXJ2YWJsZSBi
ZWhhdmlvci4KKworICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQpOgorICAgICAgICBQYXNz
ICp0aGlzIGRpcmVjdGx5IHRvIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciB0byBzaW1wbGlmeSBp
bXBsZW1lbnRhdGlvbi4KKwogMjAyMC0wNi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGNvbW1lbnQgYWZ0ZXIgYmxvY2tsaXN0IHRyYW5zaXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMjgsNiArMTAyMjgsNyBAQAog
CQk3Q0VCNTdFQTFGOTU2NTE1MDAwOTdBRUMgLyogU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU2V0dGluZ3MuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TZXR0aW5n
cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDRjE1ODk5MUVC
QkNEQzcwMEQ0QkZCNyAvKiBTdWJyZXNvdXJjZUludGVncml0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUludGVncml0eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRjE1ODlBMUVCQkNEQzcwMEQ0QkZCNyAvKiBTdWJyZXNv
dXJjZUludGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJyZXNv
dXJjZUludGVncml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0Y1NzBDNjI0
OTJCRDQ5MDA4RUIzM0MgLyogQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEhlYWRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NGREM1N0ExQUMxRDgwNTAwRTI0QTU3IC8qIENvbnRlbnRFeHRl
bnNpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZE
QzU3QjFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25FcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2NjYsNiArMjg2NjcsNyBAQAogCQkJCUUxQTE0NzA3
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovLAogCQkJCTk3
NjI3QjhCMTRGQjNDRUUwMDJDRENBMSAvKiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAg
Ki8sCiAJCQkJOTc2MjdCOEMxNEZCM0NFRTAwMkNEQ0ExIC8qIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmggKi8sCisJCQkJN0NGNTcwQzYyNDkyQkQ0OTAwOEVCMzNDIC8qIEN1cnJlbnRTY3Jp
cHRJbmNyZW1lbnRlci5oICovLAogCQkJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgKi8sCiAJCQkJOUI1NkM5QTgxQzg5MzEyODAwQzQ1
NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8sCiAJCQkJOUJENEU5MTgxQzQ2
MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oCShyZXZpc2lvbiAy
NjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDM0ICsyOSwyNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFNj
cmlwdEluY3JlbWVudGVyKTsKIHB1YmxpYzoKLSAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50KQorICAgIEN1cnJlbnRTY3JpcHRJ
bmNyZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1l
bnQpCiAgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAgICAgLCBtX2lzSFRNTFNj
cmlwdEVsZW1lbnQoaXM8SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgIHsKLSAgICAg
ICAgaWYgKCFtX2lzSFRNTFNjcmlwdEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGF1dG8mIHNjcmlwdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxl
bWVudCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkUHVzaE51bGxGb3JDdXJyZW50U2NyaXB0ID0gc2Ny
aXB0RWxlbWVudC5pc0luU2hhZG93VHJlZSgpIHx8IHNjcmlwdEVsZW1lbnQuc2NyaXB0VHlwZSgp
ID09IFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU6Ok1vZHVsZTsKLSAgICAgICAgbV9kb2N1bWVu
dC5wdXNoQ3VycmVudFNjcmlwdChzaG91bGRQdXNoTnVsbEZvckN1cnJlbnRTY3JpcHQgPyBudWxs
cHRyIDogJnNjcmlwdEVsZW1lbnQpOworICAgICAgICBib29sIHNob3VsZFB1c2hOdWxsRm9yQ3Vy
cmVudFNjcmlwdCA9IHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmlzSW5TaGFkb3dUcmVlKCkgfHwg
c2NyaXB0RWxlbWVudC5zY3JpcHRUeXBlKCkgIT0gU2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZTo6
Q2xhc3NpYzsKKyAgICAgICAgbV9kb2N1bWVudC5wdXNoQ3VycmVudFNjcmlwdChzaG91bGRQdXNo
TnVsbEZvckN1cnJlbnRTY3JpcHQgPyBudWxscHRyIDogJnNjcmlwdEVsZW1lbnQuZWxlbWVudCgp
KTsKICAgICB9CiAKICAgICB+Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKCkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9pc0hUTUxTY3JpcHRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX2RvY3VtZW50LnBvcEN1cnJlbnRTY3JpcHQoKTsKICAgICB9CiAKIHByaXZhdGU6CiAg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7Ci0gICAgYm9vbCBtX2lzSFRNTFNjcmlwdEVsZW1lbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1OTAsNyArNTU5MCw3IEBAIFN0cmluZyBEb2N1bWVudDo6cXVl
cnlDb21tYW5kVmFsdWUoY29uc3QKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFt
ZSkudmFsdWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6cHVzaEN1cnJlbnRTY3JpcHQoSFRNTFNj
cmlwdEVsZW1lbnQqIG5ld0N1cnJlbnRTY3JpcHQpCit2b2lkIERvY3VtZW50OjpwdXNoQ3VycmVu
dFNjcmlwdChFbGVtZW50KiBuZXdDdXJyZW50U2NyaXB0KQogewogICAgIG1fY3VycmVudFNjcmlw
dFN0YWNrLmFwcGVuZChuZXdDdXJyZW50U2NyaXB0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiAyNjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw2IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OwotY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaWdobGln
aHRNYXA7CiBjbGFzcyBIaXRUZXN0TG9jYXRpb247CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKQEAg
LTE4Nyw3ICsxODYsNiBAQCBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnM7CiBjbGFzcyBTVkdT
VkdFbGVtZW50OwogY2xhc3MgU1ZHVXNlRWxlbWVudDsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKLWNsYXNzIFNjcmlwdEVsZW1lbnREYXRhOwogY2xhc3MgU2NyaXB0TW9kdWxlTG9hZGVyOwog
Y2xhc3MgU2NyaXB0UnVubmVyOwogY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOwpAQCAt
MTAzOCw4ICsxMDM2LDggQEAgcHVibGljOgogICAgIFNjcmlwdFJ1bm5lciYgc2NyaXB0UnVubmVy
KCkgeyByZXR1cm4gKm1fc2NyaXB0UnVubmVyOyB9CiAgICAgU2NyaXB0TW9kdWxlTG9hZGVyJiBt
b2R1bGVMb2FkZXIoKSB7IHJldHVybiAqbV9tb2R1bGVMb2FkZXI7IH0KIAotICAgIEhUTUxTY3Jp
cHRFbGVtZW50KiBjdXJyZW50U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gIW1fY3VycmVudFNjcmlw
dFN0YWNrLmlzRW1wdHkoKSA/IG1fY3VycmVudFNjcmlwdFN0YWNrLmxhc3QoKS5nZXQoKSA6IG51
bGxwdHI7IH0KLSAgICB2b2lkIHB1c2hDdXJyZW50U2NyaXB0KEhUTUxTY3JpcHRFbGVtZW50Kik7
CisgICAgRWxlbWVudCogY3VycmVudFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuICFtX2N1cnJlbnRT
Y3JpcHRTdGFjay5pc0VtcHR5KCkgPyBtX2N1cnJlbnRTY3JpcHRTdGFjay5sYXN0KCkuZ2V0KCkg
OiBudWxscHRyOyB9CisgICAgdm9pZCBwdXNoQ3VycmVudFNjcmlwdChFbGVtZW50Kik7CiAgICAg
dm9pZCBwb3BDdXJyZW50U2NyaXB0KCk7CiAKICAgICBib29sIHNob3VsZERlZmVyQXN5bmNocm9u
b3VzU2NyaXB0c1VudGlsUGFyc2luZ0ZpbmlzaGVzKCkgY29uc3Q7CkBAIC0xNzkxLDcgKzE3ODks
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0
UnVubmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxl
TG9hZGVyOwogCi0gICAgVmVjdG9yPFJlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4+IG1fY3VycmVu
dFNjcmlwdFN0YWNrOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1fY3VycmVudFNjcmlw
dFN0YWNrOwogCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgdm9pZCBhcHBseVBlbmRpbmdYU0xUcmFu
c2Zvcm1zVGltZXJGaXJlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lv
biAyNjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw4IEBAIHR5cGVkZWYgKAogICAgIEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dCBvciAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRl
eHQ7CiAKK3R5cGVkZWYgKEhUTUxTY3JpcHRFbGVtZW50IG9yIFNWR1NjcmlwdEVsZW1lbnQpIEhU
TUxPclNWR1NjcmlwdEVsZW1lbnQ7CisKIFsKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1
Y3RvckNhbGxXaXRoPURvY3VtZW50LApAQCAtMTAwLDcgKzEwMiwxMCBAQCB0eXBlZGVmICgKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gZm9ybXM7IC8vIFNob3VsZCBiZSBb
U2FtZU9iamVjdF0uCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHNjcmlw
dHM7IC8vIFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCiAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNC
eU5hbWUoW0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50TmFtZSk7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIEhUTUxTY3JpcHRFbGVtZW50PyBjdXJyZW50U2NyaXB0OyAvLyBGSVhNRTogU2hv
dWxkIHJldHVybiBhIEhUTUxPclNWR1NjcmlwdEVsZW1lbnQuCisgICAgCisgICAgLy8gY3VycmVu
dFNjcmlwdCBpcyBzcGVjaWZpZWQgdG8gdXNlIHR5cGUgSFRNTE9yU1ZHU2NyaXB0RWxlbWVudD8s
IGJ1dCBpbXBsZW1lbnRlZCB1c2luZworICAgIC8vIHNoYXJlZCBiYXNlIHR5cGUgRWxlbWVudD8g
dG8gb3B0aW1pemUgaW1wbGVtZW50YXRpb24gd2l0aG91dCBhbiBvYnNlcnZhYmxlIGRpZmZlcmVu
Y2UuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGN1cnJlbnRTY3JpcHQ7CiAKICAg
ICAvLyBkeW5hbWljIG1hcmt1cCBpbnNlcnRpb24KICAgICAvLyBGSVhNRTogVGhlIEhUTUwgc3Bl
YyBzYXlzIHRoaXMgc2hvdWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIuIFdl
IHNob3VsZCBlbnN1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgor
I2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVDbGFzc2ljU2NyaXB0
LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgiCkBAIC0zOTMsNyArMzk0LDcg
QEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdAogICAgICAgICByZXR1
cm47CiAKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVE
ZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4dGVybmFsU2NyaXB0ID8gJmRv
Y3VtZW50IDogbnVsbHB0cik7Ci0gICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKKyAgICBDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCAqdGhpcyk7CiAK
ICAgICBXVEZCZWdpblNpZ25wb3N0KHRoaXMsICJFeGVjdXRlIFNjcmlwdCBFbGVtZW50IiwgImV4
ZWN1dGluZyBjbGFzc2ljIHNjcmlwdCBmcm9tIFVSTDogJXtwdWJsaWN9cyBhc3luYzogJWQgZGVm
ZXI6ICVkIiwgbV9pc0V4dGVybmFsU2NyaXB0ID8gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpIDogImlubGluZSIsIGhhc0FzeW5jQXR0cmlidXRlKCksIGhhc0RlZmVyQXR0
cmlidXRlKCkpOwogICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KHNvdXJjZUNvZGUpOwpAQCAtNDEyLDcgKzQxMyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhl
Y3V0ZU1vZHVsZVNjcmlwdCgKICAgICAgICAgcmV0dXJuOwogCiAgICAgSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyKCZkb2N1bWVudCk7Ci0gICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKKyAgICBDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCAqdGhpcyk7CiAK
ICAgICBXVEZCZWdpblNpZ25wb3N0KHRoaXMsICJFeGVjdXRlIFNjcmlwdCBFbGVtZW50IiwgImV4
ZWN1dGluZyBtb2R1bGUgc2NyaXB0Iik7CiAgICAgZnJhbWUtPnNjcmlwdCgpLmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZVNjcmlwdChsb2FkYWJsZU1vZHVsZVNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI5MjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0x
MSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRG9jdW1lbnQuY3Vy
cmVudFNjcmlwdCBkb2VzIG5vdCB3b3JrIGZvciBTVkdTY3JpcHRFbGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTA0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQu
bW06CisgICAgICAgICgtW0RPTURvY3VtZW50IGN1cnJlbnRTY3JpcHRdKToKKyAgICAgICAgVXBk
YXRlIHRvIGFjY291bnQgZm9yIGNoYW5nZSBpbiBEb2N1bWVudDo6Y3VycmVudFNjcmlwdCgpIG5v
dyByZXR1cm5pbmcgYW4KKyAgICAgICAgRWxlbWVudCogdGhhdCBjYW4gYmUgZWl0aGVyIGFuIEhU
TUxTY3JpcHRFbGVtZW50IG9yIGFuIFNWR1NjcmlwdEVsZW1lbnQuIFRvCisgICAgICAgIGtlZXAg
QVBJIGNvbXBhdGliaWxpdHksIG9ubHkgcmV0dXJuIG5vbi1udWxsIGZvciBIVE1MU2NyaXB0RWxl
bWVudHMuCisKIDIwMjAtMDYtMTEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgaW5zdGFuY2VzIG9mIHdoaXRlbGlzdCBpbiBXZWJDb3JlIHdpdGggYWxs
b3dsaXN0CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1t
CShyZXZpc2lvbiAyNjI5MTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9j
dW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsMTAgQEAgLSAoQk9PTCloaWRk
ZW4KIC0gKERPTUhUTUxTY3JpcHRFbGVtZW50ICopY3VycmVudFNjcmlwdAogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0
UHRyKElNUEwtPmN1cnJlbnRTY3JpcHQoKSkpOworICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1l
bnQgPSBJTVBMLT5jdXJyZW50U2NyaXB0KCk7CisgICAgaWYgKCFpczxXZWJDb3JlOjpIVE1MU2Ny
aXB0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoZG93bmNhc3Q8V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1l
bnQpKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopb3JpZ2luCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkzMCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNi0xMSAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRG9jdW1lbnQuY3VycmVu
dFNjcmlwdCBkb2VzIG5vdCB3b3JrIGZvciBTVkdTY3JpcHRFbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9kb20vZG9jdW1lbnRzL2RvbS10cmVlLWFjY2Vzc29ycy9Eb2N1bWVudC5jdXJyZW50U2Ny
aXB0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHRlc3QgcmVzdWx0cyBhZnRlciBtYWtp
bmcgY3VycmVudFNjcmlwdCB3b3JrIHdpdGggU1ZHU2NyaXB0RWxlbWVudHMuCisKIDIwMjAtMDYt
MTEgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdy
aWRdIFJlaW1wb3J0IFdQVCB0ZXN0cyByZW1vdmVkIGluIHIyNjI4MDkKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vZG9jdW1lbnRzL2Rv
bS10cmVlLWFjY2Vzc29ycy9Eb2N1bWVudC5jdXJyZW50U2NyaXB0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvZG9tL2RvY3VtZW50cy9kb20tdHJlZS1hY2Nlc3NvcnMvRG9jdW1lbnQuY3VycmVudFNjcmlw
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2MjkxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vZG9jdW1lbnRzL2RvbS10cmVlLWFjY2Vz
c29ycy9Eb2N1bWVudC5jdXJyZW50U2NyaXB0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMsMTEgKzEzLDcgQEAgUEFTUyBTY3JpcHQgc2NyaXB0LXdpbmRvdy1lcnJvciAKIFBBU1Mg
U2NyaXB0IHRpbWVvdXQgCiBQQVNTIFNjcmlwdCBldmFsIAogUEFTUyBTY3JpcHQgeGhyLXRlc3Qg
Ci1GQUlMIFNjcmlwdCBzY3JpcHQtc3ZnIGFzc2VydF9hcnJheV9lcXVhbHM6IGV4cGVjdGVkIHBy
b3BlcnR5IDAgdG8gYmUgRWxlbWVudCBub2RlIDxzY3JpcHQgaWQ9InNjcmlwdC1zdmciPgotICAg
IHZlcmlmeSgnc2NyaXB0LXN2ZycpOwotICAgIGZpLi4uIGJ1dCBnb3QgbnVsbCAoZXhwZWN0ZWQg
YXJyYXkgW0VsZW1lbnQgbm9kZSA8c2NyaXB0IGlkPSJzY3JpcHQtc3ZnIj4KLSAgICB2ZXJpZnko
J3NjcmlwdC1zdmcnKTsKLSAgICBmaS4uLl0gZ290IFtudWxsXSkKK1BBU1MgU2NyaXB0IHNjcmlw
dC1zdmcgCiBQQVNTIFNjcmlwdCBzY3JpcHQtYXN5bmMgCiBQQVNTIFNjcmlwdCBzY3JpcHQtZGVm
ZXIgCiBQQVNTIFNjcmlwdCBzY3JpcHQtYXN5bmMtZmFsc2UgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401696</attachid>
            <date>2020-06-11 17:32:54 -0700</date>
            <delta_ts>2020-06-11 20:13:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213104-20200611173253.patch</filename>
            <type>text/plain</type>
            <size>16208</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA2LTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBEb2N1bWVudC5jdXJyZW50U2NyaXB0
IGRvZXMgbm90IHdvcmsgZm9yIFNWR1NjcmlwdEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVzIHJlc3VsdHMgZm9yIGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBBZGQgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggdG8gdGhlIFhjb2RlIHByb2pl
Y3QgYXMgaXQgd2FzIG1pc3NpbmcuCisKKyAgICAgICAgKiBkb20vQ3VycmVudFNjcmlwdEluY3Jl
bWVudGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXI6OkN1
cnJlbnRTY3JpcHRJbmNyZW1lbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXI6On5DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIpOgorICAgICAgICBSZS13b3Jr
IHVzaW5nIFNjcmlwdEVsZW1lbnQsIHJlbW92aW5nIHRoZSBIVE1MU2NyaXB0RWxlbWVudCBjaGVj
a3MuIEFsc28gY2hhbmdlcworICAgICAgICBzY3JpcHRUeXBlIGNoZWNrIHRvIGV4cGxpY2l0bHkg
Y2hlY2sgdGhhdCBhZ2FpbnN0IGNsYXNzaWMgc2NyaXB0cywgYXMgdGhleSBhcmUKKyAgICAgICAg
dGhlIG9ubHkgc3VwcG9ydGVkIHR5cGUsIGFuZCBpZiBhbnkgdHlwZXMgb3RoZXIgdGhhbiBtb2R1
bGVzIGFyZSBhZGRlZCBpbiB0aGUgCisgICAgICAgIGZ1dHVyZSwgd2Ugd291bGQgbm90IHdhbnQg
dGhpcyB0byBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnB1c2hDdXJyZW50U2NyaXB0KToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjdXJyZW50U2Ny
aXB0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuIEVsZW1lbnQsIHJhdGhlciB0aGFuIGFuIEhUTUxT
Y3JpcHRFbGVtZW50IGZvciBjdXJyZW50U2NyaXB0L2N1cnJlbnRTY3JpcHRTdGFjaworICAgICAg
ICBzbyB0aGF0IGVpdGhlciBhbiBIVE1MU2NyaXB0RWxlbWVudCBvciBhbiBTVkdTY3JpcHRFbGVt
ZW50IGNhbiBiZSBzdG9yZWQuIFVzaW5nIGEgCisgICAgICAgIFNjcmlwdEVsZW1lbnQgd291bGQg
YmUgcG9zc2libGUsIGJ1dCB3b3VsZCBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiB1bm5l
Y2Vzc2FyaWx5CisgICAgICAgIGJ5IHJlcXVpcmluZyBjdXJyZW50U2NyaXB0IHRvIGhhdmUgYW4g
YWRkaXRpb25hbCBjaGVja3MgYmVmb3JlIGV4dHJhY3RpbmcgdGhlIEVsZW1lbnQuCisgICAgICAg
IFZhcmlhbnQ8UmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiwgUmVmUHRyPFNWR1NjcmlwdEVsZW1l
bnQ+PiBjb3VsZCBhbHNvIGhhdmUgYmVlbiB1c2VkCisgICAgICAgIGJ1dCBhbHNvIHdvdWxkIHVu
bmVjZXNzYXJpbHkgY29tcGxpY2F0ZWQgdGhlIGludGVyZmFjZSBhbmQgY2F1c2VkIG1vcmUgbWVt
b3J5IHRvIGJlIHVzZWQuIAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAg
VXBkYXRlIGludGVyZmFjZSB0byB1c2UgRWxlbWVudCByYXRoZXIgSFRNTFNjcmlwdEVsZW1lbnQg
d2l0aCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgd2UKKyAgICAgICAgYXJlIG5vdCB1c2luZyBI
VE1MT3JTVkdTY3JpcHRFbGVtZW50IGJ1dCByZXRhaW5pbmcgdGhlIHNhbWUgb2JzZXJ2YWJsZSBi
ZWhhdmlvci4KKworICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQpOgorICAgICAgICBQYXNz
ICp0aGlzIGRpcmVjdGx5IHRvIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciB0byBzaW1wbGlmeSBp
bXBsZW1lbnRhdGlvbi4KKwogMjAyMC0wNi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGNvbW1lbnQgYWZ0ZXIgYmxvY2tsaXN0IHRyYW5zaXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMjgsNiArMTAyMjgsNyBAQAog
CQk3Q0VCNTdFQTFGOTU2NTE1MDAwOTdBRUMgLyogU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU2V0dGluZ3MuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TZXR0aW5n
cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDRjE1ODk5MUVC
QkNEQzcwMEQ0QkZCNyAvKiBTdWJyZXNvdXJjZUludGVncml0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUludGVncml0eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRjE1ODlBMUVCQkNEQzcwMEQ0QkZCNyAvKiBTdWJyZXNv
dXJjZUludGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJyZXNv
dXJjZUludGVncml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0Y1NzBDNjI0
OTJCRDQ5MDA4RUIzM0MgLyogQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEhlYWRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NGREM1N0ExQUMxRDgwNTAwRTI0QTU3IC8qIENvbnRlbnRFeHRl
bnNpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZE
QzU3QjFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25FcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2NjYsNiArMjg2NjcsNyBAQAogCQkJCUUxQTE0NzA3
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovLAogCQkJCTk3
NjI3QjhCMTRGQjNDRUUwMDJDRENBMSAvKiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAg
Ki8sCiAJCQkJOTc2MjdCOEMxNEZCM0NFRTAwMkNEQ0ExIC8qIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmggKi8sCisJCQkJN0NGNTcwQzYyNDkyQkQ0OTAwOEVCMzNDIC8qIEN1cnJlbnRTY3Jp
cHRJbmNyZW1lbnRlci5oICovLAogCQkJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgKi8sCiAJCQkJOUI1NkM5QTgxQzg5MzEyODAwQzQ1
NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8sCiAJCQkJOUJENEU5MTgxQzQ2
MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oCShyZXZpc2lvbiAy
NjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDM0ICsyOSwyNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFNj
cmlwdEluY3JlbWVudGVyKTsKIHB1YmxpYzoKLSAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50KQorICAgIEN1cnJlbnRTY3JpcHRJ
bmNyZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1l
bnQpCiAgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAgICAgLCBtX2lzSFRNTFNj
cmlwdEVsZW1lbnQoaXM8SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgIHsKLSAgICAg
ICAgaWYgKCFtX2lzSFRNTFNjcmlwdEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGF1dG8mIHNjcmlwdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxl
bWVudCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkUHVzaE51bGxGb3JDdXJyZW50U2NyaXB0ID0gc2Ny
aXB0RWxlbWVudC5pc0luU2hhZG93VHJlZSgpIHx8IHNjcmlwdEVsZW1lbnQuc2NyaXB0VHlwZSgp
ID09IFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU6Ok1vZHVsZTsKLSAgICAgICAgbV9kb2N1bWVu
dC5wdXNoQ3VycmVudFNjcmlwdChzaG91bGRQdXNoTnVsbEZvckN1cnJlbnRTY3JpcHQgPyBudWxs
cHRyIDogJnNjcmlwdEVsZW1lbnQpOworICAgICAgICBib29sIHNob3VsZFB1c2hOdWxsRm9yQ3Vy
cmVudFNjcmlwdCA9IHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmlzSW5TaGFkb3dUcmVlKCkgfHwg
c2NyaXB0RWxlbWVudC5zY3JpcHRUeXBlKCkgIT0gU2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZTo6
Q2xhc3NpYzsKKyAgICAgICAgbV9kb2N1bWVudC5wdXNoQ3VycmVudFNjcmlwdChzaG91bGRQdXNo
TnVsbEZvckN1cnJlbnRTY3JpcHQgPyBudWxscHRyIDogJnNjcmlwdEVsZW1lbnQuZWxlbWVudCgp
KTsKICAgICB9CiAKICAgICB+Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKCkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9pc0hUTUxTY3JpcHRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX2RvY3VtZW50LnBvcEN1cnJlbnRTY3JpcHQoKTsKICAgICB9CiAKIHByaXZhdGU6CiAg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7Ci0gICAgYm9vbCBtX2lzSFRNTFNjcmlwdEVsZW1lbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1OTAsNyArNTU5MCw3IEBAIFN0cmluZyBEb2N1bWVudDo6cXVl
cnlDb21tYW5kVmFsdWUoY29uc3QKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFt
ZSkudmFsdWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6cHVzaEN1cnJlbnRTY3JpcHQoSFRNTFNj
cmlwdEVsZW1lbnQqIG5ld0N1cnJlbnRTY3JpcHQpCit2b2lkIERvY3VtZW50OjpwdXNoQ3VycmVu
dFNjcmlwdChFbGVtZW50KiBuZXdDdXJyZW50U2NyaXB0KQogewogICAgIG1fY3VycmVudFNjcmlw
dFN0YWNrLmFwcGVuZChuZXdDdXJyZW50U2NyaXB0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiAyNjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw2IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OwotY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaWdobGln
aHRNYXA7CiBjbGFzcyBIaXRUZXN0TG9jYXRpb247CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKQEAg
LTE4Nyw3ICsxODYsNiBAQCBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnM7CiBjbGFzcyBTVkdT
VkdFbGVtZW50OwogY2xhc3MgU1ZHVXNlRWxlbWVudDsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKLWNsYXNzIFNjcmlwdEVsZW1lbnREYXRhOwogY2xhc3MgU2NyaXB0TW9kdWxlTG9hZGVyOwog
Y2xhc3MgU2NyaXB0UnVubmVyOwogY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOwpAQCAt
MTAzOCw4ICsxMDM2LDggQEAgcHVibGljOgogICAgIFNjcmlwdFJ1bm5lciYgc2NyaXB0UnVubmVy
KCkgeyByZXR1cm4gKm1fc2NyaXB0UnVubmVyOyB9CiAgICAgU2NyaXB0TW9kdWxlTG9hZGVyJiBt
b2R1bGVMb2FkZXIoKSB7IHJldHVybiAqbV9tb2R1bGVMb2FkZXI7IH0KIAotICAgIEhUTUxTY3Jp
cHRFbGVtZW50KiBjdXJyZW50U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gIW1fY3VycmVudFNjcmlw
dFN0YWNrLmlzRW1wdHkoKSA/IG1fY3VycmVudFNjcmlwdFN0YWNrLmxhc3QoKS5nZXQoKSA6IG51
bGxwdHI7IH0KLSAgICB2b2lkIHB1c2hDdXJyZW50U2NyaXB0KEhUTUxTY3JpcHRFbGVtZW50Kik7
CisgICAgRWxlbWVudCogY3VycmVudFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuICFtX2N1cnJlbnRT
Y3JpcHRTdGFjay5pc0VtcHR5KCkgPyBtX2N1cnJlbnRTY3JpcHRTdGFjay5sYXN0KCkuZ2V0KCkg
OiBudWxscHRyOyB9CisgICAgdm9pZCBwdXNoQ3VycmVudFNjcmlwdChFbGVtZW50Kik7CiAgICAg
dm9pZCBwb3BDdXJyZW50U2NyaXB0KCk7CiAKICAgICBib29sIHNob3VsZERlZmVyQXN5bmNocm9u
b3VzU2NyaXB0c1VudGlsUGFyc2luZ0ZpbmlzaGVzKCkgY29uc3Q7CkBAIC0xNzkxLDcgKzE3ODks
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0
UnVubmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxl
TG9hZGVyOwogCi0gICAgVmVjdG9yPFJlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4+IG1fY3VycmVu
dFNjcmlwdFN0YWNrOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1fY3VycmVudFNjcmlw
dFN0YWNrOwogCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgdm9pZCBhcHBseVBlbmRpbmdYU0xUcmFu
c2Zvcm1zVGltZXJGaXJlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lv
biAyNjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw4IEBAIHR5cGVkZWYgKAogICAgIEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dCBvciAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRl
eHQ7CiAKK3R5cGVkZWYgKEhUTUxTY3JpcHRFbGVtZW50IG9yIFNWR1NjcmlwdEVsZW1lbnQpIEhU
TUxPclNWR1NjcmlwdEVsZW1lbnQ7CisKIFsKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1
Y3RvckNhbGxXaXRoPURvY3VtZW50LApAQCAtMTAwLDcgKzEwMiwxMCBAQCB0eXBlZGVmICgKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gZm9ybXM7IC8vIFNob3VsZCBiZSBb
U2FtZU9iamVjdF0uCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHNjcmlw
dHM7IC8vIFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCiAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNC
eU5hbWUoW0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50TmFtZSk7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIEhUTUxTY3JpcHRFbGVtZW50PyBjdXJyZW50U2NyaXB0OyAvLyBGSVhNRTogU2hv
dWxkIHJldHVybiBhIEhUTUxPclNWR1NjcmlwdEVsZW1lbnQuCisgICAgCisgICAgLy8gY3VycmVu
dFNjcmlwdCBpcyBzcGVjaWZpZWQgdG8gdXNlIHR5cGUgSFRNTE9yU1ZHU2NyaXB0RWxlbWVudD8s
IGJ1dCBpbXBsZW1lbnRlZCB1c2luZworICAgIC8vIHNoYXJlZCBiYXNlIHR5cGUgRWxlbWVudD8g
dG8gb3B0aW1pemUgaW1wbGVtZW50YXRpb24gd2l0aG91dCBhbiBvYnNlcnZhYmxlIGRpZmZlcmVu
Y2UuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGN1cnJlbnRTY3JpcHQ7CiAKICAg
ICAvLyBkeW5hbWljIG1hcmt1cCBpbnNlcnRpb24KICAgICAvLyBGSVhNRTogVGhlIEhUTUwgc3Bl
YyBzYXlzIHRoaXMgc2hvdWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIuIFdl
IHNob3VsZCBlbnN1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgor
I2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVDbGFzc2ljU2NyaXB0
LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgiCkBAIC0zOTMsNyArMzk0LDcg
QEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdAogICAgICAgICByZXR1
cm47CiAKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVE
ZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4dGVybmFsU2NyaXB0ID8gJmRv
Y3VtZW50IDogbnVsbHB0cik7Ci0gICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKKyAgICBDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCAqdGhpcyk7CiAK
ICAgICBXVEZCZWdpblNpZ25wb3N0KHRoaXMsICJFeGVjdXRlIFNjcmlwdCBFbGVtZW50IiwgImV4
ZWN1dGluZyBjbGFzc2ljIHNjcmlwdCBmcm9tIFVSTDogJXtwdWJsaWN9cyBhc3luYzogJWQgZGVm
ZXI6ICVkIiwgbV9pc0V4dGVybmFsU2NyaXB0ID8gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpIDogImlubGluZSIsIGhhc0FzeW5jQXR0cmlidXRlKCksIGhhc0RlZmVyQXR0
cmlidXRlKCkpOwogICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KHNvdXJjZUNvZGUpOwpAQCAtNDEyLDcgKzQxMyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhl
Y3V0ZU1vZHVsZVNjcmlwdCgKICAgICAgICAgcmV0dXJuOwogCiAgICAgSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyKCZkb2N1bWVudCk7Ci0gICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKKyAgICBDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCAqdGhpcyk7CiAK
ICAgICBXVEZCZWdpblNpZ25wb3N0KHRoaXMsICJFeGVjdXRlIFNjcmlwdCBFbGVtZW50IiwgImV4
ZWN1dGluZyBtb2R1bGUgc2NyaXB0Iik7CiAgICAgZnJhbWUtPnNjcmlwdCgpLmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZVNjcmlwdChsb2FkYWJsZU1vZHVsZVNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjYyOTMyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgRG9jdW1lbnQuY3VycmVudFNjcmlwdCBkb2VzIG5vdCB3b3JrIGZvciBT
VkdTY3JpcHRFbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEzMTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2N1cnJl
bnRfc2NyaXB0KToKKyAgICAgICAgVXBkYXRlIHRvIGFjY291bnQgZm9yIGNoYW5nZSBpbiBEb2N1
bWVudDo6Y3VycmVudFNjcmlwdCgpIG5vdyByZXR1cm5pbmcgYW4KKyAgICAgICAgRWxlbWVudCog
dGhhdCBjYW4gYmUgZWl0aGVyIGFuIEhUTUxTY3JpcHRFbGVtZW50IG9yIGFuIFNWR1NjcmlwdEVs
ZW1lbnQuIFRvCisgICAgICAgIGtlZXAgQVBJIGNvbXBhdGliaWxpdHksIG9ubHkgcmV0dXJuIG5v
bi1udWxsIGZvciBIVE1MU2NyaXB0RWxlbWVudHMuCisKIDIwMjAtMDYtMTEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1lbmFibGUgZG93
bmxvYWQgcmVzdW1lIHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01Eb2N1bWVudEd0ay5jcHAJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MDgsOCArMTkwOCwxMCBAQCBXZWJLaXRET01I
VE1MU2NyaXB0RWxlbWVudCogd2Via2l0X2RvbV9kCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
RE9DVU1FTlQoc2VsZiksIDApOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudD4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmN1cnJlbnRTY3JpcHQoKSk7Ci0gICAgcmV0
dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIFdlYkNvcmU6OkVsZW1l
bnQqIGVsZW1lbnQgPSBpdGVtLT5jdXJyZW50U2NyaXB0KCk7CisgICAgaWYgKCFpczxXZWJDb3Jl
OjpIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAg
IHJldHVybiBXZWJLaXQ6OmtpdChkb3duY2FzdDxXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudD4o
ZWxlbWVudCkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfb3JpZ2luKFdl
YktpdERPTURvY3VtZW50KiBzZWxmKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjYyOTI5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDYtMTEgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIERvY3VtZW50LmN1cnJlbnRTY3JpcHQgZG9lcyBu
b3Qgd29yayBmb3IgU1ZHU2NyaXB0RWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtE
T01Eb2N1bWVudCBjdXJyZW50U2NyaXB0XSk6CisgICAgICAgIFVwZGF0ZSB0byBhY2NvdW50IGZv
ciBjaGFuZ2UgaW4gRG9jdW1lbnQ6OmN1cnJlbnRTY3JpcHQoKSBub3cgcmV0dXJuaW5nIGFuCisg
ICAgICAgIEVsZW1lbnQqIHRoYXQgY2FuIGJlIGVpdGhlciBhbiBIVE1MU2NyaXB0RWxlbWVudCBv
ciBhbiBTVkdTY3JpcHRFbGVtZW50LiBUbworICAgICAgICBrZWVwIEFQSSBjb21wYXRpYmlsaXR5
LCBvbmx5IHJldHVybiBub24tbnVsbCBmb3IgSFRNTFNjcmlwdEVsZW1lbnRzLgorCiAyMDIwLTA2
LTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGlu
c3RhbmNlcyBvZiB3aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdApJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkocmV2aXNpb24gMjYyOTE2
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MDQsNyArNDA0LDEwIEBAIC0gKEJPT0wpaGlkZGVuCiAtIChET01IVE1MU2Ny
aXB0RWxlbWVudCAqKWN1cnJlbnRTY3JpcHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jdXJyZW50
U2NyaXB0KCkpKTsKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gSU1QTC0+Y3VycmVu
dFNjcmlwdCgpOworICAgIGlmICghaXM8V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1l
bnQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGRv
d25jYXN0PFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSkpOwogfQogCiAtIChO
U1N0cmluZyAqKW9yaWdpbgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjI5MzApCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMTEgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIERvY3VtZW50LmN1cnJlbnRTY3JpcHQgZG9lcyBub3Qg
d29yayBmb3IgU1ZHU2NyaXB0RWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2RvY3VtZW50
cy9kb20tdHJlZS1hY2Nlc3NvcnMvRG9jdW1lbnQuY3VycmVudFNjcmlwdC1leHBlY3RlZC50eHQ6
CisgICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3VsdHMgYWZ0ZXIgbWFraW5nIGN1cnJlbnRTY3JpcHQg
d29yayB3aXRoIFNWR1NjcmlwdEVsZW1lbnRzLgorCiAyMDIwLTA2LTExICBPcmlvbCBCcnVmYXUg
IDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBSZWltcG9ydCBXUFQg
dGVzdHMgcmVtb3ZlZCBpbiByMjYyODA5CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2RvY3VtZW50cy9kb20tdHJlZS1hY2Nlc3NvcnMv
RG9jdW1lbnQuY3VycmVudFNjcmlwdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9kb2N1bWVudHMv
ZG9tLXRyZWUtYWNjZXNzb3JzL0RvY3VtZW50LmN1cnJlbnRTY3JpcHQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNjI5MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvZG9tL2RvY3VtZW50cy9kb20tdHJlZS1hY2Nlc3NvcnMvRG9jdW1lbnQuY3Vy
cmVudFNjcmlwdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDExICsxMyw3IEBA
IFBBU1MgU2NyaXB0IHNjcmlwdC13aW5kb3ctZXJyb3IgCiBQQVNTIFNjcmlwdCB0aW1lb3V0IAog
UEFTUyBTY3JpcHQgZXZhbCAKIFBBU1MgU2NyaXB0IHhoci10ZXN0IAotRkFJTCBTY3JpcHQgc2Ny
aXB0LXN2ZyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBleHBlY3RlZCBwcm9wZXJ0eSAwIHRvIGJlIEVs
ZW1lbnQgbm9kZSA8c2NyaXB0IGlkPSJzY3JpcHQtc3ZnIj4KLSAgICB2ZXJpZnkoJ3NjcmlwdC1z
dmcnKTsKLSAgICBmaS4uLiBidXQgZ290IG51bGwgKGV4cGVjdGVkIGFycmF5IFtFbGVtZW50IG5v
ZGUgPHNjcmlwdCBpZD0ic2NyaXB0LXN2ZyI+Ci0gICAgdmVyaWZ5KCdzY3JpcHQtc3ZnJyk7Ci0g
ICAgZmkuLi5dIGdvdCBbbnVsbF0pCitQQVNTIFNjcmlwdCBzY3JpcHQtc3ZnIAogUEFTUyBTY3Jp
cHQgc2NyaXB0LWFzeW5jIAogUEFTUyBTY3JpcHQgc2NyaXB0LWRlZmVyIAogUEFTUyBTY3JpcHQg
c2NyaXB0LWFzeW5jLWZhbHNlIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401702</attachid>
            <date>2020-06-11 20:13:39 -0700</date>
            <delta_ts>2020-06-12 07:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213104-20200611201338.patch</filename>
            <type>text/plain</type>
            <size>19617</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjkyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA2LTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBEb2N1bWVudC5jdXJyZW50U2NyaXB0
IGRvZXMgbm90IHdvcmsgZm9yIFNWR1NjcmlwdEVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVzIHJlc3VsdHMgZm9yIGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBBZGQgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggdG8gdGhlIFhjb2RlIHByb2pl
Y3QgYXMgaXQgd2FzIG1pc3NpbmcuCisKKyAgICAgICAgKiBkb20vQ3VycmVudFNjcmlwdEluY3Jl
bWVudGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXI6OkN1
cnJlbnRTY3JpcHRJbmNyZW1lbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXI6On5DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIpOgorICAgICAgICBSZS13b3Jr
IHVzaW5nIFNjcmlwdEVsZW1lbnQsIHJlbW92aW5nIHRoZSBIVE1MU2NyaXB0RWxlbWVudCBjaGVj
a3MuIEFsc28gY2hhbmdlcworICAgICAgICBzY3JpcHRUeXBlIGNoZWNrIHRvIGV4cGxpY2l0bHkg
Y2hlY2sgdGhhdCBhZ2FpbnN0IGNsYXNzaWMgc2NyaXB0cywgYXMgdGhleSBhcmUKKyAgICAgICAg
dGhlIG9ubHkgc3VwcG9ydGVkIHR5cGUsIGFuZCBpZiBhbnkgdHlwZXMgb3RoZXIgdGhhbiBtb2R1
bGVzIGFyZSBhZGRlZCBpbiB0aGUgCisgICAgICAgIGZ1dHVyZSwgd2Ugd291bGQgbm90IHdhbnQg
dGhpcyB0byBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnB1c2hDdXJyZW50U2NyaXB0KToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjdXJyZW50U2Ny
aXB0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuIEVsZW1lbnQsIHJhdGhlciB0aGFuIGFuIEhUTUxT
Y3JpcHRFbGVtZW50IGZvciBjdXJyZW50U2NyaXB0L2N1cnJlbnRTY3JpcHRTdGFjaworICAgICAg
ICBzbyB0aGF0IGVpdGhlciBhbiBIVE1MU2NyaXB0RWxlbWVudCBvciBhbiBTVkdTY3JpcHRFbGVt
ZW50IGNhbiBiZSBzdG9yZWQuIFVzaW5nIGEgCisgICAgICAgIFNjcmlwdEVsZW1lbnQgd291bGQg
YmUgcG9zc2libGUsIGJ1dCB3b3VsZCBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiB1bm5l
Y2Vzc2FyaWx5CisgICAgICAgIGJ5IHJlcXVpcmluZyBjdXJyZW50U2NyaXB0IHRvIGhhdmUgYW4g
YWRkaXRpb25hbCBjaGVja3MgYmVmb3JlIGV4dHJhY3RpbmcgdGhlIEVsZW1lbnQuCisgICAgICAg
IFZhcmlhbnQ8UmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiwgUmVmUHRyPFNWR1NjcmlwdEVsZW1l
bnQ+PiBjb3VsZCBhbHNvIGhhdmUgYmVlbiB1c2VkCisgICAgICAgIGJ1dCBhbHNvIHdvdWxkIHVu
bmVjZXNzYXJpbHkgY29tcGxpY2F0ZWQgdGhlIGludGVyZmFjZSBhbmQgY2F1c2VkIG1vcmUgbWVt
b3J5IHRvIGJlIHVzZWQuIAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAg
VXBkYXRlIGludGVyZmFjZSB0byB1c2UgRWxlbWVudCByYXRoZXIgSFRNTFNjcmlwdEVsZW1lbnQg
d2l0aCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgd2UKKyAgICAgICAgYXJlIG5vdCB1c2luZyBI
VE1MT3JTVkdTY3JpcHRFbGVtZW50IGJ1dCByZXRhaW5pbmcgdGhlIHNhbWUgb2JzZXJ2YWJsZSBi
ZWhhdmlvci4KKworICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQpOgorICAgICAgICBQYXNz
ICp0aGlzIGRpcmVjdGx5IHRvIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciB0byBzaW1wbGlmeSBp
bXBsZW1lbnRhdGlvbi4KKwogMjAyMC0wNi0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGNvbW1lbnQgYWZ0ZXIgYmxvY2tsaXN0IHRyYW5zaXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyMjgsNiArMTAyMjgsNyBAQAog
CQk3Q0VCNTdFQTFGOTU2NTE1MDAwOTdBRUMgLyogU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU2V0dGluZ3MuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TZXR0aW5n
cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDRjE1ODk5MUVC
QkNEQzcwMEQ0QkZCNyAvKiBTdWJyZXNvdXJjZUludGVncml0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUludGVncml0eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRjE1ODlBMUVCQkNEQzcwMEQ0QkZCNyAvKiBTdWJyZXNv
dXJjZUludGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJyZXNv
dXJjZUludGVncml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0Y1NzBDNjI0
OTJCRDQ5MDA4RUIzM0MgLyogQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEhlYWRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NGREM1N0ExQUMxRDgwNTAwRTI0QTU3IC8qIENvbnRlbnRFeHRl
bnNpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250
ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZE
QzU3QjFBQzFEODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25FcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2NjYsNiArMjg2NjcsNyBAQAogCQkJCUUxQTE0NzA3
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovLAogCQkJCTk3
NjI3QjhCMTRGQjNDRUUwMDJDRENBMSAvKiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAg
Ki8sCiAJCQkJOTc2MjdCOEMxNEZCM0NFRTAwMkNEQ0ExIC8qIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmggKi8sCisJCQkJN0NGNTcwQzYyNDkyQkQ0OTAwOEVCMzNDIC8qIEN1cnJlbnRTY3Jp
cHRJbmNyZW1lbnRlci5oICovLAogCQkJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgKi8sCiAJCQkJOUI1NkM5QTgxQzg5MzEyODAwQzQ1
NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8sCiAJCQkJOUJENEU5MTgxQzQ2
MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oCShyZXZpc2lvbiAy
NjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDM0ICsyOSwyNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFNj
cmlwdEluY3JlbWVudGVyKTsKIHB1YmxpYzoKLSAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50KQorICAgIEN1cnJlbnRTY3JpcHRJ
bmNyZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1l
bnQpCiAgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAgICAgLCBtX2lzSFRNTFNj
cmlwdEVsZW1lbnQoaXM8SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgIHsKLSAgICAg
ICAgaWYgKCFtX2lzSFRNTFNjcmlwdEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGF1dG8mIHNjcmlwdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxl
bWVudCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkUHVzaE51bGxGb3JDdXJyZW50U2NyaXB0ID0gc2Ny
aXB0RWxlbWVudC5pc0luU2hhZG93VHJlZSgpIHx8IHNjcmlwdEVsZW1lbnQuc2NyaXB0VHlwZSgp
ID09IFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU6Ok1vZHVsZTsKLSAgICAgICAgbV9kb2N1bWVu
dC5wdXNoQ3VycmVudFNjcmlwdChzaG91bGRQdXNoTnVsbEZvckN1cnJlbnRTY3JpcHQgPyBudWxs
cHRyIDogJnNjcmlwdEVsZW1lbnQpOworICAgICAgICBib29sIHNob3VsZFB1c2hOdWxsRm9yQ3Vy
cmVudFNjcmlwdCA9IHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmlzSW5TaGFkb3dUcmVlKCkgfHwg
c2NyaXB0RWxlbWVudC5zY3JpcHRUeXBlKCkgIT0gU2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZTo6
Q2xhc3NpYzsKKyAgICAgICAgbV9kb2N1bWVudC5wdXNoQ3VycmVudFNjcmlwdChzaG91bGRQdXNo
TnVsbEZvckN1cnJlbnRTY3JpcHQgPyBudWxscHRyIDogJnNjcmlwdEVsZW1lbnQuZWxlbWVudCgp
KTsKICAgICB9CiAKICAgICB+Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKCkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9pc0hUTUxTY3JpcHRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX2RvY3VtZW50LnBvcEN1cnJlbnRTY3JpcHQoKTsKICAgICB9CiAKIHByaXZhdGU6CiAg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7Ci0gICAgYm9vbCBtX2lzSFRNTFNjcmlwdEVsZW1lbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1OTAsNyArNTU5MCw3IEBAIFN0cmluZyBEb2N1bWVudDo6cXVl
cnlDb21tYW5kVmFsdWUoY29uc3QKICAgICByZXR1cm4gY29tbWFuZCh0aGlzLCBjb21tYW5kTmFt
ZSkudmFsdWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6cHVzaEN1cnJlbnRTY3JpcHQoSFRNTFNj
cmlwdEVsZW1lbnQqIG5ld0N1cnJlbnRTY3JpcHQpCit2b2lkIERvY3VtZW50OjpwdXNoQ3VycmVu
dFNjcmlwdChFbGVtZW50KiBuZXdDdXJyZW50U2NyaXB0KQogewogICAgIG1fY3VycmVudFNjcmlw
dFN0YWNrLmFwcGVuZChuZXdDdXJyZW50U2NyaXB0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiAyNjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw2IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OwotY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaWdobGln
aHRNYXA7CiBjbGFzcyBIaXRUZXN0TG9jYXRpb247CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKQEAg
LTE4Nyw3ICsxODYsNiBAQCBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnM7CiBjbGFzcyBTVkdT
VkdFbGVtZW50OwogY2xhc3MgU1ZHVXNlRWxlbWVudDsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKLWNsYXNzIFNjcmlwdEVsZW1lbnREYXRhOwogY2xhc3MgU2NyaXB0TW9kdWxlTG9hZGVyOwog
Y2xhc3MgU2NyaXB0UnVubmVyOwogY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOwpAQCAt
MTAzOCw4ICsxMDM2LDggQEAgcHVibGljOgogICAgIFNjcmlwdFJ1bm5lciYgc2NyaXB0UnVubmVy
KCkgeyByZXR1cm4gKm1fc2NyaXB0UnVubmVyOyB9CiAgICAgU2NyaXB0TW9kdWxlTG9hZGVyJiBt
b2R1bGVMb2FkZXIoKSB7IHJldHVybiAqbV9tb2R1bGVMb2FkZXI7IH0KIAotICAgIEhUTUxTY3Jp
cHRFbGVtZW50KiBjdXJyZW50U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gIW1fY3VycmVudFNjcmlw
dFN0YWNrLmlzRW1wdHkoKSA/IG1fY3VycmVudFNjcmlwdFN0YWNrLmxhc3QoKS5nZXQoKSA6IG51
bGxwdHI7IH0KLSAgICB2b2lkIHB1c2hDdXJyZW50U2NyaXB0KEhUTUxTY3JpcHRFbGVtZW50Kik7
CisgICAgRWxlbWVudCogY3VycmVudFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuICFtX2N1cnJlbnRT
Y3JpcHRTdGFjay5pc0VtcHR5KCkgPyBtX2N1cnJlbnRTY3JpcHRTdGFjay5sYXN0KCkuZ2V0KCkg
OiBudWxscHRyOyB9CisgICAgdm9pZCBwdXNoQ3VycmVudFNjcmlwdChFbGVtZW50Kik7CiAgICAg
dm9pZCBwb3BDdXJyZW50U2NyaXB0KCk7CiAKICAgICBib29sIHNob3VsZERlZmVyQXN5bmNocm9u
b3VzU2NyaXB0c1VudGlsUGFyc2luZ0ZpbmlzaGVzKCkgY29uc3Q7CkBAIC0xNzkxLDcgKzE3ODks
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0
UnVubmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxl
TG9hZGVyOwogCi0gICAgVmVjdG9yPFJlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4+IG1fY3VycmVu
dFNjcmlwdFN0YWNrOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1fY3VycmVudFNjcmlw
dFN0YWNrOwogCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgdm9pZCBhcHBseVBlbmRpbmdYU0xUcmFu
c2Zvcm1zVGltZXJGaXJlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lv
biAyNjI5MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw4IEBAIHR5cGVkZWYgKAogICAgIEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dCBvciAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFJlbmRlcmluZ0NvbnRl
eHQ7CiAKK3R5cGVkZWYgKEhUTUxTY3JpcHRFbGVtZW50IG9yIFNWR1NjcmlwdEVsZW1lbnQpIEhU
TUxPclNWR1NjcmlwdEVsZW1lbnQ7CisKIFsKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1
Y3RvckNhbGxXaXRoPURvY3VtZW50LApAQCAtMTAwLDcgKzEwMiwxMCBAQCB0eXBlZGVmICgKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gZm9ybXM7IC8vIFNob3VsZCBiZSBb
U2FtZU9iamVjdF0uCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHNjcmlw
dHM7IC8vIFNob3VsZCBiZSBbU2FtZU9iamVjdF0uCiAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNC
eU5hbWUoW0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50TmFtZSk7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIEhUTUxTY3JpcHRFbGVtZW50PyBjdXJyZW50U2NyaXB0OyAvLyBGSVhNRTogU2hv
dWxkIHJldHVybiBhIEhUTUxPclNWR1NjcmlwdEVsZW1lbnQuCisgICAgCisgICAgLy8gY3VycmVu
dFNjcmlwdCBpcyBzcGVjaWZpZWQgdG8gdXNlIHR5cGUgSFRNTE9yU1ZHU2NyaXB0RWxlbWVudD8s
IGJ1dCBpbXBsZW1lbnRlZCB1c2luZworICAgIC8vIHNoYXJlZCBiYXNlIHR5cGUgRWxlbWVudD8g
dG8gb3B0aW1pemUgaW1wbGVtZW50YXRpb24gd2l0aG91dCBhbiBvYnNlcnZhYmxlIGRpZmZlcmVu
Y2UuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGN1cnJlbnRTY3JpcHQ7CiAKICAg
ICAvLyBkeW5hbWljIG1hcmt1cCBpbnNlcnRpb24KICAgICAvLyBGSVhNRTogVGhlIEhUTUwgc3Bl
YyBzYXlzIHRoaXMgc2hvdWxkIGNvbnN1bHQgdGhlICJyZXNwb25zaWJsZSBkb2N1bWVudCIuIFdl
IHNob3VsZCBlbnN1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgor
I2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVDbGFzc2ljU2NyaXB0
LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgiCkBAIC0zOTMsNyArMzk0LDcg
QEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdAogICAgICAgICByZXR1
cm47CiAKICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVE
ZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9pc0V4dGVybmFsU2NyaXB0ID8gJmRv
Y3VtZW50IDogbnVsbHB0cik7Ci0gICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKKyAgICBDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCAqdGhpcyk7CiAK
ICAgICBXVEZCZWdpblNpZ25wb3N0KHRoaXMsICJFeGVjdXRlIFNjcmlwdCBFbGVtZW50IiwgImV4
ZWN1dGluZyBjbGFzc2ljIHNjcmlwdCBmcm9tIFVSTDogJXtwdWJsaWN9cyBhc3luYzogJWQgZGVm
ZXI6ICVkIiwgbV9pc0V4dGVybmFsU2NyaXB0ID8gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpIDogImlubGluZSIsIGhhc0FzeW5jQXR0cmlidXRlKCksIGhhc0RlZmVyQXR0
cmlidXRlKCkpOwogICAgIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KHNvdXJjZUNvZGUpOwpAQCAtNDEyLDcgKzQxMyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhl
Y3V0ZU1vZHVsZVNjcmlwdCgKICAgICAgICAgcmV0dXJuOwogCiAgICAgSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyKCZkb2N1bWVudCk7Ci0gICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKKyAgICBDdXJyZW50U2NyaXB0
SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCAqdGhpcyk7CiAK
ICAgICBXVEZCZWdpblNpZ25wb3N0KHRoaXMsICJFeGVjdXRlIFNjcmlwdCBFbGVtZW50IiwgImV4
ZWN1dGluZyBtb2R1bGUgc2NyaXB0Iik7CiAgICAgZnJhbWUtPnNjcmlwdCgpLmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZVNjcmlwdChsb2FkYWJsZU1vZHVsZVNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjYyOTMyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgRG9jdW1lbnQuY3VycmVudFNjcmlwdCBkb2VzIG5vdCB3b3JrIGZvciBT
VkdTY3JpcHRFbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEzMTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2N1cnJl
bnRfc2NyaXB0KToKKyAgICAgICAgVXBkYXRlIHRvIGFjY291bnQgZm9yIGNoYW5nZSBpbiBEb2N1
bWVudDo6Y3VycmVudFNjcmlwdCgpIG5vdyByZXR1cm5pbmcgYW4KKyAgICAgICAgRWxlbWVudCog
dGhhdCBjYW4gYmUgZWl0aGVyIGFuIEhUTUxTY3JpcHRFbGVtZW50IG9yIGFuIFNWR1NjcmlwdEVs
ZW1lbnQuIFRvCisgICAgICAgIGtlZXAgQVBJIGNvbXBhdGliaWxpdHksIG9ubHkgcmV0dXJuIG5v
bi1udWxsIGZvciBIVE1MU2NyaXB0RWxlbWVudHMuCisKIDIwMjAtMDYtMTEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1lbmFibGUgZG93
bmxvYWQgcmVzdW1lIHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01Eb2N1bWVudEd0ay5jcHAJKHJldmlzaW9uIDI2MjkxNikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MDgsOCArMTkwOCwxMCBAQCBXZWJLaXRET01I
VE1MU2NyaXB0RWxlbWVudCogd2Via2l0X2RvbV9kCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
RE9DVU1FTlQoc2VsZiksIDApOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudD4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmN1cnJlbnRTY3JpcHQoKSk7Ci0gICAgcmV0
dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIFdlYkNvcmU6OkVsZW1l
bnQqIGVsZW1lbnQgPSBpdGVtLT5jdXJyZW50U2NyaXB0KCk7CisgICAgaWYgKCFpczxXZWJDb3Jl
OjpIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAg
IHJldHVybiBXZWJLaXQ6OmtpdChkb3duY2FzdDxXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudD4o
ZWxlbWVudCkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfb3JpZ2luKFdl
YktpdERPTURvY3VtZW50KiBzZWxmKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjYyOTI5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDYtMTEgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIERvY3VtZW50LmN1cnJlbnRTY3JpcHQgZG9lcyBu
b3Qgd29yayBmb3IgU1ZHU2NyaXB0RWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtE
T01Eb2N1bWVudCBjdXJyZW50U2NyaXB0XSk6CisgICAgICAgIFVwZGF0ZSB0byBhY2NvdW50IGZv
ciBjaGFuZ2UgaW4gRG9jdW1lbnQ6OmN1cnJlbnRTY3JpcHQoKSBub3cgcmV0dXJuaW5nIGFuCisg
ICAgICAgIEVsZW1lbnQqIHRoYXQgY2FuIGJlIGVpdGhlciBhbiBIVE1MU2NyaXB0RWxlbWVudCBv
ciBhbiBTVkdTY3JpcHRFbGVtZW50LiBUbworICAgICAgICBrZWVwIEFQSSBjb21wYXRpYmlsaXR5
LCBvbmx5IHJldHVybiBub24tbnVsbCBmb3IgSFRNTFNjcmlwdEVsZW1lbnRzLgorCiAyMDIwLTA2
LTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIGlu
c3RhbmNlcyBvZiB3aGl0ZWxpc3QgaW4gV2ViQ29yZSB3aXRoIGFsbG93bGlzdApJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkocmV2aXNpb24gMjYyOTE2
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MDQsNyArNDA0LDEwIEBAIC0gKEJPT0wpaGlkZGVuCiAtIChET01IVE1MU2Ny
aXB0RWxlbWVudCAqKWN1cnJlbnRTY3JpcHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jdXJyZW50
U2NyaXB0KCkpKTsKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gSU1QTC0+Y3VycmVu
dFNjcmlwdCgpOworICAgIGlmICghaXM8V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1l
bnQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGRv
d25jYXN0PFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSkpOwogfQogCiAtIChO
U1N0cmluZyAqKW9yaWdpbgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjI5MzIpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDYtMTEgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIERvY3VtZW50LmN1cnJlbnRTY3JpcHQgZG9lcyBub3Qg
d29yayBmb3IgU1ZHU2NyaXB0RWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2RvY3VtZW50
cy9kb20tdHJlZS1hY2Nlc3NvcnMvRG9jdW1lbnQuY3VycmVudFNjcmlwdC1leHBlY3RlZC50eHQ6
CisgICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3VsdHMgYWZ0ZXIgbWFraW5nIGN1cnJlbnRTY3JpcHQg
d29yayB3aXRoIFNWR1NjcmlwdEVsZW1lbnRzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25vbmNlLWhpZGluZy9zdmdzY3JpcHQtbm9uY2Vz
LWhpZGRlbi1tZXRhLnRlbnRhdGl2ZS5zdWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9ub25jZS1oaWRpbmcvc3Znc2Ny
aXB0LW5vbmNlcy1oaWRkZW4udGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRl
IHJlc3VsdHMuIE5vdCBwYXNzaW5nLCBidXQgZ2V0dGluZyBmdXJ0aGVyLiAKKwogMjAyMC0wNi0x
MSAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3Jp
ZF0gUmVpbXBvcnQgV1BUIHRlc3RzIHJlbW92ZWQgaW4gcjI2MjgwOQpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9ub25jZS1oaWRpbmcvc3Znc2NyaXB0LW5vbmNlcy1oaWRkZW4tbWV0YS50ZW50YXRpdmUuc3Vi
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25vbmNlLWhpZGluZy9zdmdz
Y3JpcHQtbm9uY2VzLWhpZGRlbi1tZXRhLnRlbnRhdGl2ZS5zdWItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNjI5MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25vbmNlLWhpZGluZy9zdmdzY3JpcHQtbm9uY2Vz
LWhpZGRlbi1tZXRhLnRlbnRhdGl2ZS5zdWItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsMTMgQEAKKyB1bmRlZmluZWQKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3Nh
Z2UgPSBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZG9jdW1l
bnQuY3VycmVudFNjcmlwdC5zZXRBdHRyaWJ1dGUnKQorRkFJTCBSZWFkaW5nICdub25jZScgY29u
dGVudCBhdHRyaWJ1dGUgYW5kIElETCBhdHRyaWJ1dGUuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IChzdHJpbmcpICJhYmMiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitGQUlMIENsb25l
ZCBub2RlIHJldGFpbnMgbm9uY2UuIGFzc2VydF9lcXVhbHM6IElETCBhdHRyaWJ1dGUgZXhwZWN0
ZWQgKHN0cmluZykgImFiYyIgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgQ2xv
bmVkIG5vZGUgcmV0YWlucyBub25jZSB3aGVuIGluc2VydGVkLiBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAoc3RyaW5nKSAiYWJjIiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBX
cml0aW5nICdub25jZScgY29udGVudCBhdHRyaWJ1dGUuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IChzdHJpbmcpICJhYmMiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitQQVNTIFdyaXRp
bmcgJ25vbmNlJyBJREwgYXR0cmlidXRlLiAKK1BBU1MgRG9jdW1lbnQtd3JpdHRlbiBzY3JpcHQg
ZXhlY3V0ZXMuIAorRkFJTCBEb2N1bWVudC13cml0dGVuIHNjcmlwdCdzIG5vbmNlIHZhbHVlLiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiYWJjIiBidXQgZ290ICh1bmRlZmluZWQp
IHVuZGVmaW5lZAorUEFTUyBjcmVhdGVFbGVtZW50Lm5vbmNlLiAKK1BBU1MgY3JlYXRlRWxlbWVu
dC5zZXRBdHRyaWJ1dGUuIAorUEFTUyBOb25jZXMgZG9uJ3QgbGVhayB2aWEgQ1NTIHNpZGUtY2hh
bm5lbHMuIAogCi0gCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25vbmNlLWhpZGluZy9zdmdzY3JpcHQtbm9u
Y2VzLWhpZGRlbi50ZW50YXRpdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xp
Y3kvbm9uY2UtaGlkaW5nL3N2Z3NjcmlwdC1ub25jZXMtaGlkZGVuLnRlbnRhdGl2ZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI2MjkxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbm9uY2UtaGlkaW5nL3N2Z3Nj
cmlwdC1ub25jZXMtaGlkZGVuLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSwxNCBAQAorIAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFR5
cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdkb2N1bWVudC5jdXJy
ZW50U2NyaXB0LnNldEF0dHJpYnV0ZScpCitGQUlMIFJlYWRpbmcgJ25vbmNlJyBjb250ZW50IGF0
dHJpYnV0ZSBhbmQgSURMIGF0dHJpYnV0ZS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgRWxlbWVu
dCBub2RlIDxzY3JpcHQgbm9uY2U9ImFiYyIgaWQ9InRlc3RTY3JpcHQiIGV4ZWN1dGVkPSJ5YXki
PgorICAgIGQuLi4gYnV0IGdvdCBudWxsCitGQUlMIENsb25lZCBub2RlIHJldGFpbnMgbm9uY2Uu
IGFzc2VydF9lcXVhbHM6IElETCBhdHRyaWJ1dGUgZXhwZWN0ZWQgKHN0cmluZykgImFiYyIgYnV0
IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKK0ZBSUwgQ2xvbmVkIG5vZGUgcmV0YWlucyBub25j
ZSB3aGVuIGluc2VydGVkLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiYWJjIiBi
dXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAorRkFJTCBXcml0aW5nICdub25jZScgY29udGVu
dCBhdHRyaWJ1dGUuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJhYmMiIGJ1dCBn
b3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitQQVNTIFdyaXRpbmcgJ25vbmNlJyBJREwgYXR0cmli
dXRlLiAKK1BBU1MgRG9jdW1lbnQtd3JpdHRlbiBzY3JpcHQgZXhlY3V0ZXMuIAorRkFJTCBEb2N1
bWVudC13cml0dGVuIHNjcmlwdCdzIG5vbmNlIHZhbHVlLiBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiIiBidXQgZ290ICJhYmMiCitGQUlMIGNyZWF0ZUVsZW1lbnQubm9uY2UuIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYWJjIgorRkFJTCBj
cmVhdGVFbGVtZW50LnNldEF0dHJpYnV0ZS4gYXNzZXJ0X2VxdWFsczogUG9zdC1pbnNlcnRpb24g
Y29udGVudCBleHBlY3RlZCAiIiBidXQgZ290ICJhYmMiCitGQUlMIE5vbmNlcyBkb24ndCBsZWFr
IHZpYSBDU1Mgc2lkZS1jaGFubmVscy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIm5vbmUiIGJ1
dCBnb3QgInVybChcImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9zZWN1cml0eS9yZXNvdXJjZXMvYWJl
LnBuZ1wiKSIKIAotIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2RvbS9kb2N1bWVudHMvZG9tLXRyZWUtYWNjZXNzb3JzL0RvY3VtZW50LmN1
cnJlbnRTY3JpcHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vZG9jdW1lbnRzL2RvbS10cmVlLWFj
Y2Vzc29ycy9Eb2N1bWVudC5jdXJyZW50U2NyaXB0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjYy
OTE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2RvbS9kb2N1bWVudHMvZG9tLXRyZWUtYWNjZXNzb3JzL0RvY3VtZW50LmN1cnJlbnRTY3JpcHQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMSArMTMsNyBAQCBQQVNTIFNjcmlw
dCBzY3JpcHQtd2luZG93LWVycm9yIAogUEFTUyBTY3JpcHQgdGltZW91dCAKIFBBU1MgU2NyaXB0
IGV2YWwgCiBQQVNTIFNjcmlwdCB4aHItdGVzdCAKLUZBSUwgU2NyaXB0IHNjcmlwdC1zdmcgYXNz
ZXJ0X2FycmF5X2VxdWFsczogZXhwZWN0ZWQgcHJvcGVydHkgMCB0byBiZSBFbGVtZW50IG5vZGUg
PHNjcmlwdCBpZD0ic2NyaXB0LXN2ZyI+Ci0gICAgdmVyaWZ5KCdzY3JpcHQtc3ZnJyk7Ci0gICAg
ZmkuLi4gYnV0IGdvdCBudWxsIChleHBlY3RlZCBhcnJheSBbRWxlbWVudCBub2RlIDxzY3JpcHQg
aWQ9InNjcmlwdC1zdmciPgotICAgIHZlcmlmeSgnc2NyaXB0LXN2ZycpOwotICAgIGZpLi4uXSBn
b3QgW251bGxdKQorUEFTUyBTY3JpcHQgc2NyaXB0LXN2ZyAKIFBBU1MgU2NyaXB0IHNjcmlwdC1h
c3luYyAKIFBBU1MgU2NyaXB0IHNjcmlwdC1kZWZlciAKIFBBU1MgU2NyaXB0IHNjcmlwdC1hc3lu
Yy1mYWxzZSAK
</data>
<flag name="review"
          id="417122"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>