<?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>183723</bug_id>
          
          <creation_ts>2018-03-17 14:30:47 -0700</creation_ts>
          <short_desc>Disconnect the SVGPathSegList items from their SVGPathElement before rebuilding a new list</short_desc>
          <delta_ts>2018-03-21 15:22:53 -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="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407259</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-03-17 14:30:47 -0700</bug_when>
    <thetext>Allow reuse of a SVGPathSeg after the path&apos;s d attribute has been reset</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407260</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-03-17 14:31:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/38517871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407261</commentid>
    <comment_count>2</comment_count>
      <attachid>336012</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-03-17 14:36:58 -0700</bug_when>
    <thetext>Created attachment 336012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407433</commentid>
    <comment_count>3</comment_count>
      <attachid>336012</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-19 13:02:02 -0700</bug_when>
    <thetext>Comment on attachment 336012
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        the path, but the path couldn&apos;t find it.

I do not think this is the right approach to fix this bug. After changing the d poverty of the SVGPathElement, the relationship between the old SVGPathSeg and the animated tear off should be removed. The change here is accepting this bug because the assertion is removed and it is adding the new assumption: If the SVGPathSeg is linked to an animated property tear off but the animated property tear off does not have a link back to SVGPathSeg, then this is okay. 

I think we need to break the relationship between the old SVGPathSeg and its animated tear off if the animated tear off is going to delete it from its list. How about adding this code to SVGPathElement::svgAttributeChanged()

            buildSVGPathSegListValuesFromByteStream(m_pathByteStream, *this, newList, UnalteredParsing);
            for (auto&amp; pathSeg :  m_pathSegList.value) {
                SVGPathSegWithContext* itemWithContext = static_cast&lt;SVGPathSegWithContext*&gt;(pathSeg.get());
                itemWithContext-&gt;setContextAndRole(this, PathSegUndefinedRole);
            }
            m_pathSegList.value = WTFMove(newList);

This should break the relationship between the old SVGPathSeg and the animated tear off object. When SVGPathSegList::processIncomingListItemValue() is called to reinsert the same SVGPathSeg, it will make an early return because if (!animatedPropertyOfItem) is true. When adding the SVGPathSeg the first time, SVGPathSegList::processIncomingListItemValue() makes the same early return because the role of the SVGPathSeg is not set when it calls newItemWithContext-&gt;animatedProperty().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407493</commentid>
    <comment_count>4</comment_count>
      <attachid>336081</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-19 15:46:18 -0700</bug_when>
    <thetext>Created attachment 336081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407713</commentid>
    <comment_count>5</comment_count>
      <attachid>336081</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-03-20 10:37:01 -0700</bug_when>
    <thetext>Comment on attachment 336081
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        segments should be disconnected from the path element. We already do 

&quot;should be&quot; is ambiguous: it could mean &quot;they are not disconnected but they need to be&quot;, or &quot;if things are working correctly they will be&quot;. Maybe say &quot;they need to get disconnected&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407724</commentid>
    <comment_count>6</comment_count>
      <attachid>336134</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-20 10:55:47 -0700</bug_when>
    <thetext>Created attachment 336134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407728</commentid>
    <comment_count>7</comment_count>
      <attachid>336134</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-20 11:06:29 -0700</bug_when>
    <thetext>Comment on attachment 336134
Patch

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

&gt; Source/WebCore/svg/SVGPathElement.cpp:262
&gt; +            m_pathSegList.value.clearContextAndRoles();
&gt; +            m_pathSegList.value = WTFMove(newList);

Does it ever make sense to copy-construct, copy-assign, move-assign, or move construct a SVGPathSegListValues and not clear the context and roles of all its existing elements before copying or moving the new elements into it? If it never makes sense then I suggest we override these operators of SVGPathSegListValues to do this for us.

&gt; Source/WebCore/svg/SVGPathSegList.cpp:3
&gt; + * Copyright (C) 2018 Apple Inc.  All rights reserved.

There should only be one space character after the &apos;.&apos; and before the &quot;All&quot;.

&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:6
&gt; + * Copyright (C) 2018 Apple Inc.  All rights reserved.

There should only be one space character after the &apos;.&apos; and before the &quot;All&quot;.

&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:49
&gt; +    ASSERT(item);
&gt; +    static_cast&lt;SVGPathSegWithContext*&gt;(item.get())-&gt;setContextAndRole(nullptr, PathSegUndefinedRole);

Notice that RefPtr::operator*() asserts that the contained pointer is non-null before dereferencing it and returning a reference. We can take advantage of this to simplify this code to read:

static_cast&lt;SVGPathSegWithContext&amp;&gt;(*item).setContextAndRole(nullptr, PathSegUndefinedRole);

&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:56
&gt; +    for (unsigned limit = size(), index = 0; index &lt; limit; ++index)
&gt; +        clearItemContextAndRole(index);
&gt; +}

As far as I can tell it is unnecessary to clear the context and role of each item in the list in order. We can take advantage of this fact to remove a local variable and simplify this code to read:

auto count = size();
while (count--)
    clearItemContextAndRole(count);

&gt; Source/WebCore/svg/SVGPathSegListValues.h:3
&gt; + * Copyright (C) 2018 Apple Inc.  All rights reserved.

There should only be one space character after the &apos;.&apos; and before the &quot;All&quot;.

&gt; LayoutTests/svg/dom/reuse-pathseg-after-changing-d.html:1
&gt; +&lt;script&gt;

I do not see the need for this test to use quirks mode. Please add a &lt;!DOCTYPE html&gt; at the top of this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407737</commentid>
    <comment_count>8</comment_count>
      <attachid>336134</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-03-20 11:35:45 -0700</bug_when>
    <thetext>Comment on attachment 336134
Patch

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

&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:46
&gt; +    ASSERT(index &lt; size());

This is redundant. I am sure Vector&lt;&gt; asserts for out-of-bound.

&gt;&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:56
&gt;&gt; +}
&gt; 
&gt; As far as I can tell it is unnecessary to clear the context and role of each item in the list in order. We can take advantage of this fact to remove a local variable and simplify this code to read:
&gt; 
&gt; auto count = size();
&gt; while (count--)
&gt;     clearItemContextAndRole(count);

Absolutely. That for loop is confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407786</commentid>
    <comment_count>9</comment_count>
      <attachid>336012</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-03-20 13:46:22 -0700</bug_when>
    <thetext>Comment on attachment 336012
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        the path, but the path couldn&apos;t find it.
&gt; 
&gt; I do not think this is the right approach to fix this bug. After changing the d poverty of the SVGPathElement, the relationship between the old SVGPathSeg and the animated tear off should be removed. The change here is accepting this bug because the assertion is removed and it is adding the new assumption: If the SVGPathSeg is linked to an animated property tear off but the animated property tear off does not have a link back to SVGPathSeg, then this is okay. 
&gt; 
&gt; I think we need to break the relationship between the old SVGPathSeg and its animated tear off if the animated tear off is going to delete it from its list. How about adding this code to SVGPathElement::svgAttributeChanged()
&gt; 
&gt;             buildSVGPathSegListValuesFromByteStream(m_pathByteStream, *this, newList, UnalteredParsing);
&gt;             for (auto&amp; pathSeg :  m_pathSegList.value) {
&gt;                 SVGPathSegWithContext* itemWithContext = static_cast&lt;SVGPathSegWithContext*&gt;(pathSeg.get());
&gt;                 itemWithContext-&gt;setContextAndRole(this, PathSegUndefinedRole);
&gt;             }
&gt;             m_pathSegList.value = WTFMove(newList);
&gt; 
&gt; This should break the relationship between the old SVGPathSeg and the animated tear off object. When SVGPathSegList::processIncomingListItemValue() is called to reinsert the same SVGPathSeg, it will make an early return because if (!animatedPropertyOfItem) is true. When adding the SVGPathSeg the first time, SVGPathSegList::processIncomingListItemValue() makes the same early return because the role of the SVGPathSeg is not set when it calls newItemWithContext-&gt;animatedProperty().

This is what I originally implemented but then I realised it wasn&apos;t necessary (unless I missed something).

The SVGPathSeg has a weak pointer back to the path, so it&apos;s not holding ownership. The DOM-side interface does not reference the path, or the pathseg, so that&apos;s ok too. The only thing keeping the SVGPathSeg alive is the JS reference. The Path keeps the same SVGPathSegList object, and just changes its underlying values.

I looked through the interfaces and the only place where we use the back reference is here, when we are trying to insert the SVGPathSeg into another path (or in this case, the same path).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407798</commentid>
    <comment_count>10</comment_count>
      <attachid>336152</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-20 14:34:48 -0700</bug_when>
    <thetext>Created attachment 336152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407807</commentid>
    <comment_count>11</comment_count>
      <attachid>336134</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-20 14:44:40 -0700</bug_when>
    <thetext>Comment on attachment 336134
Patch

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

&gt;&gt; Source/WebCore/svg/SVGPathElement.cpp:262
&gt;&gt; +            m_pathSegList.value = WTFMove(newList);
&gt; 
&gt; Does it ever make sense to copy-construct, copy-assign, move-assign, or move construct a SVGPathSegListValues and not clear the context and roles of all its existing elements before copying or moving the new elements into it? If it never makes sense then I suggest we override these operators of SVGPathSegListValues to do this for us.

I thought about but this change I did not want to do it because of two reasons:

(1) The change is more involving. I have to override the copy and move assignments. I have to define the copy the move contractor since the copy and move assignments will delete them. I have to override the clear() method as well.
(2) Calling clearContextAndRoles() from the copy and move assignments does not make the solution complete. clearItemContextAndRole() has to still be called from SVGPathSegList::replaceItem() and SVGPathSegList::removeItem(). There is nothing I can override to call clearItemContextAndRole() implicitly.

But the suggested change is done anyway although I do not like it much.

&gt;&gt; Source/WebCore/svg/SVGPathSegList.cpp:3
&gt;&gt; + * Copyright (C) 2018 Apple Inc.  All rights reserved.
&gt; 
&gt; There should only be one space character after the &apos;.&apos; and before the &quot;All&quot;.

Done.

&gt;&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:6
&gt;&gt; + * Copyright (C) 2018 Apple Inc.  All rights reserved.
&gt; 
&gt; There should only be one space character after the &apos;.&apos; and before the &quot;All&quot;.

Done.

&gt;&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:46
&gt;&gt; +    ASSERT(index &lt; size());
&gt; 
&gt; This is redundant. I am sure Vector&lt;&gt; asserts for out-of-bound.

The assertion is removed since Vector::at() makes the same assertion.

&gt;&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:49
&gt;&gt; +    static_cast&lt;SVGPathSegWithContext*&gt;(item.get())-&gt;setContextAndRole(nullptr, PathSegUndefinedRole);
&gt; 
&gt; Notice that RefPtr::operator*() asserts that the contained pointer is non-null before dereferencing it and returning a reference. We can take advantage of this to simplify this code to read:
&gt; 
&gt; static_cast&lt;SVGPathSegWithContext&amp;&gt;(*item).setContextAndRole(nullptr, PathSegUndefinedRole);

Done.

&gt;&gt;&gt; Source/WebCore/svg/SVGPathSegListValues.cpp:56
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; As far as I can tell it is unnecessary to clear the context and role of each item in the list in order. We can take advantage of this fact to remove a local variable and simplify this code to read:
&gt;&gt; 
&gt;&gt; auto count = size();
&gt;&gt; while (count--)
&gt;&gt;     clearItemContextAndRole(count);
&gt; 
&gt; Absolutely. That for loop is confusing.

Done. It is true that the while-loop removes the local variable. But I don&apos;t think the for-loop was confusing :).

&gt;&gt; Source/WebCore/svg/SVGPathSegListValues.h:3
&gt;&gt; + * Copyright (C) 2018 Apple Inc.  All rights reserved.
&gt; 
&gt; There should only be one space character after the &apos;.&apos; and before the &quot;All&quot;.

Done.

&gt;&gt; LayoutTests/svg/dom/reuse-pathseg-after-changing-d.html:1
&gt;&gt; +&lt;script&gt;
&gt; 
&gt; I do not see the need for this test to use quirks mode. Please add a &lt;!DOCTYPE html&gt; at the top of this file.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407821</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-20 15:01:33 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #9)
&gt; Comment on attachment 336012 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336012&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:15
&gt; &gt;&gt; +        the path, but the path couldn&apos;t find it.
&gt; &gt; 
&gt; &gt; I do not think this is the right approach to fix this bug. After changing the d poverty of the SVGPathElement, the relationship between the old SVGPathSeg and the animated tear off should be removed. The change here is accepting this bug because the assertion is removed and it is adding the new assumption: If the SVGPathSeg is linked to an animated property tear off but the animated property tear off does not have a link back to SVGPathSeg, then this is okay. 
&gt; &gt; 
&gt; &gt; I think we need to break the relationship between the old SVGPathSeg and its animated tear off if the animated tear off is going to delete it from its list. How about adding this code to SVGPathElement::svgAttributeChanged()
&gt; &gt; 
&gt; &gt;             buildSVGPathSegListValuesFromByteStream(m_pathByteStream, *this, newList, UnalteredParsing);
&gt; &gt;             for (auto&amp; pathSeg :  m_pathSegList.value) {
&gt; &gt;                 SVGPathSegWithContext* itemWithContext = static_cast&lt;SVGPathSegWithContext*&gt;(pathSeg.get());
&gt; &gt;                 itemWithContext-&gt;setContextAndRole(this, PathSegUndefinedRole);
&gt; &gt;             }
&gt; &gt;             m_pathSegList.value = WTFMove(newList);
&gt; &gt; 
&gt; &gt; This should break the relationship between the old SVGPathSeg and the animated tear off object. When SVGPathSegList::processIncomingListItemValue() is called to reinsert the same SVGPathSeg, it will make an early return because if (!animatedPropertyOfItem) is true. When adding the SVGPathSeg the first time, SVGPathSegList::processIncomingListItemValue() makes the same early return because the role of the SVGPathSeg is not set when it calls newItemWithContext-&gt;animatedProperty().
&gt; 
&gt; This is what I originally implemented but then I realised it wasn&apos;t
&gt; necessary (unless I missed something).
&gt; 
&gt; The SVGPathSeg has a weak pointer back to the path, so it&apos;s not holding
&gt; ownership. The DOM-side interface does not reference the path, or the
&gt; pathseg, so that&apos;s ok too. The only thing keeping the SVGPathSeg alive is
&gt; the JS reference. The Path keeps the same SVGPathSegList object, and just
&gt; changes its underlying values.
&gt; 
&gt; I looked through the interfaces and the only place where we use the back
&gt; reference is here, when we are trying to insert the SVGPathSeg into another
&gt; path (or in this case, the same path).

Two things I noticed:

-- SVGPathSegList::replaceItem() and SVGPathSegList::removeItem() clears the context and the role of the replaced/removed item. SVGPathSegList::clear() clears the context and the roles of all the removed items. So I think it makes sense to do the same thing when the whole list is replaced by another list as a the result of changing the &apos;d&apos; attribute of the path element.

-- When SVGPathSegList::processIncomingListItemValue() is called the first time for adding an SVGPathSeg, it makes an early return because SVGPathSegWithContext::animatedProperty() returns nullptr. The reason for having a nullptr animatedProperty() is the context and the role is not set. But before SVGPathSegList::processIncomingListItemValue() returns, it sets the context and the role. If SVGPathSegWithContext::animatedProperty() is called after that point, it will return the wrapper cache lookup result. If this SVGPathSeg is removed from the SVGPathSegList then re-added, its state has to be reset such that SVGPathSegList::processIncomingListItemValue() should behave the same way when it is first added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408126</commentid>
    <comment_count>13</comment_count>
      <attachid>336222</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-03-21 12:38:29 -0700</bug_when>
    <thetext>Created attachment 336222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408135</commentid>
    <comment_count>14</comment_count>
      <attachid>336222</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-21 13:15:00 -0700</bug_when>
    <thetext>Comment on attachment 336222
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408196</commentid>
    <comment_count>15</comment_count>
      <attachid>336222</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-21 15:22:51 -0700</bug_when>
    <thetext>Comment on attachment 336222
Patch

Clearing flags on attachment: 336222

Committed r229830: &lt;https://trac.webkit.org/changeset/229830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408197</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-21 15:22:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336012</attachid>
            <date>2018-03-17 14:36:58 -0700</date>
            <delta_ts>2018-03-19 15:46:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183723-20180318083657.patch</filename>
            <type>text/plain</type>
            <size>4641</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMyODg5NTRiNDM0OGYx
MTQ2YmNiOWNiNjk1YmQxZjcyNzI2MjJhMy4uNTk0NmVmNTczMjliMjE5MThhZjkwZDQ2MTNkM2Yy
ZjY2YTkwMWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTAzLTE3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyByZXVzZSBvZiBhIFNW
R1BhdGhTZWcgYWZ0ZXIgdGhlIHBhdGgncyBkIGF0dHJpYnV0ZSBoYXMgYmVlbiByZXNldAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzIzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zODUxNzg3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHNldHRpbmcgdGhlICJkIiBhdHRyaWJ1dGUgZGly
ZWN0bHkgb24gYSBwYXRoLCB3ZSByZWJ1aWxkCisgICAgICAgIHRoZSBsaXN0IG9mIHBhdGggc2Vn
bWVudHMgaGVsZCBmb3IgY3JlYXRpbmcgdGhlIHByb3BlcnR5IHRlYXIKKyAgICAgICAgb2ZmLiBU
aGlzIG1lYW50IHRoYXQgYSBwYXRoIHNlZ21lbnQgaGVsZCBiZWZvcmUgdGhlICJkIiBhdHRyaWJ1
dGUKKyAgICAgICAgd2FzIGNoYW5nZWQgc3RpbGwgaGFkIGEgd2VhayByZWZlcmVuY2UgdG8gdGhl
IHBhdGgsIGV2ZW4gdGhvdWdoCisgICAgICAgIGl0IGhhZCBiZWVuIHJlbW92ZWQuIFRoaXMgY2F1
c2VkIGEgcHJvYmxlbSBpZiB3ZSB0cmllZCB0bworICAgICAgICBpbnNlcnQgaXQgYWdhaW4sIGJl
Y2F1c2UgdGhlIHNlZ21lbnQgc3RpbGwgdGhvdWdodCBpdCB3YXMgaW4KKyAgICAgICAgdGhlIHBh
dGgsIGJ1dCB0aGUgcGF0aCBjb3VsZG4ndCBmaW5kIGl0LgorCisgICAgICAgIFRlc3Q6IHN2Zy9k
b20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLmh0bWwKKworICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6cHJv
Y2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZSk6IElmCisgICAgICAgIHRoZSBzZWdtZW50IHJlYWxs
eSBpc24ndCBpbiB0aGUgbGlzdCBvZiBjdXJyZW50IHNlZ21lbnRzLAorICAgICAgICB0aGVuIGl0
IGlzIG9rIHRvIGluc2VydCBpdC4KKwogMjAxOC0wMy0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNjZXNzaWJsZSBkaXNt
aXNzIGFjdGlvbiBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCmluZGV4
IGU1Y2NjOWMwZDc4NjRlYWU2NzE1MTkyMGYyZDAxNmNlZDMwZjcwMmUuLmQyNTFkYTg4OTVkMTA2
NTg5MWIyZGNhNGFkNjllOGM0NTc5MDViZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0LmNwcApAQCAtOTgsMTMgKzk4LDEzIEBAIGJvb2wgU1ZHUGF0aFNlZ0xpc3Q6OnByb2Nlc3NJ
bmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtLCB1CiAgICAg
Ym9vbCBsaXZlc0luT3RoZXJMaXN0ID0gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1h
dGVkUHJvcGVydHk7CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY+IHByb3BlcnR5VGVhck9mZiA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4oYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSk7CiAgICAg
aW50IGluZGV4VG9SZW1vdmUgPSBwcm9wZXJ0eVRlYXJPZmYtPmZpbmRJdGVtKG5ld0l0ZW0uZ2V0
KCkpOwotICAgIEFTU0VSVChpbmRleFRvUmVtb3ZlICE9IC0xKTsKKyAgICBpZiAoaW5kZXhUb1Jl
bW92ZSA+PSAwKSB7CisgICAgICAgIC8vIERvIG5vdCByZW1vdmUgbmV3SXRlbSBpZiBhbHJlYWR5
IGluIHRoaXMgbGlzdCBhdCB0aGUgdGFyZ2V0IGluZGV4LgorICAgICAgICBpZiAoIWxpdmVzSW5P
dGhlckxpc3QgJiYgaW5kZXhUb01vZGlmeSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhU
b1JlbW92ZSkgPT0gKmluZGV4VG9Nb2RpZnkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyBEbyBub3QgcmVtb3ZlIG5ld0l0ZW0gaWYgYWxyZWFkeSBpbiB0aGlzIGxpc3QgYXQg
dGhlIHRhcmdldCBpbmRleC4KLSAgICBpZiAoIWxpdmVzSW5PdGhlckxpc3QgJiYgaW5kZXhUb01v
ZGlmeSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhUb1JlbW92ZSkgPT0gKmluZGV4VG9N
b2RpZnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHByb3BlcnR5VGVhck9mZi0+cmVt
b3ZlSXRlbUZyb21MaXN0KGluZGV4VG9SZW1vdmUsIGxpdmVzSW5PdGhlckxpc3QpOworICAgICAg
ICBwcm9wZXJ0eVRlYXJPZmYtPnJlbW92ZUl0ZW1Gcm9tTGlzdChpbmRleFRvUmVtb3ZlLCBsaXZl
c0luT3RoZXJMaXN0KTsKKyAgICB9CiAKICAgICBpZiAoIWluZGV4VG9Nb2RpZnkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI0YjE4NDQzMjJmYzM0MzkyZGU3MzdjY2ZjNzZkYzE3Nzdj
MTA3YWYuLjRjYjBjYzBkYjJmOGNmNDQzMDU4YTE0NDE0MjQwNGYyNzk2ZGI4ODYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxOC0wMy0xNyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsb3cgcmV1c2Ugb2YgYSBTVkdQYXRoU2VnIGFmdGVyIHRoZSBwYXRoJ3Mg
ZCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MzcyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg1MTc4
NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHN2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLmh0bWw6
IEFkZGVkLgorCiAyMDE4LTAzLTE0ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyB0ZXN0IGdhcmRlbmluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFu
Z2luZy1kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmI5MTNiNDZjYTYzMzJjNWQ2YzA5NGM5
ODdkMWExNzJlZDYwMThjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9y
ZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAK
K1RoaXMgc2hvdWxkIG5vdCBjcmFzaC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20v
cmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9t
L3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNWM2Mzcw
NmMwYzljYmZhMWRhNDY2OTZkNjVmNmNhY2Y5NjRmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBjb25zdCBzdmducyA9ICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI7CisgICAgbGV0IHBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoc3ZnbnMsICJwYXRoIik7CisgICAgbGV0IHBhdGhTZWdMaXN0ID0gcGF0aC5wYXRoU2VnTGlz
dDsKKyAgICBsZXQgcGF0aFNlZyA9IHBhdGguY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Nt
b290aEFicygwLCAwLCAxLCAxKTsKKyAgICBwYXRoU2VnTGlzdC5pbnNlcnRJdGVtQmVmb3JlKHBh
dGhTZWcsIDEpOworICAgIHBhdGguc2V0QXR0cmlidXRlKCJkIiwgIk0gMCAwIik7CisgICAgcGF0
aFNlZ0xpc3QuaW5zZXJ0SXRlbUJlZm9yZShwYXRoU2VnLCAwKTsKKzwvc2NyaXB0PgorPHA+VGhp
cyBzaG91bGQgbm90IGNyYXNoLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336081</attachid>
            <date>2018-03-19 15:46:18 -0700</date>
            <delta_ts>2018-03-20 10:55:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183723-20180319154617.patch</filename>
            <type>text/plain</type>
            <size>8151</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAzLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzY29ubmVj
dCB0aGUgU1ZHUGF0aFNlZ0xpc3QgaXRlbXMgZnJvbSB0aGVpciBTVkdQYXRoRWxlbWVudCBiZWZv
cmUgcmVidWlsZGluZyBhIG5ldyBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM3MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4NTE3ODcx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
c2V0dGluZyB0aGUgImQiIGF0dHJpYnV0ZSBkaXJlY3RseSBvbiBhIHBhdGgsIHdlIHJlYnVpbGQg
dGhlIGxpc3QKKyAgICAgICAgb2YgcGF0aCBzZWdtZW50cyBoZWxkIGZvciBjcmVhdGluZyB0aGUg
cHJvcGVydHkgdGVhciBvZmYuIFRoZSBvbGQgcGF0aAorICAgICAgICBzZWdtZW50cyBzaG91bGQg
YmUgZGlzY29ubmVjdGVkIGZyb20gdGhlIHBhdGggZWxlbWVudC4gV2UgYWxyZWFkeSBkbyAKKyAg
ICAgICAgdGhhdCB3aGVuIGEgcGF0aCBzZWdtZW50IGlzIHJlcGxhY2VkIG9yIHJlbW92ZWQuCisK
KyAgICAgICAgVGVzdDogc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQuaHRt
bAorCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFNlZ0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmNsZWFy
Q29udGV4dEFuZFJvbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpyZXBs
YWNlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6cmVtb3ZlSXRlbSk6
CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhckl0ZW1Db250ZXh0QW5kUm9sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXJDb250ZXh0QW5kUm9sZXMp
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oOgorCiAyMDE4LTAzLTE5ICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6
b29tIG1vZGVdIFJlcXVpcmUgZnVsbHNjcmVlbiBmb3IgdmlkZW8gcGxheWJhY2sKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjI5NzExKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4
LDcgKzI1OCw4IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAg
ICAgICAgaWYgKG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgJiYgIVNWR0FuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHUGF0aEVsZW1lbnQsIFNWR0FuaW1hdGVkUGF0aFNl
Z0xpc3RQcm9wZXJ0eVRlYXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSktPmlzQW5pbWF0aW5n
KCkpIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzIG5ld0xpc3QoUGF0aFNlZ1Vu
YWx0ZXJlZFJvbGUpOwogICAgICAgICAgICAgYnVpbGRTVkdQYXRoU2VnTGlzdFZhbHVlc0Zyb21C
eXRlU3RyZWFtKG1fcGF0aEJ5dGVTdHJlYW0sICp0aGlzLCBuZXdMaXN0LCBVbmFsdGVyZWRQYXJz
aW5nKTsKLSAgICAgICAgICAgIG1fcGF0aFNlZ0xpc3QudmFsdWUgPSBuZXdMaXN0OworICAgICAg
ICAgICAgbV9wYXRoU2VnTGlzdC52YWx1ZS5jbGVhckNvbnRleHRBbmRSb2xlcygpOworICAgICAg
ICAgICAgbV9wYXRoU2VnTGlzdC52YWx1ZSA9IFdURk1vdmUobmV3TGlzdCk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAocmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdC5jcHAJKHJldmlzaW9uIDIyOTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDggKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdm9pZCBTVkdQYXRoU2VnTGlzdDo6Y2xlYXJDb250ZXh0QW5kUm9sZXMoKQogewogICAg
IEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogKm1fdmFsdWVzKQotICAg
ICAgICBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihpdGVtLmdldCgpKS0+c2V0
Q29udGV4dEFuZFJvbGUobnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIG1fdmFs
dWVzLT5jbGVhckNvbnRleHRBbmRSb2xlcygpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTVkdQ
YXRoU2VnTGlzdDo6Y2xlYXIoKQpAQCAtNTAsMjQgKzUwLDE5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0
cjxTVkdQYXRoU2VnPj4gU1ZHUGF0aFMKIAogRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1BhdGhTZWc+
PiBTVkdQYXRoU2VnTGlzdDo6cmVwbGFjZUl0ZW0oUmVmPFNWR1BhdGhTZWc+JiYgbmV3SXRlbSwg
dW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgaWYgKGluZGV4IDwgbV92YWx1ZXMtPnNpemUoKSkgewot
ICAgICAgICBMaXN0SXRlbVR5cGUgcmVwbGFjZWRJdGVtID0gbV92YWx1ZXMtPmF0KGluZGV4KTsK
LSAgICAgICAgQVNTRVJUKHJlcGxhY2VkSXRlbSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNWR1Bh
dGhTZWdXaXRoQ29udGV4dCo+KHJlcGxhY2VkSXRlbS5nZXQoKSktPnNldENvbnRleHRBbmRSb2xl
KG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAgICB9Ci0KKyAgICBpZiAoaW5kZXgg
PCBtX3ZhbHVlcy0+c2l6ZSgpKQorICAgICAgICBtX3ZhbHVlcy0+Y2xlYXJJdGVtQ29udGV4dEFu
ZFJvbGUoaW5kZXgpOwogICAgIHJldHVybiBCYXNlOjpyZXBsYWNlSXRlbVZhbHVlcyhXVEZNb3Zl
KG5ld0l0ZW0pLCBpbmRleCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdQYXRoU2VnPj4g
U1ZHUGF0aFNlZ0xpc3Q6OnJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCiB7CisgICAgaWYgKGlu
ZGV4IDwgbV92YWx1ZXMtPnNpemUoKSkKKyAgICAgICAgbV92YWx1ZXMtPmNsZWFySXRlbUNvbnRl
eHRBbmRSb2xlKGluZGV4KTsKICAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OnJlbW92ZUl0ZW1WYWx1
ZXMoaW5kZXgpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgYXV0byByZW1vdmVkSXRlbSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKLSAgICBpZiAocmVtb3ZlZEl0ZW0pCi0gICAgICAgIHN0YXRpY19jYXN0PFNWR1BhdGhT
ZWdXaXRoQ29udGV4dCY+KCpyZW1vdmVkSXRlbSkuc2V0Q29udGV4dEFuZFJvbGUobnVsbHB0ciwg
UGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIHJldHVybiBXVEZNb3ZlKHJlbW92ZWRJdGVtKTsK
KyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogfQogCiBTVkdQYXRoRWxl
bWVudCogU1ZHUGF0aFNlZ0xpc3Q6OmNvbnRleHRFbGVtZW50KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjI5NzEx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDAs
NCArNDEsMTggQEAgdm9pZCBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y29tbWl0Q2hhbmdlKAogICAg
IGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxlbWVudCkucGF0aFNlZ0xpc3RDaGFu
Z2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7CiB9CiAKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXM6OmNsZWFySXRlbUNvbnRleHRBbmRSb2xlKHVuc2lnbmVkIGluZGV4KQoreworICAgIEFT
U0VSVChpbmRleCA8IHNpemUoKSk7CisgICAgYXV0byYgaXRlbSA9IGF0KGluZGV4KTsKKyAgICBB
U1NFUlQoaXRlbSk7CisgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Kj4oaXRl
bS5nZXQoKSktPnNldENvbnRleHRBbmRSb2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xl
KTsKK30KKyAgICAKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM6OmNsZWFyQ29udGV4dEFuZFJv
bGVzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGxpbWl0ID0gc2l6ZSgpLCBpbmRleCA9IDA7IGlu
ZGV4IDwgbGltaXQ7ICsraW5kZXgpCisgICAgICAgIGNsZWFySXRlbUNvbnRleHRBbmRSb2xlKGlu
ZGV4KTsKK30KKyAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dFZhbHVlcy5oCShyZXZpc2lvbiAyMjk3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC00Myw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmFsdWVBc1N0
cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4
dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24pOworICAgIHZvaWQgY2xlYXJJdGVtQ29udGV4dEFu
ZFJvbGUodW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsK
IAogcHJpdmF0ZToKICAgICBTVkdQYXRoU2VnUm9sZSBtX3JvbGU7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMjk3MTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0wMy0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIERpc2Nvbm5lY3QgdGhlIFNWR1BhdGhTZWdMaXN0IGl0ZW1z
IGZyb20gdGhlaXIgU1ZHUGF0aEVsZW1lbnQgYmVmb3JlIHJlYnVpbGRpbmcgYSBuZXcgbGlzdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzIzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODUxNzg3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1j
aGFuZ2luZy1kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9yZXVzZS1w
YXRoc2VnLWFmdGVyLWNoYW5naW5nLWQuaHRtbDogQWRkZWQuCisKIDIwMTgtMDMtMTcgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aE5dIEltcGxl
bWVudCBhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
b20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC1l
eHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXVzZS1w
YXRoc2VnLWFmdGVyLWNoYW5naW5nLWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEgQEAKK1RoaXMgc2hvdWxkIG5vdCBjcmFzaC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
b20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hh
bmdpbmctZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICBjb25zdCBzdmducyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7CisgICAg
bGV0IHBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnbnMsICJwYXRoIik7CisgICAg
bGV0IHBhdGhTZWdMaXN0ID0gcGF0aC5wYXRoU2VnTGlzdDsKKyAgICBsZXQgcGF0aFNlZyA9IHBh
dGguY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicygwLCAwLCAxLCAxKTsKKyAg
ICBwYXRoU2VnTGlzdC5pbnNlcnRJdGVtQmVmb3JlKHBhdGhTZWcsIDEpOworICAgIHBhdGguc2V0
QXR0cmlidXRlKCJkIiwgIk0gMCAwIik7CisgICAgcGF0aFNlZ0xpc3QuaW5zZXJ0SXRlbUJlZm9y
ZShwYXRoU2VnLCAwKTsKKzwvc2NyaXB0PgorPHA+VGhpcyBzaG91bGQgbm90IGNyYXNoLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336134</attachid>
            <date>2018-03-20 10:55:47 -0700</date>
            <delta_ts>2018-03-20 14:34:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183723-20180320105547.patch</filename>
            <type>text/plain</type>
            <size>8140</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTc2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAzLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzY29ubmVj
dCB0aGUgU1ZHUGF0aFNlZ0xpc3QgaXRlbXMgZnJvbSB0aGVpciBTVkdQYXRoRWxlbWVudCBiZWZv
cmUgcmVidWlsZGluZyBhIG5ldyBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM3MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4NTE3ODcx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBXaGVuIHNl
dHRpbmcgdGhlICJkIiBhdHRyaWJ1dGUgZGlyZWN0bHkgb24gYSBwYXRoLCB3ZSByZWJ1aWxkIHRo
ZSBsaXN0CisgICAgICAgIG9mIHBhdGggc2VnbWVudHMgaGVsZCBmb3IgY3JlYXRpbmcgdGhlIHBy
b3BlcnR5IHRlYXIgb2ZmLiBUaGUgb2xkIHBhdGgKKyAgICAgICAgc2VnbWVudHMgbmVlZCB0byBn
ZXQgZGlzY29ubmVjdGVkIGZyb20gdGhlIHBhdGggZWxlbWVudC4gV2UgYWxyZWFkeSBkbyAKKyAg
ICAgICAgdGhhdCB3aGVuIGEgcGF0aCBzZWdtZW50IGlzIHJlcGxhY2VkIG9yIHJlbW92ZWQuCisK
KyAgICAgICAgVGVzdDogc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQuaHRt
bAorCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFNlZ0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmNsZWFy
Q29udGV4dEFuZFJvbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpyZXBs
YWNlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6cmVtb3ZlSXRlbSk6
CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhckl0ZW1Db250ZXh0QW5kUm9sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXJDb250ZXh0QW5kUm9sZXMp
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oOgorCiAyMDE4LTAzLTE5ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5IHNv
bWUgU0RLIGNoZWNrcyBpbiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyOTc2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3
ICsyNTgsOCBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAg
ICAgIGlmIChtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplICYmICFTVkdBbmltYXRlZFBy
b3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmPih0aGlzLCBkUHJvcGVydHlJbmZvKCkpLT5pc0FuaW1hdGluZygp
KSB7CiAgICAgICAgICAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBuZXdMaXN0KFBhdGhTZWdVbmFs
dGVyZWRSb2xlKTsKICAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RWYWx1ZXNGcm9tQnl0
ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLCAqdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2lu
Zyk7Ci0gICAgICAgICAgICBtX3BhdGhTZWdMaXN0LnZhbHVlID0gbmV3TGlzdDsKKyAgICAgICAg
ICAgIG1fcGF0aFNlZ0xpc3QudmFsdWUuY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKyAgICAgICAg
ICAgIG1fcGF0aFNlZ0xpc3QudmFsdWUgPSBXVEZNb3ZlKG5ld0xpc3QpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHJlbmRlcmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuY3BwCShyZXZpc2lvbiAyMjk3NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSw4ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHZvaWQgU1ZHUGF0aFNlZ0xpc3Q6OmNsZWFyQ29udGV4dEFuZFJvbGVzKCkKIHsKICAgICBB
U1NFUlQobV92YWx1ZXMpOwotICAgIGZvciAoYXV0byYgaXRlbSA6ICptX3ZhbHVlcykKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Kj4oaXRlbS5nZXQoKSktPnNldENv
bnRleHRBbmRSb2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBtX3ZhbHVl
cy0+Y2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gU1ZHUGF0
aFNlZ0xpc3Q6OmNsZWFyKCkKQEAgLTUwLDI0ICs1MCwxOSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8
U1ZHUGF0aFNlZz4+IFNWR1BhdGhTCiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdQYXRoU2VnPj4g
U1ZHUGF0aFNlZ0xpc3Q6OnJlcGxhY2VJdGVtKFJlZjxTVkdQYXRoU2VnPiYmIG5ld0l0ZW0sIHVu
c2lnbmVkIGluZGV4KQogewotICAgIGlmIChpbmRleCA8IG1fdmFsdWVzLT5zaXplKCkpIHsKLSAg
ICAgICAgTGlzdEl0ZW1UeXBlIHJlcGxhY2VkSXRlbSA9IG1fdmFsdWVzLT5hdChpbmRleCk7Ci0g
ICAgICAgIEFTU0VSVChyZXBsYWNlZEl0ZW0pOwotICAgICAgICBzdGF0aWNfY2FzdDxTVkdQYXRo
U2VnV2l0aENvbnRleHQqPihyZXBsYWNlZEl0ZW0uZ2V0KCkpLT5zZXRDb250ZXh0QW5kUm9sZShu
dWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgfQotCisgICAgaWYgKGluZGV4IDwg
bV92YWx1ZXMtPnNpemUoKSkKKyAgICAgICAgbV92YWx1ZXMtPmNsZWFySXRlbUNvbnRleHRBbmRS
b2xlKGluZGV4KTsKICAgICByZXR1cm4gQmFzZTo6cmVwbGFjZUl0ZW1WYWx1ZXMoV1RGTW92ZShu
ZXdJdGVtKSwgaW5kZXgpOwogfQogCiBFeGNlcHRpb25PcjxSZWZQdHI8U1ZHUGF0aFNlZz4+IFNW
R1BhdGhTZWdMaXN0OjpyZW1vdmVJdGVtKHVuc2lnbmVkIGluZGV4KQogeworICAgIGlmIChpbmRl
eCA8IG1fdmFsdWVzLT5zaXplKCkpCisgICAgICAgIG1fdmFsdWVzLT5jbGVhckl0ZW1Db250ZXh0
QW5kUm9sZShpbmRleCk7CiAgICAgYXV0byByZXN1bHQgPSBCYXNlOjpyZW1vdmVJdGVtVmFsdWVz
KGluZGV4KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIGF1dG8gcmVtb3ZlZEl0ZW0gPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0gICAgaWYgKHJlbW92ZWRJdGVtKQotICAgICAgICBzdGF0aWNfY2FzdDxTVkdQYXRoU2Vn
V2l0aENvbnRleHQmPigqcmVtb3ZlZEl0ZW0pLnNldENvbnRleHRBbmRSb2xlKG51bGxwdHIsIFBh
dGhTZWdVbmRlZmluZWRSb2xlKTsKLSAgICByZXR1cm4gV1RGTW92ZShyZW1vdmVkSXRlbSk7Cisg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAogU1ZHUGF0aEVsZW1l
bnQqIFNWR1BhdGhTZWdMaXN0Ojpjb250ZXh0RWxlbWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIyOTc2NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDQg
KzQxLDE4IEBAIHZvaWQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZSgKICAgICBk
b3duY2FzdDxTVkdQYXRoRWxlbWVudD4oY29udGV4dEVsZW1lbnQpLnBhdGhTZWdMaXN0Q2hhbmdl
ZChtX3JvbGUsIGxpc3RNb2RpZmljYXRpb24pOwogfQogCit2b2lkIFNWR1BhdGhTZWdMaXN0VmFs
dWVzOjpjbGVhckl0ZW1Db250ZXh0QW5kUm9sZSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NF
UlQoaW5kZXggPCBzaXplKCkpOworICAgIGF1dG8mIGl0ZW0gPSBhdChpbmRleCk7CisgICAgQVNT
RVJUKGl0ZW0pOworICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCo+KGl0ZW0u
Z2V0KCkpLT5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7
Cit9CisgICAgCit2b2lkIFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhckNvbnRleHRBbmRSb2xl
cygpCit7CisgICAgZm9yICh1bnNpZ25lZCBsaW1pdCA9IHNpemUoKSwgaW5kZXggPSAwOyBpbmRl
eCA8IGxpbWl0OyArK2luZGV4KQorICAgICAgICBjbGVhckl0ZW1Db250ZXh0QW5kUm9sZShpbmRl
eCk7Cit9CisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMuaAkocmV2aXNpb24gMjI5NzY1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNDMsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJp
bmcoKSBjb25zdDsKIAogICAgIHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQmIGNvbnRleHRF
bGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uKTsKKyAgICB2b2lkIGNsZWFySXRlbUNvbnRleHRBbmRS
b2xlKHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7CiAK
IHByaXZhdGU6CiAgICAgU1ZHUGF0aFNlZ1JvbGUgbV9yb2xlOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjI5NzY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTgtMDMtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXNjb25uZWN0IHRoZSBTVkdQYXRoU2VnTGlzdCBpdGVtcyBm
cm9tIHRoZWlyIFNWR1BhdGhFbGVtZW50IGJlZm9yZSByZWJ1aWxkaW5nIGEgbmV3IGxpc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzcyMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzg1MTc4NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgICogc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5n
aW5nLWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3JldXNlLXBhdGhz
ZWctYWZ0ZXItY2hhbmdpbmctZC5odG1sOiBBZGRlZC4KKwogMjAxOC0wMy0yMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMjk3MjYgYW5kIHIyMjk3NjMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBh
dGhzZWctYWZ0ZXItY2hhbmdpbmctZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQtZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRl
ci1jaGFuZ2luZy1kLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACitU
aGlzIHNob3VsZCBub3QgY3Jhc2guCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBh
dGhzZWctYWZ0ZXItY2hhbmdpbmctZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8c2NyaXB0PgorICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgY29u
c3Qgc3ZnbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworICAgIGxldCBwYXRoID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAicGF0aCIpOworICAgIGxldCBwYXRoU2Vn
TGlzdCA9IHBhdGgucGF0aFNlZ0xpc3Q7CisgICAgbGV0IHBhdGhTZWcgPSBwYXRoLmNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMoMCwgMCwgMSwgMSk7CisgICAgcGF0aFNlZ0xp
c3QuaW5zZXJ0SXRlbUJlZm9yZShwYXRoU2VnLCAxKTsKKyAgICBwYXRoLnNldEF0dHJpYnV0ZSgi
ZCIsICJNIDAgMCIpOworICAgIHBhdGhTZWdMaXN0Lmluc2VydEl0ZW1CZWZvcmUocGF0aFNlZywg
MCk7Cis8L3NjcmlwdD4KKzxwPlRoaXMgc2hvdWxkIG5vdCBjcmFzaC48L3A+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336152</attachid>
            <date>2018-03-20 14:34:48 -0700</date>
            <delta_ts>2018-03-21 12:38:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183723-20180320143447.patch</filename>
            <type>text/plain</type>
            <size>10448</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTc3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTIwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzY29ubmVj
dCB0aGUgU1ZHUGF0aFNlZ0xpc3QgaXRlbXMgZnJvbSB0aGVpciBTVkdQYXRoRWxlbWVudCBiZWZv
cmUgcmVidWlsZGluZyBhIG5ldyBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM3MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4NTE3ODcx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
c2V0dGluZyB0aGUgImQiIGF0dHJpYnV0ZSBkaXJlY3RseSBvbiBhIHBhdGgsIHdlIHJlYnVpbGQg
dGhlIGxpc3QKKyAgICAgICAgb2YgcGF0aCBzZWdtZW50cyBoZWxkIGZvciBjcmVhdGluZyB0aGUg
cHJvcGVydHkgdGVhciBvZmYuIFRoZSBvbGQgcGF0aAorICAgICAgICBzZWdtZW50cyBuZWVkIHRv
IGdldCBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgcGF0aCBlbGVtZW50LiBXZSBhbHJlYWR5IGRvIAor
ICAgICAgICB0aGF0IHdoZW4gYSBwYXRoIHNlZ21lbnQgaXMgcmVwbGFjZWQgb3IgcmVtb3ZlZC4K
KworICAgICAgICBUZXN0OiBzdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC5o
dG1sCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6Y2xl
YXIpOiBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXJDb250ZXh0QW5kUm9sZXMoKQorICAgICAg
ICB3aWxsIG5vdyBiZSBjYWxsZWQgZnJvbSBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXIoKSB2
aWEgU1ZHTGlzdFByb3BlcnR5OjpjbGVhclZhbHVlcygpLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFNlZ0xpc3Q6OnJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdM
aXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpjbGVh
ckNvbnRleHRBbmRSb2xlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0
Lmg6IFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhckNvbnRleHRBbmRSb2xlcygpIHdpbGwKKyAg
ICAgICAgbm93IGJlIGNhbGxlZCBmcm9tIFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhcigpIHZp
YSBTVkdMaXN0UHJvcGVydHk6OmluaXRpYWxpemVWYWx1ZXMoKS4KKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RW
YWx1ZXM6OmNsZWFySXRlbUNvbnRleHRBbmRSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWdMaXN0VmFsdWVzOjpjbGVhckNvbnRleHRBbmRSb2xlcyk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhTZWdMaXN0VmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdFZh
bHVlczo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0VmFsdWVz
OjpjbGVhcik6CisKIDIwMTgtMDMtMjAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVwZGF0ZSB0aGUgdGltaW5nIG1vZGVsIHdo
ZW4gcGVuZGluZyB0YXNrcyBzY2hlZHVsZSBjaGFuZ2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyOTc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgsNyBAQCB2
b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgICAgIGlmIChtX3Bh
dGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplICYmICFTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29r
dXBXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmPih0aGlzLCBkUHJvcGVydHlJbmZvKCkpLT5pc0FuaW1hdGluZygpKSB7CiAgICAgICAg
ICAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBuZXdMaXN0KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsK
ICAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RWYWx1ZXNGcm9tQnl0ZVN0cmVhbShtX3Bh
dGhCeXRlU3RyZWFtLCAqdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7Ci0gICAgICAg
ICAgICBtX3BhdGhTZWdMaXN0LnZhbHVlID0gbmV3TGlzdDsKKyAgICAgICAgICAgIG1fcGF0aFNl
Z0xpc3QudmFsdWUgPSBXVEZNb3ZlKG5ld0xpc3QpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHJlbmRlcmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCShyZXZp
c2lvbiAyMjk3NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI2LDIwICsyNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgU1ZHUGF0aFNlZ0xpc3Q6OmNsZWFyQ29udGV4dEFuZFJvbGVzKCkKLXsKLSAgICBBU1NFUlQo
bV92YWx1ZXMpOwotICAgIGZvciAoYXV0byYgaXRlbSA6ICptX3ZhbHVlcykKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Kj4oaXRlbS5nZXQoKSktPnNldENvbnRleHRB
bmRSb2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLX0KLQogRXhjZXB0aW9uT3I8
dm9pZD4gU1ZHUGF0aFNlZ0xpc3Q6OmNsZWFyKCkKIHsKICAgICBBU1NFUlQobV92YWx1ZXMpOwog
ICAgIGlmIChtX3ZhbHVlcy0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwotCi0gICAg
Y2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKICAgICByZXR1cm4gQmFzZTo6Y2xlYXJWYWx1ZXMoKTsK
IH0KIApAQCAtNTAsMjQgKzQyLDE5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdQYXRoU2VnPj4g
U1ZHUGF0aFMKIAogRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1BhdGhTZWc+PiBTVkdQYXRoU2VnTGlz
dDo6cmVwbGFjZUl0ZW0oUmVmPFNWR1BhdGhTZWc+JiYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgp
CiB7Ci0gICAgaWYgKGluZGV4IDwgbV92YWx1ZXMtPnNpemUoKSkgewotICAgICAgICBMaXN0SXRl
bVR5cGUgcmVwbGFjZWRJdGVtID0gbV92YWx1ZXMtPmF0KGluZGV4KTsKLSAgICAgICAgQVNTRVJU
KHJlcGxhY2VkSXRlbSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4
dCo+KHJlcGxhY2VkSXRlbS5nZXQoKSktPnNldENvbnRleHRBbmRSb2xlKG51bGxwdHIsIFBhdGhT
ZWdVbmRlZmluZWRSb2xlKTsKLSAgICB9Ci0KKyAgICBpZiAoaW5kZXggPCBtX3ZhbHVlcy0+c2l6
ZSgpKQorICAgICAgICBtX3ZhbHVlcy0+Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUoaW5kZXgpOwog
ICAgIHJldHVybiBCYXNlOjpyZXBsYWNlSXRlbVZhbHVlcyhXVEZNb3ZlKG5ld0l0ZW0pLCBpbmRl
eCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdQYXRoU2VnPj4gU1ZHUGF0aFNlZ0xpc3Q6
OnJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCiB7CisgICAgaWYgKGluZGV4IDwgbV92YWx1ZXMt
PnNpemUoKSkKKyAgICAgICAgbV92YWx1ZXMtPmNsZWFySXRlbUNvbnRleHRBbmRSb2xlKGluZGV4
KTsKICAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OnJlbW92ZUl0ZW1WYWx1ZXMoaW5kZXgpOwogICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
YXV0byByZW1vdmVkSXRlbSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBpZiAo
cmVtb3ZlZEl0ZW0pCi0gICAgICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCY+
KCpyZW1vdmVkSXRlbSkuc2V0Q29udGV4dEFuZFJvbGUobnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5l
ZFJvbGUpOwotICAgIHJldHVybiBXVEZNb3ZlKHJlbW92ZWRJdGVtKTsKKyAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogfQogCiBTVkdQYXRoRWxlbWVudCogU1ZHUGF0aFNl
Z0xpc3Q6OmNvbnRleHRFbGVtZW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5oCShyZXZpc2lvbiAyMjk3NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03Miw3ICs3Myw2IEBAIHB1YmxpYzoKIAogICAgIEV4
Y2VwdGlvbk9yPFJlZlB0cjxTVkdQYXRoU2VnPj4gaW5pdGlhbGl6ZShSZWY8U1ZHUGF0aFNlZz4m
JiBuZXdJdGVtKQogICAgIHsKLSAgICAgICAgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKICAgICAg
ICAgcmV0dXJuIEJhc2U6OmluaXRpYWxpemVWYWx1ZXMoV1RGTW92ZShuZXdJdGVtKSk7CiAgICAg
fQogCkBAIC0xMDEsOSArMTAxLDYgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTVkdQYXRoRWxl
bWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdDsKLQotICAgIHZvaWQgY2xlYXJDb250ZXh0QW5k
Um9sZXMoKTsKLQogICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKIAogICAgIGJvb2wgaXNSZWFkT25s
eSgpIGNvbnN0IGZpbmFsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dFZhbHVlcy5jcHAJKHJldmlzaW9uIDIyOTc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnTGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNCArNDEsMTcgQEAgdm9pZCBTVkdQYXRoU2VnTGlz
dFZhbHVlczo6Y29tbWl0Q2hhbmdlKAogICAgIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250
ZXh0RWxlbWVudCkucGF0aFNlZ0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7
CiB9CiAKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM6OmNsZWFySXRlbUNvbnRleHRBbmRSb2xl
KHVuc2lnbmVkIGluZGV4KQoreworICAgIGF1dG8mIGl0ZW0gPSBhdChpbmRleCk7CisgICAgc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Jj4oKml0ZW0pLnNldENvbnRleHRBbmRSb2xl
KG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKK30KKyAgICAKK3ZvaWQgU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXM6OmNsZWFyQ29udGV4dEFuZFJvbGVzKCkKK3sKKyAgICBhdXRvIGNvdW50ID0g
c2l6ZSgpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICBjbGVhckl0ZW1Db250ZXh0QW5k
Um9sZShjb3VudCk7Cit9CisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjI5NzY5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsMTYgKzM2LDQyIEBAIGNsYXNzIFNWR1Byb3BlcnR5VGVh
ck9mZjsKIAogY2xhc3MgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgOiBwdWJsaWMgVmVjdG9yPFJlZlB0
cjxTVkdQYXRoU2VnPj4gewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8UmVmUHRy
PFNWR1BhdGhTZWc+PjsKKyAgICAKICAgICBleHBsaWNpdCBTVkdQYXRoU2VnTGlzdFZhbHVlcyhT
VkdQYXRoU2VnUm9sZSByb2xlKQogICAgICAgICA6IG1fcm9sZShyb2xlKQogICAgIHsKICAgICB9
CisgICAgCisgICAgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMmKSA9IGRlZmF1bHQ7CisgICAgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMmJikgPSBkZWZhdWx0OworICAgIAorICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzJiBvcGVy
YXRvcj0oY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIG90aGVyKQorICAgIHsKKyAgICAgICAg
Y2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1Bh
dGhTZWdMaXN0VmFsdWVzJj4oQmFzZTo6b3BlcmF0b3I9KG90aGVyKSk7CisgICAgfQorCisgICAg
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIG9wZXJhdG9yPShTVkdQYXRoU2VnTGlzdFZhbHVlcyYmIG90
aGVyKQorICAgIHsKKyAgICAgICAgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdMaXN0VmFsdWVzJj4oQmFzZTo6b3BlcmF0b3I9KFdU
Rk1vdmUob3RoZXIpKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAg
ICAgICAgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKyAgICAgICAgQmFzZTo6Y2xlYXIoKTsKKyAg
ICB9CiAKICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBjb21t
aXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24pOwor
ICAgIHZvaWQgY2xlYXJJdGVtQ29udGV4dEFuZFJvbGUodW5zaWduZWQgaW5kZXgpOwogCiBwcml2
YXRlOgorICAgIHZvaWQgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKwogICAgIFNWR1BhdGhTZWdS
b2xlIG1fcm9sZTsKIH07CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTc2OSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAzLTIw
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzY29ubmVjdCB0aGUgU1ZHUGF0aFNlZ0xpc3QgaXRlbXMgZnJvbSB0aGVpciBTVkdQYXRoRWxl
bWVudCBiZWZvcmUgcmVidWlsZGluZyBhIG5ldyBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM4NTE3ODcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmct
ZC5odG1sOiBBZGRlZC4KKwogMjAxOC0wMy0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjk3MjYgYW5kIHIyMjk3
NjMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdp
bmctZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXVz
ZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL3N2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACitUaGlzIHNob3VsZCBub3QgY3Jh
c2guCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdp
bmctZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vcmV1c2UtcGF0aHNl
Zy1hZnRlci1jaGFuZ2luZy1kLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3Zn
L2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorCTxwPlRoaXMgc2hvdWxk
IG5vdCBjcmFzaC48L3A+CisJPHNjcmlwdD4KKyAgICAJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgCWNvbnN0IHN2Z25zID0gImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKKyAgICAJbGV0IHBhdGggPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoc3ZnbnMsICJwYXRoIik7CisgICAgCWxldCBwYXRoU2VnTGlzdCA9IHBhdGgu
cGF0aFNlZ0xpc3Q7CisgICAgCWxldCBwYXRoU2VnID0gcGF0aC5jcmVhdGVTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoQWJzKDAsIDAsIDEsIDEpOworICAgIAlwYXRoU2VnTGlzdC5pbnNlcnRJ
dGVtQmVmb3JlKHBhdGhTZWcsIDEpOworICAgIAlwYXRoLnNldEF0dHJpYnV0ZSgiZCIsICJNIDAg
MCIpOworICAgIAlwYXRoU2VnTGlzdC5pbnNlcnRJdGVtQmVmb3JlKHBhdGhTZWcsIDApOworCTwv
c2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336222</attachid>
            <date>2018-03-21 12:38:29 -0700</date>
            <delta_ts>2018-03-21 15:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183723-20180321123828.patch</filename>
            <type>text/plain</type>
            <size>10842</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTIxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzY29ubmVj
dCB0aGUgU1ZHUGF0aFNlZ0xpc3QgaXRlbXMgZnJvbSB0aGVpciBTVkdQYXRoRWxlbWVudCBiZWZv
cmUgcmVidWlsZGluZyBhIG5ldyBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM3MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4NTE3ODcx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
c2V0dGluZyB0aGUgImQiIGF0dHJpYnV0ZSBkaXJlY3RseSBvbiBhIHBhdGgsIHdlIHJlYnVpbGQg
dGhlIGxpc3QKKyAgICAgICAgb2YgcGF0aCBzZWdtZW50cyBoZWxkIGZvciBjcmVhdGluZyB0aGUg
cHJvcGVydHkgdGVhciBvZmYuIFRoZSBvbGQgcGF0aAorICAgICAgICBzZWdtZW50cyBuZWVkIHRv
IGdldCBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgcGF0aCBlbGVtZW50LiBXZSBhbHJlYWR5IGRvIAor
ICAgICAgICB0aGF0IHdoZW4gYSBwYXRoIHNlZ21lbnQgaXMgcmVwbGFjZWQgb3IgcmVtb3ZlZC4K
KworICAgICAgICBUZXN0OiBzdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC5o
dG1sCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6Y2xl
YXIpOiBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXJDb250ZXh0QW5kUm9sZXMoKQorICAgICAg
ICB3aWxsIG5vdyBiZSBjYWxsZWQgZnJvbSBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXIoKSB2
aWEgU1ZHTGlzdFByb3BlcnR5OjpjbGVhclZhbHVlcygpLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFNlZ0xpc3Q6OnJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdM
aXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpjbGVh
ckNvbnRleHRBbmRSb2xlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0
Lmg6IFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhckNvbnRleHRBbmRSb2xlcygpIHdpbGwKKyAg
ICAgICAgbm93IGJlIGNhbGxlZCBmcm9tIFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhcigpIHZp
YSBTVkdMaXN0UHJvcGVydHk6OmluaXRpYWxpemVWYWx1ZXMoKS4KKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RW
YWx1ZXM6OmNsZWFySXRlbUNvbnRleHRBbmRSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWdMaXN0VmFsdWVzOjpjbGVhckNvbnRleHRBbmRSb2xlcyk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhTZWdMaXN0VmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdFZh
bHVlczo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0VmFsdWVz
OjpjbGVhcik6CisKIDIwMTgtMDMtMjEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbXBpbGUgZXJyb3Igd2hlbiBub3QgdXNpbmcgSU9TdXJmYWNlIGNh
bnZhcyBiYWNraW5nIHN0b3JlLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMjk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU4LDcgKzI1OSw3IEBAIHZv
aWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICAgICAgaWYgKG1fcGF0
aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgJiYgIVNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1
cFdyYXBwZXI8U1ZHUGF0aEVsZW1lbnQsIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSktPmlzQW5pbWF0aW5nKCkpIHsKICAgICAgICAg
ICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzIG5ld0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwog
ICAgICAgICAgICAgYnVpbGRTVkdQYXRoU2VnTGlzdFZhbHVlc0Zyb21CeXRlU3RyZWFtKG1fcGF0
aEJ5dGVTdHJlYW0sICp0aGlzLCBuZXdMaXN0LCBVbmFsdGVyZWRQYXJzaW5nKTsKLSAgICAgICAg
ICAgIG1fcGF0aFNlZ0xpc3QudmFsdWUgPSBuZXdMaXN0OworICAgICAgICAgICAgbV9wYXRoU2Vn
TGlzdC52YWx1ZSA9IFdURk1vdmUobmV3TGlzdCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
cmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHJldmlz
aW9uIDIyOTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjYsMjAgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBTVkdQYXRoU2VnTGlzdDo6Y2xlYXJDb250ZXh0QW5kUm9sZXMoKQotewotICAgIEFTU0VSVCht
X3ZhbHVlcyk7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogKm1fdmFsdWVzKQotICAgICAgICBzdGF0
aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihpdGVtLmdldCgpKS0+c2V0Q29udGV4dEFu
ZFJvbGUobnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotfQotCiBFeGNlcHRpb25Pcjx2
b2lkPiBTVkdQYXRoU2VnTGlzdDo6Y2xlYXIoKQogewogICAgIEFTU0VSVChtX3ZhbHVlcyk7CiAg
ICAgaWYgKG1fdmFsdWVzLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBj
bGVhckNvbnRleHRBbmRSb2xlcygpOwogICAgIHJldHVybiBCYXNlOjpjbGVhclZhbHVlcygpOwog
fQogCkBAIC01MCwyNCArNDIsMTkgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1BhdGhTZWc+PiBT
VkdQYXRoUwogCiBFeGNlcHRpb25PcjxSZWZQdHI8U1ZHUGF0aFNlZz4+IFNWR1BhdGhTZWdMaXN0
OjpyZXBsYWNlSXRlbShSZWY8U1ZHUGF0aFNlZz4mJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkK
IHsKLSAgICBpZiAoaW5kZXggPCBtX3ZhbHVlcy0+c2l6ZSgpKSB7Ci0gICAgICAgIExpc3RJdGVt
VHlwZSByZXBsYWNlZEl0ZW0gPSBtX3ZhbHVlcy0+YXQoaW5kZXgpOwotICAgICAgICBBU1NFUlQo
cmVwbGFjZWRJdGVtKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0
Kj4ocmVwbGFjZWRJdGVtLmdldCgpKS0+c2V0Q29udGV4dEFuZFJvbGUobnVsbHB0ciwgUGF0aFNl
Z1VuZGVmaW5lZFJvbGUpOwotICAgIH0KLQorICAgIGlmIChpbmRleCA8IG1fdmFsdWVzLT5zaXpl
KCkpCisgICAgICAgIG1fdmFsdWVzLT5jbGVhckl0ZW1Db250ZXh0QW5kUm9sZShpbmRleCk7CiAg
ICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKFdURk1vdmUobmV3SXRlbSksIGluZGV4
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1BhdGhTZWc+PiBTVkdQYXRoU2VnTGlzdDo6
cmVtb3ZlSXRlbSh1bnNpZ25lZCBpbmRleCkKIHsKKyAgICBpZiAoaW5kZXggPCBtX3ZhbHVlcy0+
c2l6ZSgpKQorICAgICAgICBtX3ZhbHVlcy0+Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUoaW5kZXgp
OwogICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cmVtb3ZlSXRlbVZhbHVlcyhpbmRleCk7CiAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBh
dXRvIHJlbW92ZWRJdGVtID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIGlmIChy
ZW1vdmVkSXRlbSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Jj4o
KnJlbW92ZWRJdGVtKS5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVk
Um9sZSk7Ci0gICAgcmV0dXJuIFdURk1vdmUocmVtb3ZlZEl0ZW0pOworICAgIHJldHVybiByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKIFNWR1BhdGhFbGVtZW50KiBTVkdQYXRoU2Vn
TGlzdDo6Y29udGV4dEVsZW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaXN0LmgJKHJldmlzaW9uIDIyOTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTcyLDcgKzczLDYgQEAgcHVibGljOgogCiAgICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNWR1BhdGhTZWc+PiBpbml0aWFsaXplKFJlZjxTVkdQYXRoU2VnPiYm
IG5ld0l0ZW0pCiAgICAgewotICAgICAgICBjbGVhckNvbnRleHRBbmRSb2xlcygpOwogICAgICAg
ICByZXR1cm4gQmFzZTo6aW5pdGlhbGl6ZVZhbHVlcyhXVEZNb3ZlKG5ld0l0ZW0pKTsKICAgICB9
CiAKQEAgLTEwMSw5ICsxMDEsNiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNWR1BhdGhFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0OwotCi0gICAgdm9pZCBjbGVhckNvbnRleHRBbmRS
b2xlcygpOwotCiAgICAgdXNpbmcgQmFzZTo6bV9yb2xlOwogCiAgICAgYm9vbCBpc1JlYWRPbmx5
KCkgY29uc3QgZmluYWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZh
bHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
VmFsdWVzLmNwcAkocmV2aXNpb24gMjI5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MCw0ICs0MSwxNyBAQCB2b2lkIFNWR1BhdGhTZWdMaXN0
VmFsdWVzOjpjb21taXRDaGFuZ2UoCiAgICAgZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRl
eHRFbGVtZW50KS5wYXRoU2VnTGlzdENoYW5nZWQobV9yb2xlLCBsaXN0TW9kaWZpY2F0aW9uKTsK
IH0KIAordm9pZCBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUo
dW5zaWduZWQgaW5kZXgpCit7CisgICAgYXV0byYgaXRlbSA9IGF0KGluZGV4KTsKKyAgICBzdGF0
aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQmPigqaXRlbSkuc2V0Q29udGV4dEFuZFJvbGUo
bnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworfQorICAgIAordm9pZCBTVkdQYXRoU2Vn
TGlzdFZhbHVlczo6Y2xlYXJDb250ZXh0QW5kUm9sZXMoKQoreworICAgIGF1dG8gY291bnQgPSBz
aXplKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIGNsZWFySXRlbUNvbnRleHRBbmRS
b2xlKGNvdW50KTsKK30KKyAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMjk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM1LDE2ICszNiw0MiBAQCBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJP
ZmY7CiAKIGNsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFZlY3RvcjxSZWZQdHI8
U1ZHUGF0aFNlZz4+IHsKIHB1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gVmVjdG9yPFJlZlB0cjxT
VkdQYXRoU2VnPj47CisgICAgCiAgICAgZXhwbGljaXQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoU1ZH
UGF0aFNlZ1JvbGUgcm9sZSkKICAgICAgICAgOiBtX3JvbGUocm9sZSkKICAgICB7CiAgICAgfQor
ICAgIAorICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzKGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVz
JikgPSBkZWZhdWx0OworICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzKFNWR1BhdGhTZWdMaXN0VmFs
dWVzJiYpID0gZGVmYXVsdDsKKyAgICAKKyAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgb3BlcmF0
b3I9KGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVzJiBvdGhlcikKKyAgICB7CisgICAgICAgIGNs
ZWFyQ29udGV4dEFuZFJvbGVzKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRo
U2VnTGlzdFZhbHVlcyY+KEJhc2U6Om9wZXJhdG9yPShvdGhlcikpOworICAgIH0KKworICAgIFNW
R1BhdGhTZWdMaXN0VmFsdWVzJiBvcGVyYXRvcj0oU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFZhbHVlcyY+KEJhc2U6Om9wZXJhdG9yPShXVEZN
b3ZlKG90aGVyKSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAg
ICAgIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7CisgICAgICAgIEJhc2U6OmNsZWFyKCk7CisgICAg
fQogCiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgY29tbWl0
Q2hhbmdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uKTsKKyAg
ICB2b2lkIGNsZWFySXRlbUNvbnRleHRBbmRSb2xlKHVuc2lnbmVkIGluZGV4KTsKIAogcHJpdmF0
ZToKKyAgICB2b2lkIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7CisKICAgICBTVkdQYXRoU2VnUm9s
ZSBtX3JvbGU7CiB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjk4MTcpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wMy0yMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIERp
c2Nvbm5lY3QgdGhlIFNWR1BhdGhTZWdMaXN0IGl0ZW1zIGZyb20gdGhlaXIgU1ZHUGF0aEVsZW1l
bnQgYmVmb3JlIHJlYnVpbGRpbmcgYSBuZXcgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
ODUxNzg3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN2Zy9kb20vcmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQu
aHRtbDogQWRkZWQuCisKIDIwMTgtMDMtMjEgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEltcG9ydCBDU1MgQW5pbWF0aW9ucyBh
bmQgQ1NTIFRyYW5zaXRpb25zIGFzIFdlYiBBbmltYXRpb25zIHRlc3RzIGZyb20gTW96aWxsYQpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vcmV1c2UtcGF0
aHNlZy1hZnRlci1jaGFuZ2luZy1kLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0ZXItY2hhbmdpbmctZC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorVGhpcyBzaG91bGQgbm90IGNyYXNoLgpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXVzZS1wYXRoc2VnLWFmdGVyLWNoYW5naW5nLWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL3JldXNlLXBhdGhzZWctYWZ0
ZXItY2hhbmdpbmctZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20v
cmV1c2UtcGF0aHNlZy1hZnRlci1jaGFuZ2luZy1kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKwk8cD5UaGlzIHNob3VsZCBub3Qg
Y3Jhc2guPC9wPgorCTxzY3JpcHQ+CisgICAgCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIAljb25zdCBzdmducyA9ICJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyI7CisgICAgCWxldCBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKHN2Z25zLCAicGF0aCIpOworICAgIAlsZXQgcGF0aFNlZ0xpc3QgPSBwYXRoLnBhdGhT
ZWdMaXN0OworICAgIAlsZXQgcGF0aFNlZyA9IHBhdGguY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1Ntb290aEFicygwLCAwLCAxLCAxKTsKKyAgICAJcGF0aFNlZ0xpc3QuaW5zZXJ0SXRlbUJl
Zm9yZShwYXRoU2VnLCAxKTsKKyAgICAJcGF0aC5zZXRBdHRyaWJ1dGUoImQiLCAiTSAwIDAiKTsK
KyAgICAJcGF0aFNlZ0xpc3QuaW5zZXJ0SXRlbUJlZm9yZShwYXRoU2VnLCAwKTsKKwk8L3Njcmlw
dD4KKzwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>