<?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>184530</bug_id>
          
          <creation_ts>2018-04-12 03:13:11 -0700</creation_ts>
          <short_desc>[WebVR][OpenVR] Implement requestPresent()/exitPresent() and getLayers()</short_desc>
          <delta_ts>2018-04-13 08:20:22 -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="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1413971</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-12 03:13:11 -0700</bug_when>
    <thetext>[WebVR][OpenVR] Implement requestPresent()/exitPresent() and getLayers()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413977</commentid>
    <comment_count>1</comment_count>
      <attachid>337784</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-12 03:29:05 -0700</bug_when>
    <thetext>Created attachment 337784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413982</commentid>
    <comment_count>2</comment_count>
      <attachid>337787</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-12 04:56:46 -0700</bug_when>
    <thetext>Created attachment 337787
Patch

rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414062</commentid>
    <comment_count>3</comment_count>
      <attachid>337787</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-12 10:14:28 -0700</bug_when>
    <thetext>Comment on attachment 337787
Patch

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

&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:143
&gt; +    Ref&lt;DeferredPromise&gt; promise = WTFMove(deferredPromise);

Is this necessary? It usually isn&apos;t.

&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:161
&gt; +    RELEASE_ASSERT(layers.size() == 1);
&gt; +    auto layer = layers[0];

This should handle more than one layer at some point, right? But it&apos;s currently limited to the maxLayers() value in VRDisplayCapabilities?

&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:168
&gt; +    if (!layer.source-&gt;getContext(&quot;webgl&quot;)-&gt;isWebGL()) {

This should handle HTMLCanvas::getContext() returning nullptr.

&gt; Source/WebCore/Modules/webvr/VRDisplay.h:123
&gt; +    bool m_isPresenting;
&gt; +    std::optional&lt;VRLayerInit&gt; m_presentingLayer;

Can m_isPresenting be deduced from m_presentingLayer being non-nullopt wherever it&apos;s used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414084</commentid>
    <comment_count>4</comment_count>
      <attachid>337787</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-12 11:01:43 -0700</bug_when>
    <thetext>Comment on attachment 337787
Patch

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

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.h:123
&gt;&gt; +    std::optional&lt;VRLayerInit&gt; m_presentingLayer;
&gt; 
&gt; Can m_isPresenting be deduced from m_presentingLayer being non-nullopt wherever it&apos;s used.

i.e, an m_isPresenting be eliminated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414363</commentid>
    <comment_count>5</comment_count>
      <attachid>337787</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-13 03:39:46 -0700</bug_when>
    <thetext>Comment on attachment 337787
Patch

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

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:143
&gt;&gt; +    Ref&lt;DeferredPromise&gt; promise = WTFMove(deferredPromise);
&gt; 
&gt; Is this necessary? It usually isn&apos;t.

No, not really

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:161
&gt;&gt; +    auto layer = layers[0];
&gt; 
&gt; This should handle more than one layer at some point, right? But it&apos;s currently limited to the maxLayers() value in VRDisplayCapabilities?

Not in WebVR 1.1. As you can see in the spec (https://immersive-web.github.io/webvr/spec/1.1/#vrdisplaycapabilities-attributes) 

&quot;maxLayers Indicates the maximum length of the array that requestPresent() will accept. MUST be 1 if canPresent is true, 0 otherwise.&quot;

In the next specification, WebXR, maxLayers() does not exist for example.

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:168
&gt;&gt; +    if (!layer.source-&gt;getContext(&quot;webgl&quot;)-&gt;isWebGL()) {
&gt; 
&gt; This should handle HTMLCanvas::getContext() returning nullptr.

Right.

&gt;&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.h:123
&gt;&gt;&gt; +    std::optional&lt;VRLayerInit&gt; m_presentingLayer;
&gt;&gt; 
&gt;&gt; Can m_isPresenting be deduced from m_presentingLayer being non-nullopt wherever it&apos;s used.
&gt; 
&gt; i.e, an m_isPresenting be eliminated?

So far yes. I was just not sure and decided to play safe, but I can remove it now and add it later if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414364</commentid>
    <comment_count>6</comment_count>
      <attachid>337787</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-13 03:49:52 -0700</bug_when>
    <thetext>Comment on attachment 337787
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.h:123
&gt;&gt;&gt;&gt; +    std::optional&lt;VRLayerInit&gt; m_presentingLayer;
&gt;&gt;&gt; 
&gt;&gt;&gt; Can m_isPresenting be deduced from m_presentingLayer being non-nullopt wherever it&apos;s used.
&gt;&gt; 
&gt;&gt; i.e, an m_isPresenting be eliminated?
&gt; 
&gt; So far yes. I was just not sure and decided to play safe, but I can remove it now and add it later if needed.

Let&apos;s keep this extra boolean for now then, and remove it and simplify things around it when it&apos;s determined to not be required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414376</commentid>
    <comment_count>7</comment_count>
      <attachid>337881</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-13 04:59:41 -0700</bug_when>
    <thetext>Created attachment 337881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414381</commentid>
    <comment_count>8</comment_count>
      <attachid>337881</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-13 05:48:19 -0700</bug_when>
    <thetext>Comment on attachment 337881
Patch

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

&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:138
&gt; +void VRDisplay::rejectRequestAndStopPresenting(Ref&lt;DeferredPromise&gt;&amp; promise, ExceptionCode exceptionCode, const String&amp; message)
&gt; +{
&gt; +    promise-&gt;reject(Exception { exceptionCode, message });
&gt; +    if (m_presentingLayer)
&gt; +        stopPresenting();
&gt; +}

Given this method is specific to requestPresent(), it might fit better as a local lambda. But it&apos;s not super-important.

&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:184
&gt; +void VRDisplay::stopPresenting()
&gt;  {
&gt; +    m_presentingLayer = std::nullopt;
&gt;  }

Given this is now a one-liner, m_presentingLayer could just be nulled out eveywhere instead of having to call this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414382</commentid>
    <comment_count>9</comment_count>
      <attachid>337881</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-13 05:50:18 -0700</bug_when>
    <thetext>Comment on attachment 337881
Patch

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

&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:141
&gt; +void VRDisplay::requestPresent(const Vector&lt;VRLayerInit&gt;&amp; layers, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
&gt; +{

OTOH, this method is guaranteed to either null out the m_presentingLayer value or replace it with the passed-in object. If you null out m_presentingLayer at the beginning, you can replace rejectRequestAndStopPresenting() with direct `promise-&gt;reject()` calls and stop calling `stopPresenting()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414387</commentid>
    <comment_count>10</comment_count>
      <attachid>337881</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-13 06:46:23 -0700</bug_when>
    <thetext>Comment on attachment 337881
Patch

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

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:138
&gt;&gt; +}
&gt; 
&gt; Given this method is specific to requestPresent(), it might fit better as a local lambda. But it&apos;s not super-important.

Makes sense indeed.

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:141
&gt;&gt; +{
&gt; 
&gt; OTOH, this method is guaranteed to either null out the m_presentingLayer value or replace it with the passed-in object. If you null out m_presentingLayer at the beginning, you can replace rejectRequestAndStopPresenting() with direct `promise-&gt;reject()` calls and stop calling `stopPresenting()`.

With the current code that&apos;s true, but when we add the required code to effectively render the layer content in the HMD, stopPresenting() would likely have to do more things.

Now that I think about it, the specs mandate us to reject the promise in all the cases listed bellow but they don&apos;t specify that the presentation should be stopped, I&apos;ll change that.

&gt;&gt; Source/WebCore/Modules/webvr/VRDisplay.cpp:184
&gt;&gt;  }
&gt; 
&gt; Given this is now a one-liner, m_presentingLayer could just be nulled out eveywhere instead of having to call this method.

I know but I we&apos;d have to do more things whenever we integrate the requestPresent with the underlying SDK, i.e., when we effectively start using the passed in layer to render stereo content in the HMD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414389</commentid>
    <comment_count>11</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-13 06:52:20 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #10) 
&gt; Now that I think about it, the specs mandate us to reject the promise in all
&gt; the cases listed bellow but they don&apos;t specify that the presentation should
&gt; be stopped, I&apos;ll change that.

Nah, the code is correct. Literally from specs &quot;If a call to requestPresent() is rejected while the VRDisplay is already presenting, the VRDisplay MUST end presentation.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414391</commentid>
    <comment_count>12</comment_count>
      <attachid>337885</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-13 07:16:26 -0700</bug_when>
    <thetext>Created attachment 337885
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414400</commentid>
    <comment_count>13</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2018-04-13 08:19:07 -0700</bug_when>
    <thetext>Committed r230630: &lt;https://trac.webkit.org/changeset/230630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414401</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-13 08:20:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39412653&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337784</attachid>
            <date>2018-04-12 03:29:05 -0700</date>
            <delta_ts>2018-04-12 04:56:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184530-20180412122903.patch</filename>
            <type>text/plain</type>
            <size>9773</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU1OTNkY2Y4OWU0NWZi
NjM1YmU5Y2U5ZjdhNmIyZmQ1MDA0MjRkZS4uZGYxYWY3MTlmMTJlYzI2NzUyYmFmOTRhYTA2OTlh
YTc1ZDllMDI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA0LTEyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl1b
T3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQoKS9leGl0UHJlc2VudCgpIGFuZCBnZXRM
YXllcnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViVlIgYXBwcyBzaG91bGQgaW52b2tlIHJlcXVlc3RQcmVzZW50KCkgdG8gc3RhcnQgcHJlc2Vu
dGluZyBjb250ZW50cyBvZiBhIFZSTGF5ZXJJbml0CisgICAgICAgIChyaWdodCBub3cgYSBIVE1M
IGNhbnZhcyB3aXRoIGEgV2ViR0wgY29udGV4dCkgb24gdGhlIFZSRGlzcGxheS4gVGhpcyByZXF1
ZXN0IG1pZ2h0IGZhaWwgZm9yCisgICAgICAgIGEgdmFyaWV0eSBvZiByZWFzb25zIGFuZCBjYW4g
YmUgZXZlbnR1YWxseSBjYW5jZWxsZWQgd2l0aCBleGl0UHJlc2VudCgpLiBPbmNlIHdlIGFyZQor
ICAgICAgICBwcmVzZW50aW5nIHdlIGNvdWxkIGFjY2VzcyB0aGUgcHJlc2VudGluZyBsYXllcnMg
KHJpZ2h0IG5vdyBqdXN0IG9uZSkgd2l0aCBnZXRMYXllcnMoKS4KKworICAgICAgICBJIHRvb2sg
dGhlIGNoYW5jZSB0byBjb3JyZWN0IGEgbWlzdGFrIGluIHRoZSBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXMgb2JqZWN0IHdoaWNoIGhhcyBhIG1ldGhvZAorICAgICAgICB0aGF0IHNob3VsZCBiZSBjYWxs
ZWQgbWF4TGF5ZXJzIGluc3RlYWQgb2YgbWF4TGF5ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnZyL1ZSRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OnJlamVjdFJlcXVlc3RBbmRTdG9wUHJl
c2VudGluZyk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OnJlcXVlc3RQcmVzZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6c3RvcFByZXNlbnRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6VlJEaXNwbGF5OjpleGl0UHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpWUkRp
c3BsYXk6OmdldExheWVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6Omlz
UHJlc2VudGluZyBjb25zdCk6IERlbGV0ZWQuIEltcGxlbWVudGVkIGluIHRoZSBoZWFkZXIgZmls
ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXlD
YXBhYmlsaXRpZXM6Om1heExheWVycyBjb25zdCk6IFJlbmFtZWQgZnJvbSBtYXhMYXllci4KKyAg
ICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheUNhcGFiaWxpdGllczo6bWF4TGF5ZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlk
bDoKKwogMjAxOC0wNC0wMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbT3BlblZSXVtXZWJWUl0gUmV0cmlldmUgRnJhbWVEYXRhIGluIFdlYlZS
J3MgckFGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAKaW5kZXgg
ZjUyMGU2NmMyMWVhMWJmYjQxNTk0NGJlNTAwYTA2YWRkZmQ4MmNlZC4uY2Q2ZWY4ZjE0MTRlMWRh
MGRjMzNmNjQ3NmVkZjVkMWI4ZGI4YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5LmNwcApAQCAtMjYsOSArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJWUkRpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgi
CisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWUkRpc3BsYXlD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJWUkV5ZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJW
UkZyYW1lRGF0YS5oIgpAQCAtNDksNiArNTIsNyBAQCBSZWY8VlJEaXNwbGF5PiBWUkRpc3BsYXk6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPFZSUGxhdAog
VlJEaXNwbGF5OjpWUkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vh
a1B0cjxWUlBsYXRmb3JtRGlzcGxheT4mJiBwbGF0Zm9ybURpc3BsYXkpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2Rpc3BsYXkoV1RGTW92ZShwbGF0Zm9ybURpc3Bs
YXkpKQorICAgICwgbV9pc1ByZXNlbnRpbmcoZmFsc2UpCiB7CiAgICAgYXV0byBkaXNwbGF5SW5m
byA9IG1fZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKTsKICAgICBtX2NhcGFiaWxpdGllcyA9IFZS
RGlzcGxheUNhcGFiaWxpdGllczo6Y3JlYXRlKGRpc3BsYXlJbmZvLmNhcGFiaWxpdHlGbGFncygp
KTsKQEAgLTY4LDExICs3Miw2IEBAIGJvb2wgVlJEaXNwbGF5Ojppc0Nvbm5lY3RlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKS5pc0Nvbm5lY3RlZCgpOwog
fQogCi1ib29sIFZSRGlzcGxheTo6aXNQcmVzZW50aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIGNvbnN0IFZSRGlzcGxheUNhcGFiaWxpdGllcyYgVlJEaXNwbGF5OjpjYXBh
YmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiAqbV9jYXBhYmlsaXRpZXM7CkBAIC0xMzIs
MTggKzEzMSw4MCBAQCB2b2lkIFZSRGlzcGxheTo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUodWludDMy
X3QgaWQpCiAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPmNhbmNlbENhbGxiYWNr
KGlkKTsKIH0KIAotdm9pZCBWUkRpc3BsYXk6OnJlcXVlc3RQcmVzZW50KGNvbnN0IFZlY3RvcjxW
UkxheWVySW5pdD4mLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKQordm9pZCBWUkRpc3BsYXk6OnJl
amVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYgcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbkNvZGUsIG1lc3NhZ2Ug
fSk7CisgICAgaWYgKG1faXNQcmVzZW50aW5nKQorICAgICAgICBzdG9wUHJlc2VudGluZygpOwor
fQorCit2b2lkIFZSRGlzcGxheTo6cmVxdWVzdFByZXNlbnQoY29uc3QgVmVjdG9yPFZSTGF5ZXJJ
bml0PiYgbGF5ZXJzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIGRlZmVycmVkUHJvbWlzZSkKK3sK
KyAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBwcm9taXNlID0gV1RGTW92ZShkZWZlcnJlZFByb21p
c2UpOworCisgICAgaWYgKCFtX2NhcGFiaWxpdGllcy0+Y2FuUHJlc2VudCgpKSB7CisgICAgICAg
IHJlamVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyhwcm9taXNlLCBOb3RTdXBwb3J0ZWRFcnJv
ciwgQVNDSUlMaXRlcmFsKCJWUkRpc3BsYXkgY2Fubm90IHByZXNlbnQiKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIWxheWVycy5zaXplKCkgfHwgbGF5ZXJzLnNpemUoKSA+
IG1fY2FwYWJpbGl0aWVzLT5tYXhMYXllcnMoKSkgeworICAgICAgICByZWplY3RSZXF1ZXN0QW5k
U3RvcFByZXNlbnRpbmcocHJvbWlzZSwgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbChs
YXllcnMuc2l6ZSgpID8gIlRvbyBtYW55IGxheWVycyIgOiAiTm90IGVub3VnaCBsYXllcnMiKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNQcmVzZW50aW5nICYmICFV
c2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAg
cmVqZWN0UmVxdWVzdEFuZFN0b3BQcmVzZW50aW5nKHByb21pc2UsIEludmFsaWRBY2Nlc3NFcnJv
ciwgQVNDSUlMaXRlcmFsKCJNdXN0IHJlcXVlc3QgcHJlc2VudGF0aW9uIGZyb20gYSB1c2VyIGdl
c3R1cmUgaGFuZGxlci4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNF
X0FTU0VSVChsYXllcnMuc2l6ZSgpID09IDEpOworICAgIGF1dG8gbGF5ZXIgPSBsYXllcnNbMF07
CisKKyAgICBpZiAoIWxheWVyLnNvdXJjZSkgeworICAgICAgICByZWplY3RSZXF1ZXN0QW5kU3Rv
cFByZXNlbnRpbmcocHJvbWlzZSwgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTGF5
ZXIgZG9lcyBub3QgY29udGFpbiBhbnkgc291cmNlIikpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFsYXllci5zb3VyY2UtPmdldENvbnRleHQoIndlYmdsIiktPmlzV2ViR0wo
KSkgeworICAgICAgICByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRpbmcocHJvbWlzZSwgTm90
U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiV2ViVlIgcmVxdWlyZXMgVlJMYXllckluaXQg
d2l0aCBXZWJHTCBjb250ZXh0LiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICgobGF5ZXIubGVmdEJvdW5kcy5zaXplKCkgJiYgbGF5ZXIubGVmdEJvdW5kcy5zaXplKCkgIT0g
NCkKKyAgICAgICAgfHwgKGxheWVyLnJpZ2h0Qm91bmRzLnNpemUoKSAmJiBsYXllci5yaWdodEJv
dW5kcy5zaXplKCkgIT0gNCkpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVzdEFuZFN0b3BQcmVzZW50
aW5nKHByb21pc2UsIEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkxheWVyIGJvdW5k
cyBtdXN0IGJlIGVpdGhlciAwIG9yIDQiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2lzUHJlc2VudGluZyA9IHRydWU7CisgICAgbV9wcmVzZW50aW5nTGF5ZXIgPSBsYXllcjsK
KyAgICBwcm9taXNlLT5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgVlJEaXNwbGF5OjpzdG9wUHJlc2Vu
dGluZygpCiB7CisgICAgbV9pc1ByZXNlbnRpbmcgPSBmYWxzZTsKKyAgICBtX3ByZXNlbnRpbmdM
YXllciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBWUkRpc3BsYXk6OmV4aXRQcmVzZW50KFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpCit2b2lkIFZSRGlzcGxheTo6ZXhpdFByZXNlbnQoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogeworICAgIGlmICghbV9pc1ByZXNlbnRpbmcpIHsK
KyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBB
U0NJSUxpdGVyYWwoIlZSRGlzcGxheSBpcyBub3QgcHJlc2VudGluZyIpIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc3RvcFByZXNlbnRpbmcoKTsKIH0KIAotY29uc3QgVmVjdG9y
PFZSTGF5ZXJJbml0PiYgVlJEaXNwbGF5OjpnZXRMYXllcnMoKSBjb25zdAorVmVjdG9yPFZSTGF5
ZXJJbml0PiBWUkRpc3BsYXk6OmdldExheWVycygpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGF1dG8g
bW9ja0xheWVycyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8VlJMYXllckluaXQ+IHsgfSk7
Ci0gICAgcmV0dXJuIG1vY2tMYXllcnM7CisgICAgVmVjdG9yPFZSTGF5ZXJJbml0PiBsYXllcnM7
CisgICAgaWYgKG1faXNQcmVzZW50aW5nKSB7CisgICAgICAgIEFTU0VSVChtX3ByZXNlbnRpbmdM
YXllcik7CisgICAgICAgIGxheWVycy5hcHBlbmQobV9wcmVzZW50aW5nTGF5ZXIudmFsdWUoKSk7
CisgICAgfQorICAgIHJldHVybiBsYXllcnM7CiB9CiAKIHZvaWQgVlJEaXNwbGF5OjpzdWJtaXRG
cmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxh
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuaAppbmRleCAzNjQ3
ZTZkMmEyMGJkOTAxZmQxMGQzOGEzZjUwZjY4NGUxYTkxMzU1Li4zNzA5ZTgxYTRiYTBhNGZlYmQ0
ZWQ3MjE1OTFiNjA4NmNhMjk1NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJE
aXNwbGF5LmgKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJWUkV5ZS5oIgorI2lu
Y2x1ZGUgIlZSTGF5ZXJJbml0LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIEV4Y2VwdGlvbkNvZGU7CiBjbGFzcyBSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVDYWxsYmFjazsKIGNsYXNzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjsK
IGNsYXNzIFZSRGlzcGxheUNhcGFiaWxpdGllczsKQEAgLTQxLDcgKzQzLDYgQEAgY2xhc3MgVlJG
cmFtZURhdGE7CiBjbGFzcyBWUlBsYXRmb3JtRGlzcGxheTsKIGNsYXNzIFZSUG9zZTsKIGNsYXNz
IFZSU3RhZ2VQYXJhbWV0ZXJzOwotc3RydWN0IFZSTGF5ZXJJbml0OwogCiBjbGFzcyBWUkRpc3Bs
YXkgOiBwdWJsaWMgUmVmQ291bnRlZDxWUkRpc3BsYXk+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC01Myw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFZSRGlzcGxheT46OmRlcmVmOwog
CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0OwotICAgIGJvb2wgaXNQcmVzZW50aW5nKCkg
Y29uc3Q7CisgICAgYm9vbCBpc1ByZXNlbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUHJlc2Vu
dGluZzsgfTsKIAogICAgIGNvbnN0IFZSRGlzcGxheUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVz
KCkgY29uc3Q7CiAgICAgUmVmUHRyPFZSU3RhZ2VQYXJhbWV0ZXJzPiBzdGFnZVBhcmFtZXRlcnMo
KSBjb25zdDsKQEAgLTc5LDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFByZXNl
bnQoY29uc3QgVmVjdG9yPFZSTGF5ZXJJbml0PiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwog
ICAgIHZvaWQgZXhpdFByZXNlbnQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBjb25z
dCBWZWN0b3I8VlJMYXllckluaXQ+JiBnZXRMYXllcnMoKSBjb25zdDsKKyAgICBWZWN0b3I8VlJM
YXllckluaXQ+IGdldExheWVycygpIGNvbnN0OwogCiAgICAgdm9pZCBzdWJtaXRGcmFtZSgpOwog
CkBAIC05OCw2ICs5OSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7
CiAKKyAgICB2b2lkIHJlamVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYsIEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSA9IGVtcHR5U3Ry
aW5nKCkpOworICAgIHZvaWQgc3RvcFByZXNlbnRpbmcoKTsKKwogICAgIFdlYWtQdHI8VlJQbGF0
Zm9ybURpc3BsYXk+IG1fZGlzcGxheTsKIAogICAgIFJlZlB0cjxWUkRpc3BsYXlDYXBhYmlsaXRp
ZXM+IG1fY2FwYWJpbGl0aWVzOwpAQCAtMTE0LDYgKzExOCw5IEBAIHByaXZhdGU6CiAgICAgZG91
YmxlIG1fZGVwdGhGYXIgeyAxMDAwMCB9OyAvLyBEZWZhdWx0IHZhbHVlIGZyb20gdGhlIHNwZWNz
LgogCiAgICAgUmVmUHRyPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4gbV9zY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXI7CisKKyAgICBib29sIG1faXNQcmVzZW50aW5nOworICAgIHN0ZDo6
b3B0aW9uYWw8VlJMYXllckluaXQ+IG1fcHJlc2VudGluZ0xheWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkRpc3BsYXlDYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJE
aXNwbGF5Q2FwYWJpbGl0aWVzLmgKaW5kZXggYWEzZjNlYTBjZmI5OTVkNWVhMzc4NzVhNTIyZjA4
OGU5ZjZiZTJmZi4uODhiNTI3MjQ0M2U3OGJkYzEzNDlmYjIwMTFjMjNlMDVlNDU3ZmRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxp
dGllcy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc09yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpPcmll
bnRhdGlvbjsgfQogICAgIGJvb2wgaGFzRXh0ZXJuYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpFeHRlcm5hbERpc3BsYXk7IH0KICAg
ICBib29sIGNhblByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgVlJEaXNwbGF5Q2Fw
YWJpbGl0eUZsYWc6OlByZXNlbnQ7IH0KLSAgICB1bnNpZ25lZCBtYXhMYXllcigpIGNvbnN0IHsg
cmV0dXJuIGNhblByZXNlbnQoKSA/IDEgOiAwOyB9CisgICAgdW5zaWduZWQgbWF4TGF5ZXJzKCkg
Y29uc3QgeyByZXR1cm4gY2FuUHJlc2VudCgpID8gMSA6IDA7IH0KIAogcHJpdmF0ZToKICAgICBW
UkRpc3BsYXlDYXBhYmlsaXRpZXModW5zaWduZWQgY2FwYWJpbGl0eUZsYWdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaWRs
CmluZGV4IDk3YmVkMGNjZjczNWQ1Nzk2ZDM4ZjkxYmQzYWIwYzdmNTg3MjM2OWQuLjBmZTNlOWVl
OWQ5NjVkMGQyZThhZTRjZWUyYmEzZGFmMDBhNTkxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5pZGwKQEAgLTMxLDUg
KzMxLDUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBoYXNPcmllbnRhdGlvbjsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBoYXNFeHRlcm5hbERpc3BsYXk7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2FuUHJlc2VudDsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBtYXhMYXllcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBtYXhMYXllcnM7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337787</attachid>
            <date>2018-04-12 04:56:46 -0700</date>
            <delta_ts>2018-04-13 04:59:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184530-20180412135645.patch</filename>
            <type>text/plain</type>
            <size>9755</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1ZWU3YmFkODY3ODE4
MDBjZWFhYWE0NzRkYzU1YTBjODIwZWY0My4uMWUwODY0MGI0MWVhZGNlMzkxMzJiYmIzODVlZTlj
YmJhNTYwNzlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA0LTEyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl1b
T3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQoKS9leGl0UHJlc2VudCgpIGFuZCBnZXRM
YXllcnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViVlIgYXBwcyBzaG91bGQgaW52b2tlIHJlcXVlc3RQcmVzZW50KCkgdG8gc3RhcnQgcHJlc2Vu
dGluZyBjb250ZW50cyBvZiBhIFZSTGF5ZXJJbml0CisgICAgICAgIChyaWdodCBub3cgYSBIVE1M
IGNhbnZhcyB3aXRoIGEgV2ViR0wgY29udGV4dCkgb24gdGhlIFZSRGlzcGxheS4gVGhpcyByZXF1
ZXN0IG1pZ2h0IGZhaWwgZm9yCisgICAgICAgIGEgdmFyaWV0eSBvZiByZWFzb25zIGFuZCBjYW4g
YmUgZXZlbnR1YWxseSBjYW5jZWxsZWQgd2l0aCBleGl0UHJlc2VudCgpLiBPbmNlIHdlIGFyZQor
ICAgICAgICBwcmVzZW50aW5nIHdlIGNvdWxkIGFjY2VzcyB0aGUgcHJlc2VudGluZyBsYXllcnMg
KHJpZ2h0IG5vdyBqdXN0IG9uZSkgd2l0aCBnZXRMYXllcnMoKS4KKworICAgICAgICBJIHRvb2sg
dGhlIGNoYW5jZSB0byBjb3JyZWN0IGEgbWlzdGFrIGluIHRoZSBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXMgb2JqZWN0IHdoaWNoIGhhcyBhIG1ldGhvZAorICAgICAgICB0aGF0IHNob3VsZCBiZSBjYWxs
ZWQgbWF4TGF5ZXJzIGluc3RlYWQgb2YgbWF4TGF5ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnZyL1ZSRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OnJlamVjdFJlcXVlc3RBbmRTdG9wUHJl
c2VudGluZyk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OnJlcXVlc3RQcmVzZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6c3RvcFByZXNlbnRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6VlJEaXNwbGF5OjpleGl0UHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpWUkRp
c3BsYXk6OmdldExheWVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6Omlz
UHJlc2VudGluZyBjb25zdCk6IERlbGV0ZWQuIEltcGxlbWVudGVkIGluIHRoZSBoZWFkZXIgZmls
ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXlD
YXBhYmlsaXRpZXM6Om1heExheWVycyBjb25zdCk6IFJlbmFtZWQgZnJvbSBtYXhMYXllci4KKyAg
ICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheUNhcGFiaWxpdGllczo6bWF4TGF5ZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlk
bDoKKwogMjAxOC0wNC0xMiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBHU3RyZWFtZXIgYnVpbGRzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAKaW5kZXggZjUyMGU2NmMyMWVh
MWJmYjQxNTk0NGJlNTAwYTA2YWRkZmQ4MmNlZC4uY2Q2ZWY4ZjE0MTRlMWRhMGRjMzNmNjQ3NmVk
ZjVkMWI4ZGI4YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5
LmNwcApAQCAtMjYsOSArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJW
UkRpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWUkRpc3BsYXlDYXBhYmlsaXRpZXMu
aCIKICNpbmNsdWRlICJWUkV5ZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJWUkZyYW1lRGF0YS5o
IgpAQCAtNDksNiArNTIsNyBAQCBSZWY8VlJEaXNwbGF5PiBWUkRpc3BsYXk6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPFZSUGxhdAogVlJEaXNwbGF5OjpW
UkRpc3BsYXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxWUlBsYXRm
b3JtRGlzcGxheT4mJiBwbGF0Zm9ybURpc3BsYXkpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNv
bnRleHQpCiAgICAgLCBtX2Rpc3BsYXkoV1RGTW92ZShwbGF0Zm9ybURpc3BsYXkpKQorICAgICwg
bV9pc1ByZXNlbnRpbmcoZmFsc2UpCiB7CiAgICAgYXV0byBkaXNwbGF5SW5mbyA9IG1fZGlzcGxh
eS0+Z2V0RGlzcGxheUluZm8oKTsKICAgICBtX2NhcGFiaWxpdGllcyA9IFZSRGlzcGxheUNhcGFi
aWxpdGllczo6Y3JlYXRlKGRpc3BsYXlJbmZvLmNhcGFiaWxpdHlGbGFncygpKTsKQEAgLTY4LDEx
ICs3Miw2IEBAIGJvb2wgVlJEaXNwbGF5Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGlzcGxheS0+Z2V0RGlzcGxheUluZm8oKS5pc0Nvbm5lY3RlZCgpOwogfQogCi1ib29sIFZS
RGlzcGxheTo6aXNQcmVzZW50aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IGNvbnN0IFZSRGlzcGxheUNhcGFiaWxpdGllcyYgVlJEaXNwbGF5OjpjYXBhYmlsaXRpZXMoKSBj
b25zdAogewogICAgIHJldHVybiAqbV9jYXBhYmlsaXRpZXM7CkBAIC0xMzIsMTggKzEzMSw4MCBA
QCB2b2lkIFZSRGlzcGxheTo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUodWludDMyX3QgaWQpCiAgICAg
bV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPmNhbmNlbENhbGxiYWNrKGlkKTsKIH0KIAot
dm9pZCBWUkRpc3BsYXk6OnJlcXVlc3RQcmVzZW50KGNvbnN0IFZlY3RvcjxWUkxheWVySW5pdD4m
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKQordm9pZCBWUkRpc3BsYXk6OnJlamVjdFJlcXVlc3RB
bmRTdG9wUHJlc2VudGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYgcHJvbWlzZSwgRXhjZXB0aW9u
Q29kZSBleGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcHJvbWlz
ZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbkNvZGUsIG1lc3NhZ2UgfSk7CisgICAgaWYg
KG1faXNQcmVzZW50aW5nKQorICAgICAgICBzdG9wUHJlc2VudGluZygpOworfQorCit2b2lkIFZS
RGlzcGxheTo6cmVxdWVzdFByZXNlbnQoY29uc3QgVmVjdG9yPFZSTGF5ZXJJbml0PiYgbGF5ZXJz
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIGRlZmVycmVkUHJvbWlzZSkKK3sKKyAgICBSZWY8RGVm
ZXJyZWRQcm9taXNlPiBwcm9taXNlID0gV1RGTW92ZShkZWZlcnJlZFByb21pc2UpOworCisgICAg
aWYgKCFtX2NhcGFiaWxpdGllcy0+Y2FuUHJlc2VudCgpKSB7CisgICAgICAgIHJlamVjdFJlcXVl
c3RBbmRTdG9wUHJlc2VudGluZyhwcm9taXNlLCBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRl
cmFsKCJWUkRpc3BsYXkgY2Fubm90IHByZXNlbnQiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIWxheWVycy5zaXplKCkgfHwgbGF5ZXJzLnNpemUoKSA+IG1fY2FwYWJpbGl0
aWVzLT5tYXhMYXllcnMoKSkgeworICAgICAgICByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRp
bmcocHJvbWlzZSwgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbChsYXllcnMuc2l6ZSgp
ID8gIlRvbyBtYW55IGxheWVycyIgOiAiTm90IGVub3VnaCBsYXllcnMiKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNQcmVzZW50aW5nICYmICFVc2VyR2VzdHVyZUlu
ZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVz
dEFuZFN0b3BQcmVzZW50aW5nKHByb21pc2UsIEludmFsaWRBY2Nlc3NFcnJvciwgQVNDSUlMaXRl
cmFsKCJNdXN0IHJlcXVlc3QgcHJlc2VudGF0aW9uIGZyb20gYSB1c2VyIGdlc3R1cmUgaGFuZGxl
ci4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChsYXll
cnMuc2l6ZSgpID09IDEpOworICAgIGF1dG8gbGF5ZXIgPSBsYXllcnNbMF07CisKKyAgICBpZiAo
IWxheWVyLnNvdXJjZSkgeworICAgICAgICByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRpbmco
cHJvbWlzZSwgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTGF5ZXIgZG9lcyBub3Qg
Y29udGFpbiBhbnkgc291cmNlIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFsYXllci5zb3VyY2UtPmdldENvbnRleHQoIndlYmdsIiktPmlzV2ViR0woKSkgeworICAgICAg
ICByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRpbmcocHJvbWlzZSwgTm90U3VwcG9ydGVkRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiV2ViVlIgcmVxdWlyZXMgVlJMYXllckluaXQgd2l0aCBXZWJHTCBj
b250ZXh0LiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgobGF5ZXIubGVm
dEJvdW5kcy5zaXplKCkgJiYgbGF5ZXIubGVmdEJvdW5kcy5zaXplKCkgIT0gNCkKKyAgICAgICAg
fHwgKGxheWVyLnJpZ2h0Qm91bmRzLnNpemUoKSAmJiBsYXllci5yaWdodEJvdW5kcy5zaXplKCkg
IT0gNCkpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVzdEFuZFN0b3BQcmVzZW50aW5nKHByb21pc2Us
IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkxheWVyIGJvdW5kcyBtdXN0IGJlIGVp
dGhlciAwIG9yIDQiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lzUHJlc2Vu
dGluZyA9IHRydWU7CisgICAgbV9wcmVzZW50aW5nTGF5ZXIgPSBsYXllcjsKKyAgICBwcm9taXNl
LT5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgVlJEaXNwbGF5OjpzdG9wUHJlc2VudGluZygpCiB7Cisg
ICAgbV9pc1ByZXNlbnRpbmcgPSBmYWxzZTsKKyAgICBtX3ByZXNlbnRpbmdMYXllciA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAotdm9pZCBWUkRpc3BsYXk6OmV4aXRQcmVzZW50KFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYpCit2b2lkIFZSRGlzcGxheTo6ZXhpdFByZXNlbnQoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQogeworICAgIGlmICghbV9pc1ByZXNlbnRpbmcpIHsKKyAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwo
IlZSRGlzcGxheSBpcyBub3QgcHJlc2VudGluZyIpIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc3RvcFByZXNlbnRpbmcoKTsKIH0KIAotY29uc3QgVmVjdG9yPFZSTGF5ZXJJbml0
PiYgVlJEaXNwbGF5OjpnZXRMYXllcnMoKSBjb25zdAorVmVjdG9yPFZSTGF5ZXJJbml0PiBWUkRp
c3BsYXk6OmdldExheWVycygpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGF1dG8gbW9ja0xheWVycyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8VlJMYXllckluaXQ+IHsgfSk7Ci0gICAgcmV0dXJu
IG1vY2tMYXllcnM7CisgICAgVmVjdG9yPFZSTGF5ZXJJbml0PiBsYXllcnM7CisgICAgaWYgKG1f
aXNQcmVzZW50aW5nKSB7CisgICAgICAgIEFTU0VSVChtX3ByZXNlbnRpbmdMYXllcik7CisgICAg
ICAgIGxheWVycy5hcHBlbmQobV9wcmVzZW50aW5nTGF5ZXIudmFsdWUoKSk7CisgICAgfQorICAg
IHJldHVybiBsYXllcnM7CiB9CiAKIHZvaWQgVlJEaXNwbGF5OjpzdWJtaXRGcmFtZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuaAppbmRleCAzNjQ3ZTZkMmEyMGJkOTAx
ZmQxMGQzOGEzZjUwZjY4NGUxYTkxMzU1Li4zNzA5ZTgxYTRiYTBhNGZlYmQ0ZWQ3MjE1OTFiNjA4
NmNhMjk1NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlz
cGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKQEAg
LTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJWUkV5ZS5oIgorI2luY2x1ZGUgIlZSTGF5
ZXJJbml0LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitlbnVtIEV4Y2VwdGlvbkNvZGU7CiBjbGFzcyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjazsKIGNsYXNzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFZSRGlz
cGxheUNhcGFiaWxpdGllczsKQEAgLTQxLDcgKzQzLDYgQEAgY2xhc3MgVlJGcmFtZURhdGE7CiBj
bGFzcyBWUlBsYXRmb3JtRGlzcGxheTsKIGNsYXNzIFZSUG9zZTsKIGNsYXNzIFZSU3RhZ2VQYXJh
bWV0ZXJzOwotc3RydWN0IFZSTGF5ZXJJbml0OwogCiBjbGFzcyBWUkRpc3BsYXkgOiBwdWJsaWMg
UmVmQ291bnRlZDxWUkRpc3BsYXk+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC01Myw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBSZWZDb3VudGVkPFZSRGlzcGxheT46OmRlcmVmOwogCiAgICAgYm9vbCBp
c0Nvbm5lY3RlZCgpIGNvbnN0OwotICAgIGJvb2wgaXNQcmVzZW50aW5nKCkgY29uc3Q7CisgICAg
Ym9vbCBpc1ByZXNlbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUHJlc2VudGluZzsgfTsKIAog
ICAgIGNvbnN0IFZSRGlzcGxheUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPFZSU3RhZ2VQYXJhbWV0ZXJzPiBzdGFnZVBhcmFtZXRlcnMoKSBjb25zdDsKQEAg
LTc5LDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFByZXNlbnQoY29uc3QgVmVj
dG9yPFZSTGF5ZXJJbml0PiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgZXhp
dFByZXNlbnQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBjb25zdCBWZWN0b3I8VlJM
YXllckluaXQ+JiBnZXRMYXllcnMoKSBjb25zdDsKKyAgICBWZWN0b3I8VlJMYXllckluaXQ+IGdl
dExheWVycygpIGNvbnN0OwogCiAgICAgdm9pZCBzdWJtaXRGcmFtZSgpOwogCkBAIC05OCw2ICs5
OSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lk
IHJlamVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYsIEV4
Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSA9IGVtcHR5U3RyaW5nKCkpOworICAg
IHZvaWQgc3RvcFByZXNlbnRpbmcoKTsKKwogICAgIFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+
IG1fZGlzcGxheTsKIAogICAgIFJlZlB0cjxWUkRpc3BsYXlDYXBhYmlsaXRpZXM+IG1fY2FwYWJp
bGl0aWVzOwpAQCAtMTE0LDYgKzExOCw5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZGVwdGhG
YXIgeyAxMDAwMCB9OyAvLyBEZWZhdWx0IHZhbHVlIGZyb20gdGhlIHNwZWNzLgogCiAgICAgUmVm
UHRyPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4gbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXI7CisKKyAgICBib29sIG1faXNQcmVzZW50aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8VlJM
YXllckluaXQ+IG1fcHJlc2VudGluZ0xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBh
YmlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJp
bGl0aWVzLmgKaW5kZXggOGY2NGFiNDE0ZGVjZTY4NTg3ZjNkNzlkYWY4MjFlZGU3MjIzNjI4MS4u
NjQyNDliODQxNDMzZDVhNTBiNjBmNDg3Y2NmZjU0YTA5YmNkZDQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5oCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc09yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnT3JpZW50YXRpb247IH0KICAg
ICBib29sIGhhc0V4dGVybmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBWUkRp
c3BsYXlDYXBhYmlsaXR5RmxhZ0V4dGVybmFsRGlzcGxheTsgfQogICAgIGJvb2wgY2FuUHJlc2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ1ByZXNl
bnQ7IH0KLSAgICB1bnNpZ25lZCBtYXhMYXllcigpIGNvbnN0IHsgcmV0dXJuIGNhblByZXNlbnQo
KSA/IDEgOiAwOyB9CisgICAgdW5zaWduZWQgbWF4TGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gY2Fu
UHJlc2VudCgpID8gMSA6IDA7IH0KIAogcHJpdmF0ZToKICAgICBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXModW5zaWduZWQgY2FwYWJpbGl0eUZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaWRsCmluZGV4IDk3YmVkMGNjZjcz
NWQ1Nzk2ZDM4ZjkxYmQzYWIwYzdmNTg3MjM2OWQuLjBmZTNlOWVlOWQ5NjVkMGQyZThhZTRjZWUy
YmEzZGFmMDBhNTkxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
VlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5pZGwKQEAgLTMxLDUgKzMxLDUgQEAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBoYXNPcmllbnRhdGlvbjsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBoYXNFeHRlcm5hbERpc3BsYXk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gY2FuUHJlc2VudDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBtYXhMYXllcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBtYXhMYXll
cnM7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337881</attachid>
            <date>2018-04-13 04:59:41 -0700</date>
            <delta_ts>2018-04-13 07:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184530-20180413135939.patch</filename>
            <type>text/plain</type>
            <size>9187</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1ZWU3YmFkODY3ODE4
MDBjZWFhYWE0NzRkYzU1YTBjODIwZWY0My4uMWUwODY0MGI0MWVhZGNlMzkxMzJiYmIzODVlZTlj
YmJhNTYwNzlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA0LTEyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl1b
T3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQoKS9leGl0UHJlc2VudCgpIGFuZCBnZXRM
YXllcnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViVlIgYXBwcyBzaG91bGQgaW52b2tlIHJlcXVlc3RQcmVzZW50KCkgdG8gc3RhcnQgcHJlc2Vu
dGluZyBjb250ZW50cyBvZiBhIFZSTGF5ZXJJbml0CisgICAgICAgIChyaWdodCBub3cgYSBIVE1M
IGNhbnZhcyB3aXRoIGEgV2ViR0wgY29udGV4dCkgb24gdGhlIFZSRGlzcGxheS4gVGhpcyByZXF1
ZXN0IG1pZ2h0IGZhaWwgZm9yCisgICAgICAgIGEgdmFyaWV0eSBvZiByZWFzb25zIGFuZCBjYW4g
YmUgZXZlbnR1YWxseSBjYW5jZWxsZWQgd2l0aCBleGl0UHJlc2VudCgpLiBPbmNlIHdlIGFyZQor
ICAgICAgICBwcmVzZW50aW5nIHdlIGNvdWxkIGFjY2VzcyB0aGUgcHJlc2VudGluZyBsYXllcnMg
KHJpZ2h0IG5vdyBqdXN0IG9uZSkgd2l0aCBnZXRMYXllcnMoKS4KKworICAgICAgICBJIHRvb2sg
dGhlIGNoYW5jZSB0byBjb3JyZWN0IGEgbWlzdGFrIGluIHRoZSBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXMgb2JqZWN0IHdoaWNoIGhhcyBhIG1ldGhvZAorICAgICAgICB0aGF0IHNob3VsZCBiZSBjYWxs
ZWQgbWF4TGF5ZXJzIGluc3RlYWQgb2YgbWF4TGF5ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnZyL1ZSRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OlZSRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OnJlamVjdFJlcXVlc3RBbmRTdG9wUHJl
c2VudGluZyk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OnJlcXVlc3RQcmVzZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6c3RvcFByZXNlbnRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6VlJEaXNwbGF5OjpleGl0UHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpWUkRp
c3BsYXk6OmdldExheWVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6Omlz
UHJlc2VudGluZyBjb25zdCk6IERlbGV0ZWQuIEltcGxlbWVudGVkIGluIHRoZSBoZWFkZXIgZmls
ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXlD
YXBhYmlsaXRpZXM6Om1heExheWVycyBjb25zdCk6IFJlbmFtZWQgZnJvbSBtYXhMYXllci4KKyAg
ICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheUNhcGFiaWxpdGllczo6bWF4TGF5ZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlk
bDoKKwogMjAxOC0wNC0xMiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBHU3RyZWFtZXIgYnVpbGRzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAKaW5kZXggZjUyMGU2NmMyMWVh
MWJmYjQxNTk0NGJlNTAwYTA2YWRkZmQ4MmNlZC4uNjVkNzc3YWExZGM0ODhmMWNjZDE1YTU0ZTQx
NzI0NDE2YmU0NzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9W
UkRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5
LmNwcApAQCAtMjYsOSArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJW
UkRpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWUkRpc3BsYXlDYXBhYmlsaXRpZXMu
aCIKICNpbmNsdWRlICJWUkV5ZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJWUkZyYW1lRGF0YS5o
IgpAQCAtNjgsMTEgKzcxLDYgQEAgYm9vbCBWUkRpc3BsYXk6OmlzQ29ubmVjdGVkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kaXNwbGF5LT5nZXREaXNwbGF5SW5mbygpLmlzQ29ubmVjdGVkKCk7CiB9
CiAKLWJvb2wgVlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcoKSBjb25zdAotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQogY29uc3QgVlJEaXNwbGF5Q2FwYWJpbGl0aWVzJiBWUkRpc3BsYXk6OmNhcGFi
aWxpdGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKQEAgLTEzMiwx
OCArMTMwLDc1IEBAIHZvaWQgVlJEaXNwbGF5OjpjYW5jZWxBbmltYXRpb25GcmFtZSh1aW50MzJf
dCBpZCkKICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+Y2FuY2VsQ2FsbGJhY2so
aWQpOwogfQogCi12b2lkIFZSRGlzcGxheTo6cmVxdWVzdFByZXNlbnQoY29uc3QgVmVjdG9yPFZS
TGF5ZXJJbml0PiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpCit2b2lkIFZSRGlzcGxheTo6cmVq
ZWN0UmVxdWVzdEFuZFN0b3BQcmVzZW50aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+JiBwcm9taXNl
LCBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgZXhjZXB0aW9uQ29kZSwgbWVzc2FnZSB9
KTsKKyAgICBpZiAobV9wcmVzZW50aW5nTGF5ZXIpCisgICAgICAgIHN0b3BQcmVzZW50aW5nKCk7
Cit9CisKK3ZvaWQgVlJEaXNwbGF5OjpyZXF1ZXN0UHJlc2VudChjb25zdCBWZWN0b3I8VlJMYXll
ckluaXQ+JiBsYXllcnMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBp
ZiAoIW1fY2FwYWJpbGl0aWVzLT5jYW5QcmVzZW50KCkpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVz
dEFuZFN0b3BQcmVzZW50aW5nKHByb21pc2UsIE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVy
YWwoIlZSRGlzcGxheSBjYW5ub3QgcHJlc2VudCIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghbGF5ZXJzLnNpemUoKSB8fCBsYXllcnMuc2l6ZSgpID4gbV9jYXBhYmlsaXRp
ZXMtPm1heExheWVycygpKSB7CisgICAgICAgIHJlamVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGlu
Zyhwcm9taXNlLCBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKGxheWVycy5zaXplKCkg
PyAiVG9vIG1hbnkgbGF5ZXJzIiA6ICJOb3QgZW5vdWdoIGxheWVycyIpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghbV9wcmVzZW50aW5nTGF5ZXIgJiYgIVVzZXJHZXN0dXJl
SW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAgICAgICByZWplY3RSZXF1
ZXN0QW5kU3RvcFByZXNlbnRpbmcocHJvbWlzZSwgSW52YWxpZEFjY2Vzc0Vycm9yLCBBU0NJSUxp
dGVyYWwoIk11c3QgcmVxdWVzdCBwcmVzZW50YXRpb24gZnJvbSBhIHVzZXIgZ2VzdHVyZSBoYW5k
bGVyLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGxh
eWVycy5zaXplKCkgPT0gMSk7CisgICAgYXV0byBsYXllciA9IGxheWVyc1swXTsKKworICAgIGlm
ICghbGF5ZXIuc291cmNlKSB7CisgICAgICAgIHJlamVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGlu
Zyhwcm9taXNlLCBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJMYXllciBkb2VzIG5v
dCBjb250YWluIGFueSBzb3VyY2UiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvKiBjYW52YXNDb250ZXh0ID0gbGF5ZXIuc291cmNlLT5nZXRDb250ZXh0KCJ3ZWJnbCIpOwor
ICAgIGlmICghY2FudmFzQ29udGV4dCB8fCAhY2FudmFzQ29udGV4dC0+aXNXZWJHTCgpKSB7Cisg
ICAgICAgIHJlamVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyhwcm9taXNlLCBOb3RTdXBwb3J0
ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJXZWJWUiByZXF1aXJlcyBWUkxheWVySW5pdCB3aXRoIFdl
YkdMIGNvbnRleHQuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKChsYXll
ci5sZWZ0Qm91bmRzLnNpemUoKSAmJiBsYXllci5sZWZ0Qm91bmRzLnNpemUoKSAhPSA0KQorICAg
ICAgICB8fCAobGF5ZXIucmlnaHRCb3VuZHMuc2l6ZSgpICYmIGxheWVyLnJpZ2h0Qm91bmRzLnNp
emUoKSAhPSA0KSkgeworICAgICAgICByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRpbmcocHJv
bWlzZSwgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTGF5ZXIgYm91bmRzIG11c3Qg
YmUgZWl0aGVyIDAgb3IgNCIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcHJl
c2VudGluZ0xheWVyID0gbGF5ZXI7CisgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworfQorCit2b2lk
IFZSRGlzcGxheTo6c3RvcFByZXNlbnRpbmcoKQogeworICAgIG1fcHJlc2VudGluZ0xheWVyID0g
c3RkOjpudWxsb3B0OwogfQogCi12b2lkIFZSRGlzcGxheTo6ZXhpdFByZXNlbnQoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJikKK3ZvaWQgVlJEaXNwbGF5OjpleGl0UHJlc2VudChSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiB7CisgICAgaWYgKCFtX3ByZXNlbnRpbmdMYXllcikgeworICAg
ICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiVlJEaXNwbGF5IGlzIG5vdCBwcmVzZW50aW5nIikgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzdG9wUHJlc2VudGluZygpOwogfQogCi1jb25zdCBWZWN0b3I8VlJM
YXllckluaXQ+JiBWUkRpc3BsYXk6OmdldExheWVycygpIGNvbnN0CitWZWN0b3I8VlJMYXllcklu
aXQ+IFZSRGlzcGxheTo6Z2V0TGF5ZXJzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgYXV0byBtb2Nr
TGF5ZXJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxWUkxheWVySW5pdD4geyB9KTsKLSAg
ICByZXR1cm4gbW9ja0xheWVyczsKKyAgICBWZWN0b3I8VlJMYXllckluaXQ+IGxheWVyczsKKyAg
ICBpZiAobV9wcmVzZW50aW5nTGF5ZXIpCisgICAgICAgIGxheWVycy5hcHBlbmQobV9wcmVzZW50
aW5nTGF5ZXIudmFsdWUoKSk7CisgICAgcmV0dXJuIGxheWVyczsKIH0KIAogdm9pZCBWUkRpc3Bs
YXk6OnN1Ym1pdEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5o
CmluZGV4IDM2NDdlNmQyYTIwYmQ5MDFmZDEwZDM4YTNmNTBmNjg0ZTFhOTEzNTUuLmEzYjFlNGQ4
ZjM2NWQzZjFmN2YyMjgyMDFkNWFiOTVkZWQ5OTJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ2ci9WUkRpc3BsYXkuaApAQCAtMjksMTAgKzI5LDEyIEBACiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlZS
RXllLmgiCisjaW5jbHVkZSAiVlJMYXllckluaXQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gRXhjZXB0aW9uQ29kZTsKIGNsYXNz
IFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOwogY2xhc3MgU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyOwogY2xhc3MgVlJEaXNwbGF5Q2FwYWJpbGl0aWVzOwpAQCAtNDEsNyArNDMsNiBA
QCBjbGFzcyBWUkZyYW1lRGF0YTsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5OwogY2xhc3MgVlJQ
b3NlOwogY2xhc3MgVlJTdGFnZVBhcmFtZXRlcnM7Ci1zdHJ1Y3QgVlJMYXllckluaXQ7CiAKIGNs
YXNzIFZSRGlzcGxheSA6IHB1YmxpYyBSZWZDb3VudGVkPFZSRGlzcGxheT4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoK
QEAgLTUzLDcgKzU0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VlJEaXNwbGF5
Pjo6ZGVyZWY7CiAKICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1By
ZXNlbnRpbmcoKSBjb25zdDsKKyAgICBib29sIGlzUHJlc2VudGluZygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9wcmVzZW50aW5nTGF5ZXI7IH07CiAKICAgICBjb25zdCBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0OwogICAgIFJlZlB0cjxWUlN0YWdlUGFyYW1ldGVycz4g
c3RhZ2VQYXJhbWV0ZXJzKCkgY29uc3Q7CkBAIC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlcXVlc3RQcmVzZW50KGNvbnN0IFZlY3RvcjxWUkxheWVySW5pdD4mLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIGV4aXRQcmVzZW50KFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCi0gICAgY29uc3QgVmVjdG9yPFZSTGF5ZXJJbml0PiYgZ2V0TGF5ZXJzKCkgY29uc3Q7
CisgICAgVmVjdG9yPFZSTGF5ZXJJbml0PiBnZXRMYXllcnMoKSBjb25zdDsKIAogICAgIHZvaWQg
c3VibWl0RnJhbWUoKTsKIApAQCAtOTgsNiArOTksOSBAQCBwcml2YXRlOgogICAgIGJvb2wgY2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c3RvcCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRp
bmcoUmVmPERlZmVycmVkUHJvbWlzZT4mLCBFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UgPSBlbXB0eVN0cmluZygpKTsKKyAgICB2b2lkIHN0b3BQcmVzZW50aW5nKCk7CisKICAg
ICBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiBtX2Rpc3BsYXk7CiAKICAgICBSZWZQdHI8VlJE
aXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKQEAgLTExNCw2ICsxMTgsOCBAQCBw
cml2YXRlOgogICAgIGRvdWJsZSBtX2RlcHRoRmFyIHsgMTAwMDAgfTsgLy8gRGVmYXVsdCB2YWx1
ZSBmcm9tIHRoZSBzcGVjcy4KIAogICAgIFJlZlB0cjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXI+IG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOworCisgICAgc3RkOjpvcHRpb25hbDxW
UkxheWVySW5pdD4gbV9wcmVzZW50aW5nTGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNh
cGFiaWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBh
YmlsaXRpZXMuaAppbmRleCA4ZjY0YWI0MTRkZWNlNjg1ODdmM2Q3OWRhZjgyMWVkZTcyMjM2Mjgx
Li42NDI0OWI4NDE0MzNkNWE1MGI2MGY0ODdjY2ZmNTRhMDliY2RkNDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzICYgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdPcmllbnRhdGlvbjsgfQog
ICAgIGJvb2wgaGFzRXh0ZXJuYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZS
RGlzcGxheUNhcGFiaWxpdHlGbGFnRXh0ZXJuYWxEaXNwbGF5OyB9CiAgICAgYm9vbCBjYW5QcmVz
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnUHJl
c2VudDsgfQotICAgIHVuc2lnbmVkIG1heExheWVyKCkgY29uc3QgeyByZXR1cm4gY2FuUHJlc2Vu
dCgpID8gMSA6IDA7IH0KKyAgICB1bnNpZ25lZCBtYXhMYXllcnMoKSBjb25zdCB7IHJldHVybiBj
YW5QcmVzZW50KCkgPyAxIDogMDsgfQogCiBwcml2YXRlOgogICAgIFZSRGlzcGxheUNhcGFiaWxp
dGllcyh1bnNpZ25lZCBjYXBhYmlsaXR5RmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5pZGwKaW5kZXggOTdiZWQwY2Nm
NzM1ZDU3OTZkMzhmOTFiZDNhYjBjN2Y1ODcyMzY5ZC4uMGZlM2U5ZWU5ZDk2NWQwZDJlOGFlNGNl
ZTJiYTNkYWYwMGE1OTE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2
ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlkbApAQCAtMzEsNSArMzEsNSBAQAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhhc09yaWVudGF0aW9uOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGhhc0V4dGVybmFsRGlzcGxheTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBjYW5QcmVzZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIG1heExheWVyOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG1heExh
eWVyczsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337885</attachid>
            <date>2018-04-13 07:16:26 -0700</date>
            <delta_ts>2018-04-13 07:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184530-20180413161624.patch</filename>
            <type>text/plain</type>
            <size>9031</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1ZWU3YmFkODY3ODE4
MDBjZWFhYWE0NzRkYzU1YTBjODIwZWY0My4uOWIxNzc1Yzc2YjdjMjBhMjc5NTUxYmM4NTI0MWY3
NTI3NWExNzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA0LTEzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJWUl1b
T3BlblZSXSBJbXBsZW1lbnQgcmVxdWVzdFByZXNlbnQoKS9leGl0UHJlc2VudCgpIGFuZCBnZXRM
YXllcnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAg
V2ViVlIgYXBwcyBzaG91bGQgaW52b2tlIHJlcXVlc3RQcmVzZW50KCkgdG8gc3RhcnQgcHJlc2Vu
dGluZyBjb250ZW50cyBvZiBhIFZSTGF5ZXJJbml0CisgICAgICAgIChyaWdodCBub3cgYSBIVE1M
IGNhbnZhcyB3aXRoIGEgV2ViR0wgY29udGV4dCkgb24gdGhlIFZSRGlzcGxheS4gVGhpcyByZXF1
ZXN0IG1pZ2h0IGZhaWwgZm9yCisgICAgICAgIGEgdmFyaWV0eSBvZiByZWFzb25zIGFuZCBjYW4g
YmUgZXZlbnR1YWxseSBjYW5jZWxsZWQgd2l0aCBleGl0UHJlc2VudCgpLiBPbmNlIHdlIGFyZQor
ICAgICAgICBwcmVzZW50aW5nIHdlIGNvdWxkIGFjY2VzcyB0aGUgcHJlc2VudGluZyBsYXllcnMg
KHJpZ2h0IG5vdyBqdXN0IG9uZSkgd2l0aCBnZXRMYXllcnMoKS4KKworICAgICAgICBOb3RlIHRo
YXQgd2UgYXJlIG5vdCBwcmVzZW50aW5nIGFueXRoaW5nIHRvIHRoZSBITUQgeWV0LCB0aGF0IHdp
bGwgYmUgZG9uZSBsYXRlciBpbiBhIGZvbGxvdworICAgICAgICB1cCBwYXRjaC4KKworICAgICAg
ICBJIHRvb2sgdGhlIGNoYW5jZSB0byBjb3JyZWN0IGEgbWlzdGFrIGluIHRoZSBWUkRpc3BsYXlD
YXBhYmlsaXRpZXMgb2JqZWN0IHdoaWNoIGhhcyBhIG1ldGhvZAorICAgICAgICB0aGF0IHNob3Vs
ZCBiZSBjYWxsZWQgbWF4TGF5ZXJzIGluc3RlYWQgb2YgbWF4TGF5ZXIuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6
OnJlcXVlc3RQcmVzZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZSRGlzcGxheTo6c3RvcFByZXNl
bnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5OjpleGl0UHJlc2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWUkRpc3BsYXk6OmdldExheWVycyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpWUkRpc3BsYXk6OmlzUHJlc2VudGluZyBjb25zdCk6IERlbGV0ZWQuIEltcGxlbWVudGVk
IGluIHRoZSBoZWFkZXIgZmlsZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5o
OgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5Ojppc1ByZXNlbnRpbmcgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpWUkRpc3BsYXlDYXBhYmlsaXRpZXM6Om1heExheWVycyBjb25zdCk6IFJlbmFtZWQg
ZnJvbSBtYXhMYXllcigpLgorICAgICAgICAoV2ViQ29yZTo6VlJEaXNwbGF5Q2FwYWJpbGl0aWVz
OjptYXhMYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9WUkRp
c3BsYXlDYXBhYmlsaXRpZXMuaWRsOgorCiAyMDE4LTA0LTEyICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IEdT
dHJlYW1lciBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
VlJEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5LmNw
cAppbmRleCBmNTIwZTY2YzIxZWExYmZiNDE1OTQ0YmU1MDBhMDZhZGRmZDgyY2VkLi4xMjdjYzVj
ODM4MjE0YTI4MmQzMDc5N2E3NmI1MThjZDkyOTE5MmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkRpc3BsYXkuY3BwCkBAIC0yNiw5ICsyNiwxMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlZSRGlzcGxheS5oIgogCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRPTUV4Y2VwdGlv
bi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZS
RGlzcGxheUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIlZSRXllUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlZSRnJhbWVEYXRhLmgiCkBAIC02OCwxMSArNzEsNiBAQCBib29sIFZSRGlzcGxheTo6
aXNDb25uZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2Rpc3BsYXktPmdldERpc3BsYXlJbmZv
KCkuaXNDb25uZWN0ZWQoKTsKIH0KIAotYm9vbCBWUkRpc3BsYXk6OmlzUHJlc2VudGluZygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBjb25zdCBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXMmIFZSRGlzcGxheTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gKm1fY2Fw
YWJpbGl0aWVzOwpAQCAtMTMyLDE4ICsxMzAsNzQgQEAgdm9pZCBWUkRpc3BsYXk6OmNhbmNlbEFu
aW1hdGlvbkZyYW1lKHVpbnQzMl90IGlkKQogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLT5jYW5jZWxDYWxsYmFjayhpZCk7CiB9CiAKLXZvaWQgVlJEaXNwbGF5OjpyZXF1ZXN0UHJl
c2VudChjb25zdCBWZWN0b3I8VlJMYXllckluaXQ+JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikK
K3ZvaWQgVlJEaXNwbGF5OjpyZXF1ZXN0UHJlc2VudChjb25zdCBWZWN0b3I8VlJMYXllckluaXQ+
JiBsYXllcnMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIHJl
amVjdFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyA9IFt0aGlzLCAmcHJvbWlzZV0gKEV4Y2VwdGlv
bkNvZGUgZXhjZXB0aW9uQ29kZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpIHsKKyAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbkNvZGUsIG1lc3NhZ2UgfSk7CisgICAg
ICAgIGlmIChtX3ByZXNlbnRpbmdMYXllcikKKyAgICAgICAgICAgIHN0b3BQcmVzZW50aW5nKCk7
CisgICAgfTsKKworICAgIGlmICghbV9jYXBhYmlsaXRpZXMtPmNhblByZXNlbnQoKSkgeworICAg
ICAgICByZWplY3RSZXF1ZXN0QW5kU3RvcFByZXNlbnRpbmcoTm90U3VwcG9ydGVkRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiVlJEaXNwbGF5IGNhbm5vdCBwcmVzZW50IikpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFsYXllcnMuc2l6ZSgpIHx8IGxheWVycy5zaXplKCkgPiBtX2Nh
cGFiaWxpdGllcy0+bWF4TGF5ZXJzKCkpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVzdEFuZFN0b3BQ
cmVzZW50aW5nKEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwobGF5ZXJzLnNpemUoKSA/
ICJUb28gbWFueSBsYXllcnMiIDogIk5vdCBlbm91Z2ggbGF5ZXJzIikpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCFtX3ByZXNlbnRpbmdMYXllciAmJiAhVXNlckdlc3R1cmVJ
bmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIHJlamVjdFJlcXVl
c3RBbmRTdG9wUHJlc2VudGluZyhJbnZhbGlkQWNjZXNzRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTXVz
dCByZXF1ZXN0IHByZXNlbnRhdGlvbiBmcm9tIGEgdXNlciBnZXN0dXJlIGhhbmRsZXIuIikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQobGF5ZXJzLnNpemUo
KSA9PSAxKTsKKyAgICBhdXRvIGxheWVyID0gbGF5ZXJzWzBdOworCisgICAgaWYgKCFsYXllci5z
b3VyY2UpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVzdEFuZFN0b3BQcmVzZW50aW5nKEludmFsaWRT
dGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkxheWVyIGRvZXMgbm90IGNvbnRhaW4gYW55IHNvdXJj
ZSIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGNhbnZhc0NvbnRleHQg
PSBsYXllci5zb3VyY2UtPmdldENvbnRleHQoIndlYmdsIik7CisgICAgaWYgKCFjYW52YXNDb250
ZXh0IHx8ICFjYW52YXNDb250ZXh0LT5pc1dlYkdMKCkpIHsKKyAgICAgICAgcmVqZWN0UmVxdWVz
dEFuZFN0b3BQcmVzZW50aW5nKE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIldlYlZS
IHJlcXVpcmVzIFZSTGF5ZXJJbml0IHdpdGggV2ViR0wgY29udGV4dC4iKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoKGxheWVyLmxlZnRCb3VuZHMuc2l6ZSgpICYmIGxheWVy
LmxlZnRCb3VuZHMuc2l6ZSgpICE9IDQpCisgICAgICAgIHx8IChsYXllci5yaWdodEJvdW5kcy5z
aXplKCkgJiYgbGF5ZXIucmlnaHRCb3VuZHMuc2l6ZSgpICE9IDQpKSB7CisgICAgICAgIHJlamVj
dFJlcXVlc3RBbmRTdG9wUHJlc2VudGluZyhJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJMYXllciBib3VuZHMgbXVzdCBiZSBlaXRoZXIgMCBvciA0IikpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9wcmVzZW50aW5nTGF5ZXIgPSBsYXllcjsKKyAgICBwcm9taXNlLT5y
ZXNvbHZlKCk7Cit9CisKK3ZvaWQgVlJEaXNwbGF5OjpzdG9wUHJlc2VudGluZygpCiB7CisgICAg
bV9wcmVzZW50aW5nTGF5ZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgVlJEaXNwbGF5Ojpl
eGl0UHJlc2VudChSZWY8RGVmZXJyZWRQcm9taXNlPiYmKQordm9pZCBWUkRpc3BsYXk6OmV4aXRQ
cmVzZW50KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKKyAgICBpZiAoIW1fcHJl
c2VudGluZ0xheWVyKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJWUkRpc3BsYXkgaXMgbm90IHByZXNlbnRpbmci
KSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0b3BQcmVzZW50aW5nKCk7CiB9
CiAKLWNvbnN0IFZlY3RvcjxWUkxheWVySW5pdD4mIFZSRGlzcGxheTo6Z2V0TGF5ZXJzKCkgY29u
c3QKK1ZlY3RvcjxWUkxheWVySW5pdD4gVlJEaXNwbGF5OjpnZXRMYXllcnMoKSBjb25zdAogewot
ICAgIHN0YXRpYyBhdXRvIG1vY2tMYXllcnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFZS
TGF5ZXJJbml0PiB7IH0pOwotICAgIHJldHVybiBtb2NrTGF5ZXJzOworICAgIFZlY3RvcjxWUkxh
eWVySW5pdD4gbGF5ZXJzOworICAgIGlmIChtX3ByZXNlbnRpbmdMYXllcikKKyAgICAgICAgbGF5
ZXJzLmFwcGVuZChtX3ByZXNlbnRpbmdMYXllci52YWx1ZSgpKTsKKyAgICByZXR1cm4gbGF5ZXJz
OwogfQogCiB2b2lkIFZSRGlzcGxheTo6c3VibWl0RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VidnIvVlJEaXNwbGF5LmgKaW5kZXggMzY0N2U2ZDJhMjBiZDkwMWZkMTBkMzhhM2Y1MGY2
ODRlMWE5MTM1NS4uNGE5OWM5NmE5Njc5MzM5ZTJiYjEyZGU2ZjZmNWE2YzI5NzY3N2Q2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheS5oCkBAIC0yOSwxMCArMjksMTIg
QEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiVlJFeWUuaCIKKyNpbmNsdWRlICJWUkxheWVySW5pdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBF
eGNlcHRpb25Db2RlOwogY2xhc3MgUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s7CiBjbGFz
cyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI7CiBjbGFzcyBWUkRpc3BsYXlDYXBhYmlsaXRp
ZXM7CkBAIC00MSw3ICs0Myw2IEBAIGNsYXNzIFZSRnJhbWVEYXRhOwogY2xhc3MgVlJQbGF0Zm9y
bURpc3BsYXk7CiBjbGFzcyBWUlBvc2U7CiBjbGFzcyBWUlN0YWdlUGFyYW1ldGVyczsKLXN0cnVj
dCBWUkxheWVySW5pdDsKIAogY2xhc3MgVlJEaXNwbGF5IDogcHVibGljIFJlZkNvdW50ZWQ8VlJE
aXNwbGF5PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QgewogcHVibGljOgpAQCAtNTMsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
UmVmQ291bnRlZDxWUkRpc3BsYXk+OjpkZXJlZjsKIAogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBj
b25zdDsKLSAgICBib29sIGlzUHJlc2VudGluZygpIGNvbnN0OworICAgIGJvb2wgaXNQcmVzZW50
aW5nKCkgY29uc3QgeyByZXR1cm4gISFtX3ByZXNlbnRpbmdMYXllcjsgfTsKIAogICAgIGNvbnN0
IFZSRGlzcGxheUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAgICAgUmVmUHRy
PFZSU3RhZ2VQYXJhbWV0ZXJzPiBzdGFnZVBhcmFtZXRlcnMoKSBjb25zdDsKQEAgLTc5LDcgKzgw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFByZXNlbnQoY29uc3QgVmVjdG9yPFZSTGF5
ZXJJbml0PiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgZXhpdFByZXNlbnQo
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBjb25zdCBWZWN0b3I8VlJMYXllckluaXQ+
JiBnZXRMYXllcnMoKSBjb25zdDsKKyAgICBWZWN0b3I8VlJMYXllckluaXQ+IGdldExheWVycygp
IGNvbnN0OwogCiAgICAgdm9pZCBzdWJtaXRGcmFtZSgpOwogCkBAIC05OCw2ICs5OSw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHN0b3BQcmVz
ZW50aW5nKCk7CisKICAgICBXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5PiBtX2Rpc3BsYXk7CiAK
ICAgICBSZWZQdHI8VlJEaXNwbGF5Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKQEAgLTEx
NCw2ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2RlcHRoRmFyIHsgMTAwMDAgfTsg
Ly8gRGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBzcGVjcy4KIAogICAgIFJlZlB0cjxTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXI+IG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOworCisgICAg
c3RkOjpvcHRpb25hbDxWUkxheWVySW5pdD4gbV9wcmVzZW50aW5nTGF5ZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2
ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaAppbmRleCA4ZjY0YWI0MTRkZWNlNjg1ODdmM2Q3OWRh
ZjgyMWVkZTcyMjM2MjgxLi42NDI0OWI4NDE0MzNkNWE1MGI2MGY0ODdjY2ZmNTRhMDliY2RkNDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFi
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2Fw
YWJpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdP
cmllbnRhdGlvbjsgfQogICAgIGJvb2wgaGFzRXh0ZXJuYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnRXh0ZXJuYWxEaXNwbGF5OyB9CiAg
ICAgYm9vbCBjYW5QcmVzZW50KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNh
cGFiaWxpdHlGbGFnUHJlc2VudDsgfQotICAgIHVuc2lnbmVkIG1heExheWVyKCkgY29uc3QgeyBy
ZXR1cm4gY2FuUHJlc2VudCgpID8gMSA6IDA7IH0KKyAgICB1bnNpZ25lZCBtYXhMYXllcnMoKSBj
b25zdCB7IHJldHVybiBjYW5QcmVzZW50KCkgPyAxIDogMDsgfQogCiBwcml2YXRlOgogICAgIFZS
RGlzcGxheUNhcGFiaWxpdGllcyh1bnNpZ25lZCBjYXBhYmlsaXR5RmxhZ3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNhcGFiaWxpdGllcy5pZGwK
aW5kZXggOTdiZWQwY2NmNzM1ZDU3OTZkMzhmOTFiZDNhYjBjN2Y1ODcyMzY5ZC4uMGZlM2U5ZWU5
ZDk2NWQwZDJlOGFlNGNlZTJiYTNkYWYwMGE1OTE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmlkbApAQCAtMzEsNSAr
MzEsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhhc09yaWVudGF0aW9uOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhhc0V4dGVybmFsRGlzcGxheTsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5QcmVzZW50OwotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIG1heExheWVyOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIG1heExheWVyczsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>