<?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>185245</bug_id>
          
          <creation_ts>2018-05-03 02:51:02 -0700</creation_ts>
          <short_desc>[EME][GStreamer] Add a handler for GStreamer protection event</short_desc>
          <delta_ts>2018-05-10 23:16:48 -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>Media</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>
          
          <blocked>185535</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yacine Bandou">bandou.yacine</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>olivier.blin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1420071</commentid>
    <comment_count>0</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-03 02:51:02 -0700</bug_when>
    <thetext>Qtdemux send the protection event when encountered a new PSSH box (encrypted content).
    
The Decryptor is moved from AppendPipeline to PlaybackPipeline (see https://bugs.webkit.org/show_bug.cgi?id=181855),
thus the protection event is no longer handled because the Decryptor is not in the same pipeline as qtdemux.
    
AppendPipeline: httpsrc--&gt;qtdemux--&gt;appsink
PlaybackPipeline: appsrc--&gt;parser--&gt; decryptor--&gt;decoder--&gt;sink
    
In order to handle the event we should dispatch the event from the AppendPipeline to the application.
For that we need this patch in GStreamer (gst-plugins-base) https://bugzilla.gnome.org/show_bug.cgi?id=785531</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420081</commentid>
    <comment_count>1</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-05-03 03:53:21 -0700</bug_when>
    <thetext>IMHO, as I already said in the GStreamer bug, we can live perfectly without that patch by attaching a probe to the sink pad of the appsink in the append pipeline. I don&apos;t know if or when that GStreamer patch will land so I&apos;d go for the probe solution in WK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420103</commentid>
    <comment_count>2</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-03 06:33:27 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #1)
&gt; IMHO, as I already said in the GStreamer bug, we can live perfectly without
&gt; that patch by attaching a probe to the sink pad of the appsink in the append
&gt; pipeline. I don&apos;t know if or when that GStreamer patch will land so I&apos;d go
&gt; for the probe solution in WK.

I agree, I&apos;ll see how I&apos;ll change my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420690</commentid>
    <comment_count>3</comment_count>
      <attachid>339550</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-04 09:20:36 -0700</bug_when>
    <thetext>Created attachment 339550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421223</commentid>
    <comment_count>4</comment_count>
      <attachid>339550</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-05-07 01:11:15 -0700</bug_when>
    <thetext>Comment on attachment 339550
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1288
&gt; +    const gchar* eventKeySystemId = nullptr;
&gt; +    GstBuffer* data = nullptr;
&gt; +    Vector&lt;uint8_t&gt; concatenatedInitDataChunks;
&gt; +
&gt;      if (m_handledProtectionEvents.contains(GST_EVENT_SEQNUM(event))) {
&gt;          GST_DEBUG_OBJECT(pipeline(), &quot;event %u already handled&quot;, GST_EVENT_SEQNUM(event));
&gt; -        m_handledProtectionEvents.remove(GST_EVENT_SEQNUM(event));
&gt; -        if (m_needToResendCredentials) {
&gt; -            GST_DEBUG_OBJECT(pipeline(), &quot;resending credentials&quot;);
&gt; -            attemptToDecryptWithLocalInstance();
&gt; -        }
&gt;          return;
&gt;      }
&gt;  
&gt; -    const gchar* eventKeySystemId = nullptr;
&gt; -    gst_event_parse_protection(event, &amp;eventKeySystemId, nullptr, nullptr);
&gt; -    GST_WARNING(&quot;FIXME: unhandled protection event for %s&quot;, eventKeySystemId);
&gt; -    ASSERT_NOT_REACHED();
&gt; +    gst_event_parse_protection(event, &amp;eventKeySystemId, &amp;data, nullptr);
&gt; +    if (m_cdmInstance &amp;&amp; strcmp(GStreamerEMEUtilities::keySystemToUuid(m_cdmInstance-&gt;keySystem()), eventKeySystemId))
&gt; +        return;
&gt; +
&gt; +    GstMapInfo mapInfo;
&gt; +    if (!gst_buffer_map(data, &amp;mapInfo, GST_MAP_READ)) {
&gt; +        GST_WARNING(&quot;cannot map %s protection data&quot;, eventKeySystemId);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    GST_DEBUG(&quot;scheduling Protection event for %s with init data size of %u&quot;, eventKeySystemId, mapInfo.size);
&gt; +    GST_MEMDUMP(&quot;init datas&quot;, mapInfo.data, mapInfo.size);
&gt; +
&gt; +    concatenatedInitDataChunks.append(mapInfo.data, mapInfo.size);
&gt; +    m_handledProtectionEvents.add(GST_EVENT_SEQNUM(event));
&gt; +    gst_buffer_unmap(data, &amp;mapInfo);
&gt; +
&gt; +    RunLoop::main().dispatch([this, eventKeySystemId, initData = WTFMove(concatenatedInitDataChunks)] {
&gt; +        GST_DEBUG(&quot;scheduling OnEncrypted event for %s with concatenated init datas size of %&quot; G_GSIZE_FORMAT, eventKeySystemId, initData.size());
&gt; +        GST_MEMDUMP(&quot;init datas&quot;, initData.data(), initData.size());
&gt; +        this-&gt;m_player-&gt;initializationDataEncountered(ASCIILiteral(&quot;cenc&quot;), ArrayBuffer::create(initData.data(), initData.size()));
&gt; +    });

This is a nice piece of code though it should belong in other patch.

You will need to get rid of some variables that are not needed anymore. I&apos;d recommend you base your code in https://github.com/WebPlatformForEmbedded/WPEWebKit/blob/wpe-20170728/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp#L1441 and since that code is mine, authorship should be at least shared with me. We&apos;ll find somebody else to do the formal r+.

So summing up, please move this out of this patch and since this patch should depend on that new one, add the dependency.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:1100
&gt; +        if (appendPipeline &amp;&amp; appendPipeline-&gt;playerPrivate())
&gt; +            appendPipeline-&gt;playerPrivate()-&gt;handleProtectionEvent(event);
&gt; +        break;

I think it is better to return GST_PAD_PROBE_DROP since the protection event should die here and be moved to the PlaybackPipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421238</commentid>
    <comment_count>5</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-07 02:18:16 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #4)
&gt; Comment on attachment 339550 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=339550&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1288
&gt; &gt; +    const gchar* eventKeySystemId = nullptr;
&gt; &gt; +    GstBuffer* data = nullptr;

&gt; &gt; +        GST_DEBUG(&quot;scheduling OnEncrypted event for %s with concatenated init datas size of %&quot; G_GSIZE_FORMAT, eventKeySystemId, initData.size());
&gt; &gt; +        GST_MEMDUMP(&quot;init datas&quot;, initData.data(), initData.size());
&gt; &gt; +        this-&gt;m_player-&gt;initializationDataEncountered(ASCIILiteral(&quot;cenc&quot;), ArrayBuffer::create(initData.data(), initData.size()));
&gt; &gt; +    });
&gt; 
&gt; This is a nice piece of code though it should belong in other patch.

I agree, I&apos;ll do it

&gt; 
&gt; You will need to get rid of some variables that are not needed anymore. I&apos;d
&gt; recommend you base your code in
&gt; https://github.com/WebPlatformForEmbedded/WPEWebKit/blob/wpe-20170728/Source/
&gt; WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.
&gt; cpp#L1441 and since that code is mine, authorship should be at least shared
&gt; with me. We&apos;ll find somebody else to do the formal r+.
&gt; 
&gt; So summing up, please move this out of this patch and since this patch
&gt; should depend on that new one, add the dependency.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:1100
&gt; &gt; +        if (appendPipeline &amp;&amp; appendPipeline-&gt;playerPrivate())
&gt; &gt; +            appendPipeline-&gt;playerPrivate()-&gt;handleProtectionEvent(event);
&gt; &gt; +        break;
&gt; 
&gt; I think it is better to return GST_PAD_PROBE_DROP since the protection event
&gt; should die here and be moved to the PlaybackPipeline.

Ok it&apos;s noted.
I hesitated to put GST_PAD_PROBE_OK or GST_PAD_PROBE_DROP for the protection event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421255</commentid>
    <comment_count>6</comment_count>
      <attachid>339713</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-07 05:59:43 -0700</bug_when>
    <thetext>Created attachment 339713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421681</commentid>
    <comment_count>7</comment_count>
      <attachid>339713</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-05-08 04:44:47 -0700</bug_when>
    <thetext>Comment on attachment 339713
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-1270
&gt; -    ASSERT_NOT_REACHED();

Please, leave this outside the patch. If you need this out of here, create a new bug and set a dependency to this one.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:1093
&gt; +    GST_DEBUG(&quot;Handling event %s on appendPipeline appsinkPad&quot;, GST_EVENT_TYPE_NAME(event));

appendPipeline -&gt; append pipeline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421683</commentid>
    <comment_count>8</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-05-08 04:49:42 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #7)
&gt; Comment on attachment 339713 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=339713&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-1270
&gt; &gt; -    ASSERT_NOT_REACHED();

Just did it for you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421685</commentid>
    <comment_count>9</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-05-08 04:50:30 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #8)
&gt; Just did it for you

Well, no, I just added the dependency on the tests because they also need this if I am not mistaken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421701</commentid>
    <comment_count>10</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-08 06:18:56 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #7)
&gt; Comment on attachment 339713 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=339713&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-1270
&gt; &gt; -    ASSERT_NOT_REACHED();
&gt; 
&gt; Please, leave this outside the patch. If you need this out of here, create a
&gt; new bug and set a dependency to this one.

The most WPT tests will crash without remove this ASSERT, because now we reach this code with this patch.

I do it in the bug 185420.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421705</commentid>
    <comment_count>11</comment_count>
      <attachid>339813</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-08 07:04:33 -0700</bug_when>
    <thetext>Created attachment 339813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422206</commentid>
    <comment_count>12</comment_count>
      <attachid>339948</attachid>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-09 03:21:37 -0700</bug_when>
    <thetext>Created attachment 339948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422674</commentid>
    <comment_count>13</comment_count>
      <attachid>339813</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-10 00:41:41 -0700</bug_when>
    <thetext>Comment on attachment 339813
Patch

Clearing flags on attachment: 339813

Committed r231636: &lt;https://trac.webkit.org/changeset/231636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422675</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-10 00:41:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422676</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-10 00:42:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/40121157&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422891</commentid>
    <comment_count>16</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-10 14:55:53 -0700</bug_when>
    <thetext>I noted that you changed the patch. You didn&apos;t land the last pushed patch and you landed the patch which has dependency with this bug 185420.

That provoked the crashes of encrypted-media layoutTests in debug mode as i commented in c10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422976</commentid>
    <comment_count>17</comment_count>
    <who name="Yacine Bandou">bandou.yacine</who>
    <bug_when>2018-05-10 18:23:13 -0700</bug_when>
    <thetext>(In reply to Yacine Bandou from comment #16)
&gt; I noted that you changed the patch. You didn&apos;t land the last pushed patch
&gt; and you landed the patch which has dependency with this bug 185420.
&gt; 
&gt; That provoked the crashes of encrypted-media layoutTests in debug mode as i
&gt; commented in c10.


Now, to fix these crashes, we should take this patch 185535.

I think there was a misunderstanding, now I implemented the patch that planned in 185420 in an other one 185535, 
in order to avoid all other misunderstanding.


For more detail, here is the history of this patch: 

1. I pushed a patch that adds a probe for GStreamer protection event and adds a handler for this event in MediaPlayerPrivate (Patch 1)

2. Calvaris asked me to split the code in two parts : 
   - A probe to catch the GStreamer protection event
   - A handler of  the event in MediaPlayerPrivate

3. I removed the handler of the event in MediaPlayerPrivate from this patch1  and I replaced it by removing the ASSERT_NOT_REACHED 
   because it is needed in debug mode. (patch 2)
 
4. Calvaris asked me to move the delete of the ASSERT in an other bug

5. I moved the ASSERT removal in the bug 185420 (patch 3)

6. Calvaris prefers to implement the handler of the protection event in bug 185420 instead to just remove the ASSERT. 

7. In order to take more time to implement the patch 185420. I made these two patches independent by removing the call of 
   MediaPlayerPrivate in the probe of the protection event. (Patch 4).

I close the bug 185420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423062</commentid>
    <comment_count>18</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-05-10 23:16:48 -0700</bug_when>
    <thetext>(In reply to Yacine Bandou from comment #16)
&gt; I noted that you changed the patch. You didn&apos;t land the last pushed patch
&gt; and you landed the patch which has dependency with this bug 185420.
&gt; 
&gt; That provoked the crashes of encrypted-media layoutTests in debug mode as i
&gt; commented in c10.

Yes, I told you in private about this and asked you about the best way to land these patches to avoid issues, which I followed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339550</attachid>
            <date>2018-05-04 09:20:36 -0700</date>
            <delta_ts>2018-05-07 05:59:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185245-20180504182036.patch</filename>
            <type>text/plain</type>
            <size>9434</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5ZjVkN2RkODY3MDA4
MTcyZDA3OTc2ZTA3N2Q0MDI0MjY1NTRmZi4uNzljZDQ1OGQzMDliOGMxZjU5YWM2NzU1OTQzMDhl
NDZkMjNhZDIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA1LTA0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgYSBoYW5kbGVyIGZvciBHU3RyZWFtZXIgcHJvdGVjdGlvbiBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1
MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUXRk
ZW11eCBzZW5kcyB0aGUgcHJvdGVjdGlvbiBldmVudCB3aGVuIGVuY291bnRlcmVkIGEgbmV3IFBT
U0ggYm94IChlbmNyeXB0ZWQgY29udGVudCkuCisKKyAgICAgICAgVGhlIERlY3J5cHRvciBpcyBt
b3ZlZCBmcm9tIEFwcGVuZFBpcGVsaW5lIHRvIFBsYXliYWNrUGlwZWxpbmUgKHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxODU1KSwKKyAgICAgICAgdGh1cyB0
aGUgcHJvdGVjdGlvbiBldmVudCBpcyBubyBsb25nZXIgaGFuZGxlZCBiZWNhdXNlIHRoZSBEZWNy
eXB0b3IgaXMgbm90IGluIHRoZSBzYW1lIHBpcGVsaW5lIGFzIHF0ZGVtdXguCisKKyAgICAgICAg
QXBwZW5kUGlwZWxpbmU6IGh0dHBzcmMtLT5xdGRlbXV4LS0+YXBwc2luaworICAgICAgICBQbGF5
YmFja1BpcGVsaW5lOiBhcHBzcmMtLT5wYXJzZXItLT4gZGVjcnlwdG9yLS0+ZGVjb2Rlci0tPnNp
bmsKKworICAgICAgICBUaGlzIHBhdGNoIGF0dGFjaGVzIGEgcHJvYmUgdG8gdGhlIHNpbmsgcGFk
IG9mIHRoZSBhcHBzaW5rIGluIHRoZSBhcHBlbmRQaXBlbGluZSBpbiBvcmRlciB0bworICAgICAg
ICBjYXRjaCBhbmQgbWFuYWdlIHRoZSBwcm90ZWN0aW9uIGV2ZW50LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
aGFuZGxlUHJvdGVjdGlvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBp
cGVsaW5lOjpBcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGlu
ZTo6fkFwcGVuZFBpcGVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFBpcGVsaW5lQXBw
c2lua1BhZEV2ZW50UHJvYmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5l
OjpwbGF5ZXJQcml2YXRlKToKKwogMjAxOC0wNS0wMyAgWWFjaW5lIEJhbmRvdSAgPHlhY2luZS5i
YW5kb3VfZXh0QHNvZnRhdGhvbWUuY29tPgogCiAgICAgICAgIFtFTUVdW0dTdHJlYW1lcl0gQ3Jh
c2ggd2hlbiB0aGUgbWVkaWFLZXlzIGNyZWF0ZWQgYmVmb3JlIGxvYWRpbmcgdGhlIG1lZGlhIGlu
IGRlYnVnIGNvbmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcAppbmRleCAzNDM4OGMzNDg0OTM5M2RkZmQ2YjcyMTA3NmQ1ZGE3NzY1MTdj
ZDY1Li41YTJiYzA1ZjY3ZTlhYmEyOWVkNjEwODAyZTU0NzJmZDFmZTdkNTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0x
MjU1LDIwICsxMjU1LDM3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
ZGlzcGF0Y2hDRE1JbnN0YW5jZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6aGFuZGxlUHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKIHsKKyAgICBjb25z
dCBnY2hhciogZXZlbnRLZXlTeXN0ZW1JZCA9IG51bGxwdHI7CisgICAgR3N0QnVmZmVyKiBkYXRh
ID0gbnVsbHB0cjsKKyAgICBWZWN0b3I8dWludDhfdD4gY29uY2F0ZW5hdGVkSW5pdERhdGFDaHVu
a3M7CisKICAgICBpZiAobV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5jb250YWlucyhHU1RfRVZF
TlRfU0VRTlVNKGV2ZW50KSkpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgp
LCAiZXZlbnQgJXUgYWxyZWFkeSBoYW5kbGVkIiwgR1NUX0VWRU5UX1NFUU5VTShldmVudCkpOwot
ICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLnJlbW92ZShHU1RfRVZFTlRfU0VRTlVN
KGV2ZW50KSk7Ci0gICAgICAgIGlmIChtX25lZWRUb1Jlc2VuZENyZWRlbnRpYWxzKSB7Ci0gICAg
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJyZXNlbmRpbmcgY3JlZGVudGlh
bHMiKTsKLSAgICAgICAgICAgIGF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSgpOwot
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBnY2hhciogZXZl
bnRLZXlTeXN0ZW1JZCA9IG51bGxwdHI7Ci0gICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24o
ZXZlbnQsICZldmVudEtleVN5c3RlbUlkLCBudWxscHRyLCBudWxscHRyKTsKLSAgICBHU1RfV0FS
TklORygiRklYTUU6IHVuaGFuZGxlZCBwcm90ZWN0aW9uIGV2ZW50IGZvciAlcyIsIGV2ZW50S2V5
U3lzdGVtSWQpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGdzdF9ldmVudF9wYXJz
ZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwor
ICAgIGlmIChtX2NkbUluc3RhbmNlICYmIHN0cmNtcChHU3RyZWFtZXJFTUVVdGlsaXRpZXM6Omtl
eVN5c3RlbVRvVXVpZChtX2NkbUluc3RhbmNlLT5rZXlTeXN0ZW0oKSksIGV2ZW50S2V5U3lzdGVt
SWQpKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RNYXBJbmZvIG1hcEluZm87CisgICAgaWYg
KCFnc3RfYnVmZmVyX21hcChkYXRhLCAmbWFwSW5mbywgR1NUX01BUF9SRUFEKSkgeworICAgICAg
ICBHU1RfV0FSTklORygiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBldmVudEtleVN5
c3RlbUlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdTVF9ERUJVRygic2NoZWR1
bGluZyBQcm90ZWN0aW9uIGV2ZW50IGZvciAlcyB3aXRoIGluaXQgZGF0YSBzaXplIG9mICV1Iiwg
ZXZlbnRLZXlTeXN0ZW1JZCwgbWFwSW5mby5zaXplKTsKKyAgICBHU1RfTUVNRFVNUCgiaW5pdCBk
YXRhcyIsIG1hcEluZm8uZGF0YSwgbWFwSW5mby5zaXplKTsKKworICAgIGNvbmNhdGVuYXRlZElu
aXREYXRhQ2h1bmtzLmFwcGVuZChtYXBJbmZvLmRhdGEsIG1hcEluZm8uc2l6ZSk7CisgICAgbV9o
YW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShldmVudCkpOworICAg
IGdzdF9idWZmZXJfdW5tYXAoZGF0YSwgJm1hcEluZm8pOworCisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFt0aGlzLCBldmVudEtleVN5c3RlbUlkLCBpbml0RGF0YSA9IFdURk1vdmUoY29u
Y2F0ZW5hdGVkSW5pdERhdGFDaHVua3MpXSB7CisgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGlu
ZyBPbkVuY3J5cHRlZCBldmVudCBmb3IgJXMgd2l0aCBjb25jYXRlbmF0ZWQgaW5pdCBkYXRhcyBz
aXplIG9mICUiIEdfR1NJWkVfRk9STUFULCBldmVudEtleVN5c3RlbUlkLCBpbml0RGF0YS5zaXpl
KCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIGluaXREYXRhLmRhdGEoKSwg
aW5pdERhdGEuc2l6ZSgpKTsKKyAgICAgICAgdGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkKEFTQ0lJTGl0ZXJhbCgiY2VuYyIpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAgfSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRleCA2OTFmMGM4YWM1OTNkNGVl
NDllZDg0NDhhODMxMjkwNzRkMWU5OTZjLi4xMGViOTc4MTU3NGM1NTk4NzFjNGFhODk3OTdhNmU0
ZTUzZWRiOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtNzYsNiAr
NzYsMTEgQEAgc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc3JjRGF0
YUxlYXZpbmcoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmYKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0
aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVQYWRQcm9iZURlYnVnSW5mb3JtYXRp
b24oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24q
KTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3N0YXRpYyBHc3RQYWRQ
cm9iZVJldHVybiBhcHBlbmRQaXBlbGluZUFwcHNpbmtQYWRFdmVudFByb2JlKEdzdFBhZCosIEdz
dFBhZFByb2JlSW5mbyosIHN0cnVjdCBQYWRQcm9iZUluZm9ybWF0aW9uKik7CisjZW5kaWYKKwog
c3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lRGVtdXhlckJsYWNrSG9sZVBh
ZFByb2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIGdwb2ludGVyKTsKIHN0YXRpYyBHc3RG
bG93UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua05ld1NhbXBsZShHc3RFbGVtZW50KiwgQXBw
ZW5kUGlwZWxpbmUqKTsKIHN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lQXBwc2lua0VPUyhHc3RF
bGVtZW50KiwgQXBwZW5kUGlwZWxpbmUqKTsKQEAgLTE1Niw2ICsxNjEsMTIgQEAgQXBwZW5kUGlw
ZWxpbmU6OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4g
bWVkaWFTb3VyY2VDbGkKICAgICBtX2FwcHNpbmtEYXRhRW50ZXJpbmdQYWRQcm9iZUluZm9ybWF0
aW9uLnByb2JlSWQgPSBnc3RfcGFkX2FkZF9wcm9iZShhcHBzaW5rUGFkLmdldCgpLCBHU1RfUEFE
X1BST0JFX1RZUEVfQlVGRkVSLCByZWludGVycHJldF9jYXN0PEdzdFBhZFByb2JlQ2FsbGJhY2s+
KGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKSwgJm1fYXBwc2lua0RhdGFF
bnRlcmluZ1BhZFByb2JlSW5mb3JtYXRpb24sIG51bGxwdHIpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorICAgIG1fYXBwc2lua1BhZEV2ZW50UHJvYmVJbmZvcm1hdGlv
bi5hcHBlbmRQaXBlbGluZSA9IHRoaXM7CisgICAgbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9y
bWF0aW9uLmRlc2NyaXB0aW9uID0gImFwcHNpbmsgZXZlbnQgcHJvYmUiOworICAgIG1fYXBwc2lu
a1BhZEV2ZW50UHJvYmVJbmZvcm1hdGlvbi5wcm9iZUlkID0gZ3N0X3BhZF9hZGRfcHJvYmUoYXBw
c2lua1BhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sIHJlaW50
ZXJwcmV0X2Nhc3Q8R3N0UGFkUHJvYmVDYWxsYmFjaz4oYXBwZW5kUGlwZWxpbmVBcHBzaW5rUGFk
RXZlbnRQcm9iZSksICZtX2FwcHNpbmtQYWRFdmVudFByb2JlSW5mb3JtYXRpb24sIG51bGxwdHIp
OworI2VuZGlmCisKICAgICAvLyBUaGVzZSBzaWduYWxzIHdvbid0IGJlIGNvbm5lY3RlZCBvdXRz
aWRlIG9mIHRoZSBsaWZldGltZSBvZiAidGhpcyIuCiAgICAgZ19zaWduYWxfY29ubmVjdChtX2Fw
cHNyYy5nZXQoKSwgIm5lZWQtZGF0YSIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzcmNO
ZWVkRGF0YSksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBh
ZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRkZWQpLCB0aGlz
KTsKQEAgLTIyNCw2ICsyMzUsOSBAQCBBcHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKCkK
ICAgICAgICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUoYXBwc2lua1BhZC5nZXQoKSwgbV9hcHBzaW5r
RGF0YUVudGVyaW5nUGFkUHJvYmVJbmZvcm1hdGlvbi5wcm9iZUlkKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAgICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUoYXBw
c2lua1BhZC5nZXQoKSwgbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uLnByb2JlSWQp
OworI2VuZGlmCiAgICAgICAgIG1fYXBwc2luayA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0xMDcx
LDYgKzEwODUsMjcgQEAgc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFk
UHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFAKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQ
aXBlbGluZUFwcHNpbmtQYWRFdmVudFByb2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5m
bywgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24gKnBhZFByb2JlSW5mb3JtYXRpb24pCit7Cisg
ICAgQVNTRVJUKEdTVF9QQURfUFJPQkVfSU5GT19UWVBFKGluZm8pICYgR1NUX1BBRF9QUk9CRV9U
WVBFX0VWRU5UX0RPV05TVFJFQU0pOworICAgIEdzdEV2ZW50KiBldmVudCA9IGdzdF9wYWRfcHJv
YmVfaW5mb19nZXRfZXZlbnQoaW5mbyk7CisgICAgR1NUX0RFQlVHKCJIYW5kbGluZyBldmVudCAl
cyBvbiBhcHBlbmRQaXBlbGluZSBhcHBzaW5rUGFkIiwgR1NUX0VWRU5UX1RZUEVfTkFNRShldmVu
dCkpOworICAgIFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSA9IHBhZFBy
b2JlSW5mb3JtYXRpb24tPmFwcGVuZFBpcGVsaW5lOworCisgICAgc3dpdGNoIChHU1RfRVZFTlRf
VFlQRShldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9QUk9URUNUSU9OOgorICAgICAgICBp
ZiAoYXBwZW5kUGlwZWxpbmUgJiYgYXBwZW5kUGlwZWxpbmUtPnBsYXllclByaXZhdGUoKSkKKyAg
ICAgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5wbGF5ZXJQcml2YXRlKCktPmhhbmRsZVByb3RlY3Rp
b25FdmVudChldmVudCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworfQorI2VuZGlmCisK
IHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURlbXV4ZXJCbGFja0hvbGVQ
YWRQcm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyKQogewogICAg
IEFTU0VSVChHU1RfUEFEX1BST0JFX0lORk9fVFlQRShpbmZvKSAmIEdTVF9QQURfUFJPQkVfVFlQ
RV9CVUZGRVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCmluZGV4IDk5NWMxMjk3NWQ5
NGVjNGMwMDdmZmViMmQ3OWNmYTdhNDVmNTM4OTQuLjlmZjhhMTU0ZDk5OGFhOWNjNDllYzE0MzQx
MTVlYjc2ZDk0NTU2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUxPR19ESVNBQkxFRAorI2lm
ICFMT0dfRElTQUJMRUQgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHN0cnVjdCBQYWRQcm9i
ZUluZm9ybWF0aW9uIHsKICAgICBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmU7CiAgICAg
Y29uc3QgY2hhciogZGVzY3JpcHRpb247CkBAIC03NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBH
c3RFbGVtZW50KiBhcHBzaW5rKCkgeyByZXR1cm4gbV9hcHBzaW5rLmdldCgpOyB9CiAgICAgR3N0
Q2FwcyogZGVtdXhlclNyY1BhZENhcHMoKSB7IHJldHVybiBtX2RlbXV4ZXJTcmNQYWRDYXBzLmdl
dCgpOyB9CiAgICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBz
LmdldCgpOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKiBwbGF5ZXJQcml2
YXRlKCkgeyByZXR1cm4gbV9wbGF5ZXJQcml2YXRlOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRy
YWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogICAgIFdlYkNvcmU6
Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lciBzdHJlYW1UeXBlKCkgeyByZXR1cm4gbV9z
dHJlYW1UeXBlOyB9CiAKQEAgLTEzMCw2ICsxMzEsOSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBQ
YWRQcm9iZUluZm9ybWF0aW9uIG1fYXBwc2lua0RhdGFFbnRlcmluZ1BhZFByb2JlSW5mb3JtYXRp
b247CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgc3RydWN0IFBh
ZFByb2JlSW5mb3JtYXRpb24gbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uOworI2Vu
ZGlmCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIHN0YXRlcyBvZiBhcHBlbmQgcHJvY2Vzc2lu
ZywgdG8gYXZvaWQgcGVyZm9ybWluZyBhY3Rpb25zIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBjdXJy
ZW50IHN0YXRlCiAgICAgLy8gKGVnOiBwcm9jZXNzaW5nIG1vcmUgc2FtcGxlcyB3aGVuIHRoZSBs
YXN0IG9uZSBoYXMgYmVlbiBkZXRlY3RlZCwgZXRjLikuIFNlZSBzZXRBcHBlbmRTdGF0ZSgpIGZv
ciB2YWxpZAogICAgIC8vIHRyYW5zaXRpb25zLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339713</attachid>
            <date>2018-05-07 05:59:43 -0700</date>
            <delta_ts>2018-05-08 07:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185245-20180507145943.patch</filename>
            <type>text/plain</type>
            <size>7716</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ5YTliZWI1MGM3MDYy
ZmE2Yjc5Mzg0MDJhZjJlOTBjMjU4NzE1Ny4uYTI1ZTU5NjBiMTIwYzcyMWMyY2FiZGYzODhlNTYy
YTNlMDk0NjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTA1LTA0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgYSBoYW5kbGVyIGZvciBHU3RyZWFtZXIgcHJvdGVjdGlvbiBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1
MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUXRk
ZW11eCBzZW5kcyB0aGUgcHJvdGVjdGlvbiBldmVudCB3aGVuIGVuY291bnRlcmVkIGEgbmV3IFBT
U0ggYm94IChlbmNyeXB0ZWQgY29udGVudCkuCisKKyAgICAgICAgVGhlIERlY3J5cHRvciBpcyBt
b3ZlZCBmcm9tIEFwcGVuZFBpcGVsaW5lIHRvIFBsYXliYWNrUGlwZWxpbmUgKHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxODU1KSwKKyAgICAgICAgdGh1cyB0
aGUgcHJvdGVjdGlvbiBldmVudCBpcyBubyBsb25nZXIgaGFuZGxlZCBiZWNhdXNlIHRoZSBEZWNy
eXB0b3IgaXMgbm90IGluIHRoZSBzYW1lIHBpcGVsaW5lIGFzIHF0ZGVtdXguCisKKyAgICAgICAg
QXBwZW5kUGlwZWxpbmU6IGh0dHBzcmMtLT5xdGRlbXV4LS0+YXBwc2luaworICAgICAgICBQbGF5
YmFja1BpcGVsaW5lOiBhcHBzcmMtLT5wYXJzZXItLT4gZGVjcnlwdG9yLS0+ZGVjb2Rlci0tPnNp
bmsKKworICAgICAgICBUaGlzIHBhdGNoIGF0dGFjaGVzIGEgcHJvYmUgdG8gdGhlIHNpbmsgcGFk
IG9mIHRoZSBhcHBzaW5rIGluIHRoZSBhcHBlbmRQaXBlbGluZSBpbiBvcmRlciB0bworICAgICAg
ICBjYXRjaCBhbmQgbWFuYWdlIHRoZSBwcm90ZWN0aW9uIGV2ZW50LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
aGFuZGxlUHJvdGVjdGlvbkV2ZW50KToKKyAgICAgICAgUmVtb3ZlIHRoZSBBU1NFUlRfTk9UX1JF
QUNIRUQsIGJlY2F1c2Ugbm93IHdpdGggdGhpcyBwYXRjaCwgd2UgcmVhY2ggdGhpcyBjb2RlLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwZW5kUGlwZWxpbmVBcHBzaW5rUGFkRXZlbnRQcm9iZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnBsYXllclByaXZhdGUpOgorCiAyMDE4
LTA1LTAzICBZYWNpbmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+
CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBDcmFzaCB3aGVuIHRoZSBtZWRpYUtleXMgYXJl
IGNyZWF0ZWQgYmVmb3JlIGxvYWRpbmcgdGhlIG1lZGlhIGluIGRlYnVnIGNvbmYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBh
NWIzODEwZTg5YmQ5YzFhODRiZGVkNTM0NjMyODNmZmI5MzhlNGFhLi5jYjZlNGQwOWQxZjlhYTIz
ZmJjZTRmYmU1OWNhMDhkOWIwZTU0ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0xMjY3LDcgKzEyNjcsNiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmhhbmRsZVByb3RlY3Rpb25FdmVudChH
c3RFdmVudCogZXZlbnQpCiAgICAgY29uc3QgZ2NoYXIqIGV2ZW50S2V5U3lzdGVtSWQgPSBudWxs
cHRyOwogICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0
ZW1JZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgR1NUX1dBUk5JTkcoIkZJWE1FOiB1bmhhbmRs
ZWQgcHJvdGVjdGlvbiBldmVudCBmb3IgJXMiLCBldmVudEtleVN5c3RlbUlkKTsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwCmluZGV4IDY5MWYwYzhhYzU5M2Q0ZWU0OWVkODQ0OGE4MzEyOTA3NGQxZTk5NmMuLjM5
ZTViYjQ5NzBhNTU0MzEwNjgxNjQ1MzNmYTk4MDM1ZmY4NzFiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
QXBwZW5kUGlwZWxpbmUuY3BwCkBAIC03Niw2ICs3NiwxMSBAQCBzdGF0aWMgR3N0UGFkUHJvYmVS
ZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzcmNEYXRhTGVhdmluZyhHc3RQYWQqLCBHc3RQYWRQcm9i
ZUluZgogI2lmICFMT0dfRElTQUJMRUQKIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQ
aXBlbGluZVBhZFByb2JlRGVidWdJbmZvcm1hdGlvbihHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8q
LCBzdHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlvbiopOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBw
c2lua1BhZEV2ZW50UHJvYmUoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgc3RydWN0IFBhZFBy
b2JlSW5mb3JtYXRpb24qKTsKKyNlbmRpZgorCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBw
ZW5kUGlwZWxpbmVEZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUHJvYmVJ
bmZvKiwgZ3BvaW50ZXIpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBz
aW5rTmV3U2FtcGxlKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwogc3RhdGljIHZvaWQg
YXBwZW5kUGlwZWxpbmVBcHBzaW5rRU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwpA
QCAtMTU2LDYgKzE2MSwxMiBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAgIG1fYXBwc2lu
a0RhdGFFbnRlcmluZ1BhZFByb2JlSW5mb3JtYXRpb24ucHJvYmVJZCA9IGdzdF9wYWRfYWRkX3By
b2JlKGFwcHNpbmtQYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9CVUZGRVIsIHJlaW50ZXJw
cmV0X2Nhc3Q8R3N0UGFkUHJvYmVDYWxsYmFjaz4oYXBwZW5kUGlwZWxpbmVQYWRQcm9iZURlYnVn
SW5mb3JtYXRpb24pLCAmbV9hcHBzaW5rRGF0YUVudGVyaW5nUGFkUHJvYmVJbmZvcm1hdGlvbiwg
bnVsbHB0cik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgbV9h
cHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uLmFwcGVuZFBpcGVsaW5lID0gdGhpczsKKyAg
ICBtX2FwcHNpbmtQYWRFdmVudFByb2JlSW5mb3JtYXRpb24uZGVzY3JpcHRpb24gPSAiYXBwc2lu
ayBldmVudCBwcm9iZSI7CisgICAgbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uLnBy
b2JlSWQgPSBnc3RfcGFkX2FkZF9wcm9iZShhcHBzaW5rUGFkLmdldCgpLCBHU1RfUEFEX1BST0JF
X1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxi
YWNrPihhcHBlbmRQaXBlbGluZUFwcHNpbmtQYWRFdmVudFByb2JlKSwgJm1fYXBwc2lua1BhZEV2
ZW50UHJvYmVJbmZvcm1hdGlvbiwgbnVsbHB0cik7CisjZW5kaWYKKwogICAgIC8vIFRoZXNlIHNp
Z25hbHMgd29uJ3QgYmUgY29ubmVjdGVkIG91dHNpZGUgb2YgdGhlIGxpZmV0aW1lIG9mICJ0aGlz
Ii4KICAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc3JjLmdldCgpLCAibmVlZC1kYXRhIiwgR19D
QUxMQkFDSyhhcHBlbmRQaXBlbGluZUFwcHNyY05lZWREYXRhKSwgdGhpcyk7CiAgICAgZ19zaWdu
YWxfY29ubmVjdChtX2RlbXV4LmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhhcHBlbmRQ
aXBlbGluZURlbXV4ZXJQYWRBZGRlZCksIHRoaXMpOwpAQCAtMjI0LDYgKzIzNSw5IEBAIEFwcGVu
ZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUoKQogICAgICAgICBnc3RfcGFkX3JlbW92ZV9wcm9i
ZShhcHBzaW5rUGFkLmdldCgpLCBtX2FwcHNpbmtEYXRhRW50ZXJpbmdQYWRQcm9iZUluZm9ybWF0
aW9uLnByb2JlSWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
ICAgICBnc3RfcGFkX3JlbW92ZV9wcm9iZShhcHBzaW5rUGFkLmdldCgpLCBtX2FwcHNpbmtQYWRF
dmVudFByb2JlSW5mb3JtYXRpb24ucHJvYmVJZCk7CisjZW5kaWYKICAgICAgICAgbV9hcHBzaW5r
ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwNzEsNiArMTA4NSwyNyBAQCBzdGF0aWMgR3N0UGFk
UHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVQYWRQcm9iZURlYnVnSW5mb3JtYXRpb24oR3N0UGFk
KiwgR3N0UGFkUAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorc3Rh
dGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua1BhZEV2ZW50UHJvYmUo
R3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBzdHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlv
biAqcGFkUHJvYmVJbmZvcm1hdGlvbikKK3sKKyAgICBBU1NFUlQoR1NUX1BBRF9QUk9CRV9JTkZP
X1RZUEUoaW5mbykgJiBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSk7CisgICAg
R3N0RXZlbnQqIGV2ZW50ID0gZ3N0X3BhZF9wcm9iZV9pbmZvX2dldF9ldmVudChpbmZvKTsKKyAg
ICBHU1RfREVCVUcoIkhhbmRsaW5nIGV2ZW50ICVzIG9uIGFwcGVuZFBpcGVsaW5lIGFwcHNpbmtQ
YWQiLCBHU1RfRVZFTlRfVFlQRV9OQU1FKGV2ZW50KSk7CisgICAgV2ViQ29yZTo6QXBwZW5kUGlw
ZWxpbmUqIGFwcGVuZFBpcGVsaW5lID0gcGFkUHJvYmVJbmZvcm1hdGlvbi0+YXBwZW5kUGlwZWxp
bmU7CisKKyAgICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSkgeworICAgIGNhc2UgR1NU
X0VWRU5UX1BST1RFQ1RJT046CisgICAgICAgIGlmIChhcHBlbmRQaXBlbGluZSAmJiBhcHBlbmRQ
aXBlbGluZS0+cGxheWVyUHJpdmF0ZSgpKQorICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPnBs
YXllclByaXZhdGUoKS0+aGFuZGxlUHJvdGVjdGlvbkV2ZW50KGV2ZW50KTsKKyAgICAgICAgcmV0
dXJuIEdTVF9QQURfUFJPQkVfRFJPUDsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKK30KKyNlbmRpZgorCiBzdGF0aWMg
R3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVEZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUo
R3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlcikKIHsKICAgICBBU1NFUlQo
R1NUX1BBRF9QUk9CRV9JTkZPX1RZUEUoaW5mbykgJiBHU1RfUEFEX1BST0JFX1RZUEVfQlVGRkVS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAppbmRleCA5OTVjMTI5NzVkOTRlYzRjMDA3
ZmZlYjJkNzljZmE3YTQ1ZjUzODk0Li45ZmY4YTE1NGQ5OThhYTljYzQ5ZWMxNDM0MTE1ZWI3NmQ5
NDU1NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFMT0dfRElTQUJMRUQKKyNpZiAhTE9HX0RJ
U0FCTEVEIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBzdHJ1Y3QgUGFkUHJvYmVJbmZvcm1h
dGlvbiB7CiAgICAgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lOwogICAgIGNvbnN0IGNo
YXIqIGRlc2NyaXB0aW9uOwpAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgR3N0RWxlbWVu
dCogYXBwc2luaygpIHsgcmV0dXJuIG1fYXBwc2luay5nZXQoKTsgfQogICAgIEdzdENhcHMqIGRl
bXV4ZXJTcmNQYWRDYXBzKCkgeyByZXR1cm4gbV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKTsgfQog
ICAgIEdzdENhcHMqIGFwcHNpbmtDYXBzKCkgeyByZXR1cm4gbV9hcHBzaW5rQ2Fwcy5nZXQoKTsg
fQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogcGxheWVyUHJpdmF0ZSgpIHsg
cmV0dXJuIG1fcGxheWVyUHJpdmF0ZTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpUcmFja1ByaXZh
dGVCYXNlPiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KICAgICBXZWJDb3JlOjpNZWRpYVNv
dXJjZVN0cmVhbVR5cGVHU3RyZWFtZXIgc3RyZWFtVHlwZSgpIHsgcmV0dXJuIG1fc3RyZWFtVHlw
ZTsgfQogCkBAIC0xMzAsNiArMTMxLDkgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGFkUHJvYmVJ
bmZvcm1hdGlvbiBtX2FwcHNpbmtEYXRhRW50ZXJpbmdQYWRQcm9iZUluZm9ybWF0aW9uOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHN0cnVjdCBQYWRQcm9iZUlu
Zm9ybWF0aW9uIG1fYXBwc2lua1BhZEV2ZW50UHJvYmVJbmZvcm1hdGlvbjsKKyNlbmRpZgogICAg
IC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBzdGF0ZXMgb2YgYXBwZW5kIHByb2Nlc3NpbmcsIHRvIGF2
b2lkIHBlcmZvcm1pbmcgYWN0aW9ucyBpbmFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCBzdGF0
ZQogICAgIC8vIChlZzogcHJvY2Vzc2luZyBtb3JlIHNhbXBsZXMgd2hlbiB0aGUgbGFzdCBvbmUg
aGFzIGJlZW4gZGV0ZWN0ZWQsIGV0Yy4pLiBTZWUgc2V0QXBwZW5kU3RhdGUoKSBmb3IgdmFsaWQK
ICAgICAvLyB0cmFuc2l0aW9ucy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339813</attachid>
            <date>2018-05-08 07:04:33 -0700</date>
            <delta_ts>2018-05-10 00:41:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185245-20180508160435.patch</filename>
            <type>text/plain</type>
            <size>6695</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQwZWQxYzAzN2E4OTdk
YzJmNmQxYmU4OGMxN2VhNzkwNjI5MjJkMS4uMDExN2JkMWI5YjQwYWFhYmU5ZTBiNGZlZjEyYjNh
MTljNWY1MjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA1LTA0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgYSBoYW5kbGVyIGZvciBHU3RyZWFtZXIgcHJvdGVjdGlvbiBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1
MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUXRk
ZW11eCBzZW5kcyB0aGUgcHJvdGVjdGlvbiBldmVudCB3aGVuIGVuY291bnRlcmVkIGEgbmV3IFBT
U0ggYm94IChlbmNyeXB0ZWQgY29udGVudCkuCisKKyAgICAgICAgVGhlIERlY3J5cHRvciBpcyBt
b3ZlZCBmcm9tIEFwcGVuZFBpcGVsaW5lIHRvIFBsYXliYWNrUGlwZWxpbmUgKHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxODU1KSwKKyAgICAgICAgdGh1cyB0
aGUgcHJvdGVjdGlvbiBldmVudCBpcyBubyBsb25nZXIgaGFuZGxlZCBiZWNhdXNlIHRoZSBEZWNy
eXB0b3IgaXMgbm90IGluIHRoZSBzYW1lIHBpcGVsaW5lIGFzIHF0ZGVtdXguCisKKyAgICAgICAg
QXBwZW5kUGlwZWxpbmU6IGh0dHBzcmMtLT5xdGRlbXV4LS0+YXBwc2luaworICAgICAgICBQbGF5
YmFja1BpcGVsaW5lOiBhcHBzcmMtLT5wYXJzZXItLT4gZGVjcnlwdG9yLS0+ZGVjb2Rlci0tPnNp
bmsKKworICAgICAgICBUaGlzIHBhdGNoIGF0dGFjaGVzIGEgcHJvYmUgdG8gdGhlIHNpbmsgcGFk
IG9mIHRoZSBhcHBzaW5rIGluIHRoZSBhcHBlbmRQaXBlbGluZSBpbiBvcmRlciB0bworICAgICAg
ICBjYXRjaCBhbmQgbWFuYWdlIHRoZSBwcm90ZWN0aW9uIGV2ZW50LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRQaXBlbGluZUFwcHNpbmtQYWRFdmVudFByb2JlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBlbmRQaXBlbGluZTo6cGxheWVyUHJpdmF0ZSk6CisKIDIwMTgtMDUtMDMgIFlhY2lu
ZSBCYW5kb3UgIDx5YWNpbmUuYmFuZG91X2V4dEBzb2Z0YXRob21lLmNvbT4KIAogICAgICAgICBb
RU1FXVtHU3RyZWFtZXJdIENyYXNoIHdoZW4gdGhlIG1lZGlhS2V5cyBhcmUgY3JlYXRlZCBiZWZv
cmUgbG9hZGluZyB0aGUgbWVkaWEgaW4gZGVidWcgY29uZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcAppbmRleCA2OTFmMGM4YWM1OTNkNGVlNDllZDg0NDhhODMxMjkwNzRkMWU5OTZj
Li45ZTU4NmY0YzEzODBhMThkOGQwMmFjYWFiYWM3YjA4YjY0NGNkOTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVs
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtNzYsNiArNzYsMTEgQEAgc3RhdGljIEdzdFBhZFBy
b2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc3JjRGF0YUxlYXZpbmcoR3N0UGFkKiwgR3N0UGFk
UHJvYmVJbmYKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBw
ZW5kUGlwZWxpbmVQYWRQcm9iZURlYnVnSW5mb3JtYXRpb24oR3N0UGFkKiwgR3N0UGFkUHJvYmVJ
bmZvKiwgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qKTsKICNlbmRpZgorCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGlu
ZUFwcHNpbmtQYWRFdmVudFByb2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0cnVjdCBQ
YWRQcm9iZUluZm9ybWF0aW9uKik7CisjZW5kaWYKKwogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJu
IGFwcGVuZFBpcGVsaW5lRGVtdXhlckJsYWNrSG9sZVBhZFByb2JlKEdzdFBhZCosIEdzdFBhZFBy
b2JlSW5mbyosIGdwb2ludGVyKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGFwcGVuZFBpcGVsaW5l
QXBwc2lua05ld1NhbXBsZShHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxpbmUqKTsKIHN0YXRpYyB2
b2lkIGFwcGVuZFBpcGVsaW5lQXBwc2lua0VPUyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxpbmUq
KTsKQEAgLTE1Niw2ICsxNjEsMTIgQEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKFJl
ZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKICAgICBtX2Fw
cHNpbmtEYXRhRW50ZXJpbmdQYWRQcm9iZUluZm9ybWF0aW9uLnByb2JlSWQgPSBnc3RfcGFkX2Fk
ZF9wcm9iZShhcHBzaW5rUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfQlVGRkVSLCByZWlu
dGVycHJldF9jYXN0PEdzdFBhZFByb2JlQ2FsbGJhY2s+KGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVE
ZWJ1Z0luZm9ybWF0aW9uKSwgJm1fYXBwc2lua0RhdGFFbnRlcmluZ1BhZFByb2JlSW5mb3JtYXRp
b24sIG51bGxwdHIpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IG1fYXBwc2lua1BhZEV2ZW50UHJvYmVJbmZvcm1hdGlvbi5hcHBlbmRQaXBlbGluZSA9IHRoaXM7
CisgICAgbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uLmRlc2NyaXB0aW9uID0gImFw
cHNpbmsgZXZlbnQgcHJvYmUiOworICAgIG1fYXBwc2lua1BhZEV2ZW50UHJvYmVJbmZvcm1hdGlv
bi5wcm9iZUlkID0gZ3N0X3BhZF9hZGRfcHJvYmUoYXBwc2lua1BhZC5nZXQoKSwgR1NUX1BBRF9Q
Uk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sIHJlaW50ZXJwcmV0X2Nhc3Q8R3N0UGFkUHJvYmVD
YWxsYmFjaz4oYXBwZW5kUGlwZWxpbmVBcHBzaW5rUGFkRXZlbnRQcm9iZSksICZtX2FwcHNpbmtQ
YWRFdmVudFByb2JlSW5mb3JtYXRpb24sIG51bGxwdHIpOworI2VuZGlmCisKICAgICAvLyBUaGVz
ZSBzaWduYWxzIHdvbid0IGJlIGNvbm5lY3RlZCBvdXRzaWRlIG9mIHRoZSBsaWZldGltZSBvZiAi
dGhpcyIuCiAgICAgZ19zaWduYWxfY29ubmVjdChtX2FwcHNyYy5nZXQoKSwgIm5lZWQtZGF0YSIs
IEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzcmNOZWVkRGF0YSksIHRoaXMpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXBw
ZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRkZWQpLCB0aGlzKTsKQEAgLTIyNCw2ICsyMzUsOSBAQCBB
cHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKCkKICAgICAgICAgZ3N0X3BhZF9yZW1vdmVf
cHJvYmUoYXBwc2lua1BhZC5nZXQoKSwgbV9hcHBzaW5rRGF0YUVudGVyaW5nUGFkUHJvYmVJbmZv
cm1hdGlvbi5wcm9iZUlkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICAgICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUoYXBwc2lua1BhZC5nZXQoKSwgbV9hcHBzaW5r
UGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uLnByb2JlSWQpOworI2VuZGlmCiAgICAgICAgIG1fYXBw
c2luayA9IG51bGxwdHI7CiAgICAgfQogCkBAIC0xMDcxLDYgKzEwODUsMjcgQEAgc3RhdGljIEdz
dFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdz
dFBhZCosIEdzdFBhZFAKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
K3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZUFwcHNpbmtQYWRFdmVudFBy
b2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgc3RydWN0IFBhZFByb2JlSW5mb3Jt
YXRpb24gKnBhZFByb2JlSW5mb3JtYXRpb24pCit7CisgICAgQVNTRVJUKEdTVF9QQURfUFJPQkVf
SU5GT19UWVBFKGluZm8pICYgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0pOwor
ICAgIEdzdEV2ZW50KiBldmVudCA9IGdzdF9wYWRfcHJvYmVfaW5mb19nZXRfZXZlbnQoaW5mbyk7
CisgICAgR1NUX0RFQlVHKCJIYW5kbGluZyBldmVudCAlcyBvbiBhcHBlbmQgcGlwZWxpbmUgYXBw
c2lua1BhZCIsIEdTVF9FVkVOVF9UWVBFX05BTUUoZXZlbnQpKTsKKyAgICBXZWJDb3JlOjpBcHBl
bmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUgPSBwYWRQcm9iZUluZm9ybWF0aW9uLT5hcHBlbmRQ
aXBlbGluZTsKKworICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZXZlbnQpKSB7CisgICAgY2Fz
ZSBHU1RfRVZFTlRfUFJPVEVDVElPTjoKKyAgICAgICAgaWYgKGFwcGVuZFBpcGVsaW5lICYmIGFw
cGVuZFBpcGVsaW5lLT5wbGF5ZXJQcml2YXRlKCkpCisgICAgICAgICAgICBhcHBlbmRQaXBlbGlu
ZS0+cGxheWVyUHJpdmF0ZSgpLT5oYW5kbGVQcm90ZWN0aW9uRXZlbnQoZXZlbnQpOworICAgICAg
ICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworfQorI2VuZGlmCisKIHN0
YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURlbXV4ZXJCbGFja0hvbGVQYWRQ
cm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyKQogewogICAgIEFT
U0VSVChHU1RfUEFEX1BST0JFX0lORk9fVFlQRShpbmZvKSAmIEdTVF9QQURfUFJPQkVfVFlQRV9C
VUZGRVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCmluZGV4IDk5NWMxMjk3NWQ5NGVj
NGMwMDdmZmViMmQ3OWNmYTdhNDVmNTM4OTQuLjlmZjhhMTU0ZDk5OGFhOWNjNDllYzE0MzQxMTVl
Yjc2ZDk0NTU2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUxPR19ESVNBQkxFRAorI2lmICFM
T0dfRElTQUJMRUQgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHN0cnVjdCBQYWRQcm9iZUlu
Zm9ybWF0aW9uIHsKICAgICBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmU7CiAgICAgY29u
c3QgY2hhciogZGVzY3JpcHRpb247CkBAIC03NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBHc3RF
bGVtZW50KiBhcHBzaW5rKCkgeyByZXR1cm4gbV9hcHBzaW5rLmdldCgpOyB9CiAgICAgR3N0Q2Fw
cyogZGVtdXhlclNyY1BhZENhcHMoKSB7IHJldHVybiBtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgp
OyB9CiAgICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBzLmdl
dCgpOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKiBwbGF5ZXJQcml2YXRl
KCkgeyByZXR1cm4gbV9wbGF5ZXJQcml2YXRlOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRyYWNr
UHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogICAgIFdlYkNvcmU6Ok1l
ZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lciBzdHJlYW1UeXBlKCkgeyByZXR1cm4gbV9zdHJl
YW1UeXBlOyB9CiAKQEAgLTEzMCw2ICsxMzEsOSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBQYWRQ
cm9iZUluZm9ybWF0aW9uIG1fYXBwc2lua0RhdGFFbnRlcmluZ1BhZFByb2JlSW5mb3JtYXRpb247
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgc3RydWN0IFBhZFBy
b2JlSW5mb3JtYXRpb24gbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0aW9uOworI2VuZGlm
CiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIHN0YXRlcyBvZiBhcHBlbmQgcHJvY2Vzc2luZywg
dG8gYXZvaWQgcGVyZm9ybWluZyBhY3Rpb25zIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBjdXJyZW50
IHN0YXRlCiAgICAgLy8gKGVnOiBwcm9jZXNzaW5nIG1vcmUgc2FtcGxlcyB3aGVuIHRoZSBsYXN0
IG9uZSBoYXMgYmVlbiBkZXRlY3RlZCwgZXRjLikuIFNlZSBzZXRBcHBlbmRTdGF0ZSgpIGZvciB2
YWxpZAogICAgIC8vIHRyYW5zaXRpb25zLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339948</attachid>
            <date>2018-05-09 03:21:37 -0700</date>
            <delta_ts>2018-05-09 03:32:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185245-20180509122139.patch</filename>
            <type>text/plain</type>
            <size>6713</size>
            <attacher name="Yacine Bandou">bandou.yacine</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQwZWQxYzAzN2E4OTdk
YzJmNmQxYmU4OGMxN2VhNzkwNjI5MjJkMS4uYTdmOWJhYTRhOGUwODQzYWJjMjVlODQwMjYxNGNm
YmYyYjMzNjQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTA1LTA0ICBZYWNp
bmUgQmFuZG91ICA8eWFjaW5lLmJhbmRvdV9leHRAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAg
W0VNRV1bR1N0cmVhbWVyXSBBZGQgYSBoYW5kbGVyIGZvciBHU3RyZWFtZXIgcHJvdGVjdGlvbiBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1
MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUXRk
ZW11eCBzZW5kcyB0aGUgcHJvdGVjdGlvbiBldmVudCB3aGVuIGVuY291bnRlcmVkIGEgbmV3IFBT
U0ggYm94IChlbmNyeXB0ZWQgY29udGVudCkuCisKKyAgICAgICAgVGhlIERlY3J5cHRvciBpcyBt
b3ZlZCBmcm9tIEFwcGVuZFBpcGVsaW5lIHRvIFBsYXliYWNrUGlwZWxpbmUgKHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxODU1KSwKKyAgICAgICAgdGh1cyB0
aGUgcHJvdGVjdGlvbiBldmVudCBpcyBubyBsb25nZXIgaGFuZGxlZCBiZWNhdXNlIHRoZSBEZWNy
eXB0b3IgaXMgbm90IGluIHRoZSBzYW1lIHBpcGVsaW5lIGFzIHF0ZGVtdXguCisKKyAgICAgICAg
QXBwZW5kUGlwZWxpbmU6IGh0dHBzcmMtLT5xdGRlbXV4LS0+YXBwc2luaworICAgICAgICBQbGF5
YmFja1BpcGVsaW5lOiBhcHBzcmMtLT5wYXJzZXItLT4gZGVjcnlwdG9yLS0+ZGVjb2Rlci0tPnNp
bmsKKworICAgICAgICBUaGlzIHBhdGNoIGF0dGFjaGVzIGEgcHJvYmUgdG8gdGhlIHNpbmsgcGFk
IG9mIHRoZSBhcHBzaW5rIGluIHRoZSBhcHBlbmRQaXBlbGluZSBpbiBvcmRlciB0bworICAgICAg
ICBjYXRjaCBhbmQgbWFuYWdlIHRoZSBwcm90ZWN0aW9uIGV2ZW50LgorICAgICAgICBUaGlzIHBh
dGNoIGRvZXNuJ3QgeWV0IGRpc3BhdGNoIHRoZSBwcm90ZWN0aW9uIGV2ZW50IHRvIE1lZGlhUGxh
eWVyLCBzZWUgQnVnIDE4NTQyMC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlw
ZWxpbmU6OkFwcGVuZFBpcGVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5l
Ojp+QXBwZW5kUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGlwZWxpbmVBcHBz
aW5rUGFkRXZlbnRQcm9iZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6
OnBsYXllclByaXZhdGUpOgorCiAyMDE4LTA1LTAzICBZYWNpbmUgQmFuZG91ICA8eWFjaW5lLmJh
bmRvdV9leHRAc29mdGF0aG9tZS5jb20+CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBDcmFz
aCB3aGVuIHRoZSBtZWRpYUtleXMgYXJlIGNyZWF0ZWQgYmVmb3JlIGxvYWRpbmcgdGhlIG1lZGlh
IGluIGRlYnVnIGNvbmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggNjkx
ZjBjOGFjNTkzZDRlZTQ5ZWQ4NDQ4YTgzMTI5MDc0ZDFlOTk2Yy4uODM2NjJjMjA1MTM4ZTFkZjYx
ZjQ3OWJhZWZkZTdmODUyZDhmMGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKQEAgLTc2LDYgKzc2LDExIEBAIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBl
bGluZUFwcHNyY0RhdGFMZWF2aW5nKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mCiAjaWYgIUxPR19E
SVNBQkxFRAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVE
ZWJ1Z0luZm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0cnVjdCBQYWRQcm9i
ZUluZm9ybWF0aW9uKik7CiAjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitz
dGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rUGFkRXZlbnRQcm9i
ZShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qLCBzdHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlvbiop
OworI2VuZGlmCisKIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURlbXV4
ZXJCbGFja0hvbGVQYWRQcm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qLCBncG9pbnRlcik7
CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBhcHBlbmRQaXBlbGluZUFwcHNpbmtOZXdTYW1wbGUoR3N0
RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKik7CiBzdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFw
cHNpbmtFT1MoR3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKik7CkBAIC0xNTYsNiArMTYxLDEy
IEBAIEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZShSZWY8TWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0U+IG1lZGlhU291cmNlQ2xpCiAgICAgbV9hcHBzaW5rRGF0YUVudGVyaW5nUGFk
UHJvYmVJbmZvcm1hdGlvbi5wcm9iZUlkID0gZ3N0X3BhZF9hZGRfcHJvYmUoYXBwc2lua1BhZC5n
ZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0JVRkZFUiwgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQ
cm9iZUNhbGxiYWNrPihhcHBlbmRQaXBlbGluZVBhZFByb2JlRGVidWdJbmZvcm1hdGlvbiksICZt
X2FwcHNpbmtEYXRhRW50ZXJpbmdQYWRQcm9iZUluZm9ybWF0aW9uLCBudWxscHRyKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBtX2FwcHNpbmtQYWRFdmVudFBy
b2JlSW5mb3JtYXRpb24uYXBwZW5kUGlwZWxpbmUgPSB0aGlzOworICAgIG1fYXBwc2lua1BhZEV2
ZW50UHJvYmVJbmZvcm1hdGlvbi5kZXNjcmlwdGlvbiA9ICJhcHBzaW5rIGV2ZW50IHByb2JlIjsK
KyAgICBtX2FwcHNpbmtQYWRFdmVudFByb2JlSW5mb3JtYXRpb24ucHJvYmVJZCA9IGdzdF9wYWRf
YWRkX3Byb2JlKGFwcHNpbmtQYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dO
U1RSRUFNLCByZWludGVycHJldF9jYXN0PEdzdFBhZFByb2JlQ2FsbGJhY2s+KGFwcGVuZFBpcGVs
aW5lQXBwc2lua1BhZEV2ZW50UHJvYmUpLCAmbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUluZm9ybWF0
aW9uLCBudWxscHRyKTsKKyNlbmRpZgorCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3b24ndCBiZSBj
b25uZWN0ZWQgb3V0c2lkZSBvZiB0aGUgbGlmZXRpbWUgb2YgInRoaXMiLgogICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9hcHBzcmMuZ2V0KCksICJuZWVkLWRhdGEiLCBHX0NBTExCQUNLKGFwcGVuZFBp
cGVsaW5lQXBwc3JjTmVlZERhdGEpLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVt
dXguZ2V0KCksICJwYWQtYWRkZWQiLCBHX0NBTExCQUNLKGFwcGVuZFBpcGVsaW5lRGVtdXhlclBh
ZEFkZGVkKSwgdGhpcyk7CkBAIC0yMjQsNiArMjM1LDkgQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBl
bmRQaXBlbGluZSgpCiAgICAgICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKGFwcHNpbmtQYWQuZ2V0
KCksIG1fYXBwc2lua0RhdGFFbnRlcmluZ1BhZFByb2JlSW5mb3JtYXRpb24ucHJvYmVJZCk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgICAgIGdzdF9wYWRfcmVt
b3ZlX3Byb2JlKGFwcHNpbmtQYWQuZ2V0KCksIG1fYXBwc2lua1BhZEV2ZW50UHJvYmVJbmZvcm1h
dGlvbi5wcm9iZUlkKTsKKyNlbmRpZgogICAgICAgICBtX2FwcHNpbmsgPSBudWxscHRyOwogICAg
IH0KIApAQCAtMTA3MSw2ICsxMDg1LDI2IEBAIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBl
bmRQaXBlbGluZVBhZFByb2JlRGVidWdJbmZvcm1hdGlvbihHc3RQYWQqLCBHc3RQYWRQCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitzdGF0aWMgR3N0UGFkUHJvYmVS
ZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rUGFkRXZlbnRQcm9iZShHc3RQYWQqLCBHc3RQYWRQ
cm9iZUluZm8qIGluZm8sIHN0cnVjdCBQYWRQcm9iZUluZm9ybWF0aW9uKikKK3sKKyAgICBBU1NF
UlQoR1NUX1BBRF9QUk9CRV9JTkZPX1RZUEUoaW5mbykgJiBHU1RfUEFEX1BST0JFX1RZUEVfRVZF
TlRfRE9XTlNUUkVBTSk7CisgICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X3BhZF9wcm9iZV9pbmZv
X2dldF9ldmVudChpbmZvKTsKKyAgICBHU1RfVFJBQ0UoIkhhbmRsaW5nIGV2ZW50ICVzIG9uIGFw
cGVuZCBwaXBlbGluZSBhcHBzaW5rUGFkIiwgR1NUX0VWRU5UX1RZUEVfTkFNRShldmVudCkpOwor
CisgICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRShldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVO
VF9QUk9URUNUSU9OOgorICAgICAgICAvLyBGSVhNRTogRGlzcGF0Y2ggdGhlIHByb3RlY3Rpb24g
ZXZlbnQgdG8gdGhlIE1lZGlhUGxheWVyLiBTZWUgYnVnIDE4NTQyMAorICAgICAgICBHU1RfREVC
VUcoIlRoZSBwcm90ZWN0aW9uIGV2ZW50IGlzbid0IHlldCBkaXNwYXRjaGVkIHRvIHRoZSBNZWRp
YVBsYXllciIpOworICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OworfQorI2VuZGlmCisKIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURl
bXV4ZXJCbGFja0hvbGVQYWRQcm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdw
b2ludGVyKQogewogICAgIEFTU0VSVChHU1RfUEFEX1BST0JFX0lORk9fVFlQRShpbmZvKSAmIEdT
VF9QQURfUFJPQkVfVFlQRV9CVUZGRVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCmlu
ZGV4IDk5NWMxMjk3NWQ5NGVjNGMwMDdmZmViMmQ3OWNmYTdhNDVmNTM4OTQuLjlmZjhhMTU0ZDk5
OGFhOWNjNDllYzE0MzQxMTVlYjc2ZDk0NTU2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVs
aW5lLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUxP
R19ESVNBQkxFRAorI2lmICFMT0dfRElTQUJMRUQgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IHN0cnVjdCBQYWRQcm9iZUluZm9ybWF0aW9uIHsKICAgICBBcHBlbmRQaXBlbGluZSogYXBwZW5k
UGlwZWxpbmU7CiAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247CkBAIC03NSw2ICs3NSw3IEBA
IHB1YmxpYzoKICAgICBHc3RFbGVtZW50KiBhcHBzaW5rKCkgeyByZXR1cm4gbV9hcHBzaW5rLmdl
dCgpOyB9CiAgICAgR3N0Q2FwcyogZGVtdXhlclNyY1BhZENhcHMoKSB7IHJldHVybiBtX2RlbXV4
ZXJTcmNQYWRDYXBzLmdldCgpOyB9CiAgICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVy
biBtX2FwcHNpbmtDYXBzLmdldCgpOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFKiBwbGF5ZXJQcml2YXRlKCkgeyByZXR1cm4gbV9wbGF5ZXJQcml2YXRlOyB9CiAgICAgUmVm
UHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsg
fQogICAgIFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lciBzdHJlYW1UeXBl
KCkgeyByZXR1cm4gbV9zdHJlYW1UeXBlOyB9CiAKQEAgLTEzMCw2ICsxMzEsOSBAQCBwcml2YXRl
OgogICAgIHN0cnVjdCBQYWRQcm9iZUluZm9ybWF0aW9uIG1fYXBwc2lua0RhdGFFbnRlcmluZ1Bh
ZFByb2JlSW5mb3JtYXRpb247CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24gbV9hcHBzaW5rUGFkRXZlbnRQcm9iZUlu
Zm9ybWF0aW9uOworI2VuZGlmCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIHN0YXRlcyBvZiBh
cHBlbmQgcHJvY2Vzc2luZywgdG8gYXZvaWQgcGVyZm9ybWluZyBhY3Rpb25zIGluYXBwcm9wcmlh
dGUgZm9yIHRoZSBjdXJyZW50IHN0YXRlCiAgICAgLy8gKGVnOiBwcm9jZXNzaW5nIG1vcmUgc2Ft
cGxlcyB3aGVuIHRoZSBsYXN0IG9uZSBoYXMgYmVlbiBkZXRlY3RlZCwgZXRjLikuIFNlZSBzZXRB
cHBlbmRTdGF0ZSgpIGZvciB2YWxpZAogICAgIC8vIHRyYW5zaXRpb25zLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>