<?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>201926</bug_id>
          
          <creation_ts>2019-09-18 11:48:04 -0700</creation_ts>
          <short_desc>Assertion fires when animating a discrete property with values range and multiple animators</short_desc>
          <delta_ts>2019-09-20 18:25:19 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202052</see_also>
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1571986</commentid>
    <comment_count>0</comment_count>
      <attachid>379054</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-18 11:48:04 -0700</bug_when>
    <thetext>Created attachment 379054
test case (assertion fires in debug builds)

Open the attached test case.

In Debug build, the following assertion will fire:

stderr:
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
ERROR: File failed to delete. Error message: Operation not permitted
/Volumes/Data/WebKit/OpenSource/Source/WTF/wtf/posix/FileSystemPOSIX.cpp(77) : bool WTF::FileSystemImpl::deleteFile(const WTF::String &amp;)
SHOULD NEVER BE REACHED
/Volumes/Data/WebKit/OpenSource/Source/WebCore/svg/properties/SVGAnimationDiscreteFunction.h(42) : virtual void WebCore::SVGAnimationDiscreteFunction&lt;WTF::String&gt;::setToAtEndOfDurationValue(const WTF::String &amp;) [ValueType = WTF::String]
1   0x2401dea29 WTFCrash
2   0x22800935b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x22bd3e8f3 WebCore::SVGAnimationDiscreteFunction&lt;WTF::String&gt;::setToAtEndOfDurationValue(WTF::String const&amp;)
4   0x22bd3e04c WebCore::SVGAnimatedPropertyAnimator&lt;WebCore::SVGAnimatedPrimitiveProperty&lt;WTF::String&gt;, WebCore::SVGAnimationStringFunction&gt;::setToAtEndOfDurationValue(WTF::String const&amp;)
5   0x22bd27f7a WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue(WTF::String const&amp;)
6   0x22bd5d55b WebCore::SVGAnimationElement::startedActiveInterval()
7   0x22c078b38 WebCore::SVGSMILElement::progress(WebCore::SMILTime, WebCore::SVGSMILElement*, bool)
8   0x22c076ff3 WebCore::SMILTimeContainer::updateAnimations(WebCore::SMILTime, bool)
9   0x22c076ab0 WebCore::SMILTimeContainer::begin()
10  0x22bdb6411 WebCore::SVGDocumentExtensions::startAnimations()
11  0x22a5f0802 WebCore::Document::implicitClose()
12  0x22aff30fb WebCore::FrameLoader::checkCallImplicitClose()
13  0x22aff2be4 WebCore::FrameLoader::checkCompleted()
14  0x22aff0f15 WebCore::FrameLoader::finishedParsing()
15  0x22a6081a8 WebCore::Document::finishedParsing()
16  0x22c24e0c8 WebCore::XMLDocumentParser::end()
17  0x22c24e44e WebCore::XMLDocumentParser::finish()
18  0x22af9d57a WebCore::DocumentWriter::end()
19  0x22af9c45f WebCore::DocumentLoader::finishedLoading()
20  0x22af9c09d WebCore::DocumentLoader::notifyFinished(WebCore::CachedResource&amp;)
21  0x22b0e090f WebCore::CachedResource::checkNotify()
22  0x22b0dc7c1 WebCore::CachedResource::finishLoading(WebCore::SharedBuffer*)
23  0x22b0ddaa9 WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*)
24  0x22b072851 WebCore::SubresourceLoader::didFinishLoading(WebCore::NetworkLoadMetrics const&amp;)
25  0x103597517 WebKit::WebResourceLoader::didFinishResourceLoad(WebCore::NetworkLoadMetrics const&amp;)
26  0x103ae921a void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;), std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;, 0ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;), std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt;)
27  0x103ae9170 void IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;), std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt; &gt;(std::__1::tuple&lt;WebCore::NetworkLoadMetrics&gt;&amp;&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;))
28  0x103ae86db void IPC::handleMessage&lt;Messages::WebResourceLoader::DidFinishResourceLoad, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;))
29  0x103ae7e8c WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
30  0x10358aeb6 WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
31  0x102547a59 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
LEAK: 1 WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572008</commentid>
    <comment_count>1</comment_count>
      <attachid>379060</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-18 12:08:04 -0700</bug_when>
    <thetext>Created attachment 379060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572050</commentid>
    <comment_count>2</comment_count>
      <attachid>379060</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-18 13:28:07 -0700</bug_when>
    <thetext>Comment on attachment 379060
Patch

Good catch, looks fine as is.
I assume you verified the new layout tests currently hits the assertion without your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572054</commentid>
    <comment_count>3</comment_count>
      <attachid>379060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-09-18 13:34:44 -0700</bug_when>
    <thetext>Comment on attachment 379060
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        The bug is isDiscreteAnimator() will return false if the m_animator is 
&gt; +        null. So the fix is ensure m_animator is created before calling
&gt; +        isDiscreteAnimator(). This should also be done in calculateFromAndByValues().

Conventionally, the fix for something like this would be to have isDiscreteAnimator() call animator() so it is created rather than relying on a side effect of requiring the caller to call animator() first. Maybe there’s a good reason not to do that, but it seems dangerous to rely on side effects and the other of calling functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572078</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-18 14:25:39 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Conventionally, the fix for something like this would be to have
&gt; isDiscreteAnimator() call animator() so it is created rather than relying on
&gt; a side effect of requiring the caller to call animator() first. Maybe
&gt; there’s a good reason not to do that, but it seems dangerous to rely on side
&gt; effects and the other of calling functions.

I wouldn&apos;t expect a function called &quot;isDiscreteAnimator&quot; to create the animator.
But I agree that either solution is potentially dangerous, so good you brought up this point. Currently with Saids approach, all call sites (from SVGAnimateElementBase and SVGAnimationElement) are safe, but we should protect us for the future, to avoid introducing bugs.

I will leave this to Said to propose a better approach, not relying on side effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572301</commentid>
    <comment_count>5</comment_count>
      <attachid>379060</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-09-19 02:57:54 -0700</bug_when>
    <thetext>Comment on attachment 379060
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        The first animator of a property is considered the result element. The

What is &quot;the result element&quot;?

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        isDiscreteAnimator(). This should also be done in calculateFromAndByValues().
&gt; 
&gt; Conventionally, the fix for something like this would be to have isDiscreteAnimator() call animator() so it is created rather than relying on a side effect of requiring the caller to call animator() first. Maybe there’s a good reason not to do that, but it seems dangerous to rely on side effects and the other of calling functions.

Maybe isDiscreteAnimator() should assert that animator() is not null, or the isDiscreteAnimator() should be on animator itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572779</commentid>
    <comment_count>6</comment_count>
      <attachid>379246</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-20 10:26:56 -0700</bug_when>
    <thetext>Created attachment 379246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572871</commentid>
    <comment_count>7</comment_count>
      <attachid>379246</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-09-20 13:54:11 -0700</bug_when>
    <thetext>Comment on attachment 379246
Patch

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

&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:84
&gt; +    if (auto* animator = this-&gt;animator())
&gt; +        return animator-&gt;isDiscrete();
&gt; +
&gt; +    return false;

Another way to write this is:

    auto* animator = this-&gt;animator();
    return animator &amp;&amp; animator-&gt;isDiscrete();

Not sure which style I like better, but I have often chosen to do a null guard with &amp;&amp; rather than early exit.

&gt; Source/WebCore/svg/SVGAnimateElementBase.h:48
&gt; +    bool hasInvalidCSSAttributeType() const;

Doesn’t seem like we needed to move this line of code. Could have left it where it was, after the overrides. Maybe was moved as part of intermediate steps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572934</commentid>
    <comment_count>8</comment_count>
      <attachid>379278</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-20 16:00:03 -0700</bug_when>
    <thetext>Created attachment 379278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572935</commentid>
    <comment_count>9</comment_count>
      <attachid>379060</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-20 16:04:19 -0700</bug_when>
    <thetext>Comment on attachment 379060
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        The first animator of a property is considered the result element. The
&gt; 
&gt; What is &quot;the result element&quot;?

The result element is the first animator if multiple animators animate the same attribute. I filed https://bugs.webkit.org/show_bug.cgi?id=202052 which explains the reason for naming it resultElement and to do the necessary clean up.

&gt;&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt;&gt; +        isDiscreteAnimator(). This should also be done in calculateFromAndByValues().
&gt;&gt; 
&gt;&gt; Conventionally, the fix for something like this would be to have isDiscreteAnimator() call animator() so it is created rather than relying on a side effect of requiring the caller to call animator() first. Maybe there’s a good reason not to do that, but it seems dangerous to rely on side effects and the other of calling functions.
&gt; 
&gt; Maybe isDiscreteAnimator() should assert that animator() is not null, or the isDiscreteAnimator() should be on animator itself.

I made isDiscreteAnimator() call animator() instead of calling animatorIfExists(). animator() ensures the m_animator is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572936</commentid>
    <comment_count>10</comment_count>
      <attachid>379246</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-20 16:07:48 -0700</bug_when>
    <thetext>Comment on attachment 379246
Patch

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

&gt;&gt; Source/WebCore/svg/SVGAnimateElementBase.cpp:84
&gt;&gt; +    return false;
&gt; 
&gt; Another way to write this is:
&gt; 
&gt;     auto* animator = this-&gt;animator();
&gt;     return animator &amp;&amp; animator-&gt;isDiscrete();
&gt; 
&gt; Not sure which style I like better, but I have often chosen to do a null guard with &amp;&amp; rather than early exit.

Done.

&gt;&gt; Source/WebCore/svg/SVGAnimateElementBase.h:48
&gt;&gt; +    bool hasInvalidCSSAttributeType() const;
&gt; 
&gt; Doesn’t seem like we needed to move this line of code. Could have left it where it was, after the overrides. Maybe was moved as part of intermediate steps?

Fixed. The diff in the last patch is cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573010</commentid>
    <comment_count>11</comment_count>
      <attachid>379278</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 18:24:52 -0700</bug_when>
    <thetext>Comment on attachment 379278
Patch

Clearing flags on attachment: 379278

Committed r250175: &lt;https://trac.webkit.org/changeset/250175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573011</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 18:24:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573012</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-20 18:25:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55579525&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>379054</attachid>
            <date>2019-09-18 11:48:04 -0700</date>
            <delta_ts>2019-09-18 11:48:04 -0700</delta_ts>
            <desc>test case (assertion fires in debug builds)</desc>
            <filename>multiple-discrete-values-animate.svg</filename>
            <type>image/svg+xml</type>
            <size>267</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGc+CiAgICAgICAg
PHRleHQ+UGFzc2VzIGlmIHdlIGRpZCBub3QgZGVidWcgYXNzZXJ0LjwvdGV4dD4KICAgICAgICA8
YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJjbGFzcyIgZHVyPSIyMG1zIiB2YWx1ZXM9ImJveDsgY2ly
Y2xlIi8+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY2xhc3MiIGR1cj0iMjBtcyIg
dmFsdWVzPSJib3g7IGNpcmNsZSIvPgogICAgPC9nPgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379060</attachid>
            <date>2019-09-18 12:08:04 -0700</date>
            <delta_ts>2019-09-20 10:26:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201926-20190918120803.patch</filename>
            <type>text/plain</type>
            <size>5953</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDA0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE5LTA5LTE4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9u
IGZpcmVzIHdoZW4gYW5pbWF0aW5nIGEgZGlzY3JldGUgcHJvcGVydHkgd2l0aCB2YWx1ZXMgcmFu
Z2UgYW5kIG11bHRpcGxlIGFuaW1hdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAxOTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGZpcnN0IGFuaW1hdG9yIG9mIGEgcHJvcGVydHkgaXMgY29u
c2lkZXJlZCB0aGUgcmVzdWx0IGVsZW1lbnQuIFRoZQorICAgICAgICBvdGhlciBhbmltYXRvcnMg
d2lsbCBiZSBqdXN0IGNvbnRyaWJ1dGVycyB0byB0aGUgZmlyc3QgYW5pbWF0b3IuIEZvciB0aGUK
KyAgICAgICAgZmlyc3QgYW5pbWF0b3IgYW5kIGluIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcygp
LCB3ZSBjYWxsIHJlc2V0QW5pbWF0ZWRUeXBlKCkKKyAgICAgICAgd2hpY2ggY3JlYXRlcyBtX2Fu
aW1hdG9yIGluIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YW5pbWF0b3IoKS4gQnV0IGZvciAKKyAg
ICAgICAgdGhlIG90aGVyIGFuaW1hdG9ycyB3ZSBkbyBub3QgY2FsbCByZXNldEFuaW1hdGVkVHlw
ZSgpLiBTbyB0aGVpciBtX2FuaW1hdG9yCisgICAgICAgIHdpbGwgc3RheSBudWxsIHVudGlsIHRo
ZXkgYXJlIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgorCisgICAgICAgIElmIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpIGNhbGxzIGNhbGN1bGF0ZVRvQXRFbmRP
ZkR1cmF0aW9uVmFsdWUoKQorICAgICAgICBmb3IgYSBkaXNjcmV0ZSBwcm9wZXJ0eSB0aGlzIHdp
bGwgaGF2ZSBubyBlZmZlY3QgYW5kIHRoZSBjYWxsIHNob3VsZCBiZQorICAgICAgICBpZ25vcmVk
LiBTbyBpbiAgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlv
blZhbHVlKCksCisgICAgICAgIHdlIGp1c3QgYmFpbCBvdXQgZWFybHkgaWYgdGhlIHByb3BlcnR5
IGlzIGRpc2NyZXRlLgorCisgICAgICAgIFRoZSBidWcgaXMgaXNEaXNjcmV0ZUFuaW1hdG9yKCkg
d2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIG1fYW5pbWF0b3IgaXMgCisgICAgICAgIG51bGwuIFNv
IHRoZSBmaXggaXMgZW5zdXJlIG1fYW5pbWF0b3IgaXMgY3JlYXRlZCBiZWZvcmUgY2FsbGluZwor
ICAgICAgICBpc0Rpc2NyZXRlQW5pbWF0b3IoKS4gVGhpcyBzaG91bGQgYWxzbyBiZSBkb25lIGlu
IGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcygpLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmltYXRp
b25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLnN2ZworCisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUp
OgorCiAyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBk
b2VzIG5vdCBuZWVkIHRvIHRha2UgaW4gYSBTZXNzaW9uSUQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAyNTAwMDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDE3ICsxMTQsMTggQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1
bGF0ZUZybwogICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBhdXRvKiBhbmltYXRvciA9IHRoaXMtPmFuaW1hdG9yKCk7CisgICAgaWYg
KCFhbmltYXRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGFuaW1hdGlvbk1v
ZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeSAmJiAoIWlzQWRkaXRpdmUoKSB8fCBpc0Rpc2NyZXRl
QW5pbWF0b3IoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhbmltYXRpb25N
b2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6RnJvbUJ5ICYmIGlzRGlzY3JldGVBbmltYXRvcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoYXV0byogYW5pbWF0b3IgPSB0aGlzLT5h
bmltYXRvcigpKSB7Ci0gICAgICAgIGFuaW1hdG9yLT5zZXRGcm9tQW5kQnlWYWx1ZXModGFyZ2V0
RWxlbWVudCgpLCBhbmltYXRlUmFuZ2VTdHJpbmcoZnJvbVN0cmluZyksIGFuaW1hdGVSYW5nZVN0
cmluZyhieVN0cmluZykpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIGFuaW1hdG9yLT5zZXRGcm9tQW5kQnlWYWx1ZXModGFyZ2V0RWxlbWVudCgp
LCBhbmltYXRlUmFuZ2VTdHJpbmcoZnJvbVN0cmluZyksIGFuaW1hdGVSYW5nZVN0cmluZyhieVN0
cmluZykpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFz
ZTo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRP
ZkR1cmF0aW9uU3RyaW5nKQpAQCAtMTMyLDE0ICsxMzMsMTUgQEAgYm9vbCBTVkdBbmltYXRlRWxl
bWVudEJhc2U6OmNhbGN1bGF0ZVRvQQogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpIHx8IHRvQXRF
bmRPZkR1cmF0aW9uU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgYXV0byogYW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpOworICAgIGlmICghYW5pbWF0b3Ip
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChpc0Rpc2NyZXRlQW5pbWF0b3IoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoYXV0byogYW5pbWF0b3IgPSB0aGlzLT5h
bmltYXRvcigpKSB7Ci0gICAgICAgIGFuaW1hdG9yLT5zZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVl
KGFuaW1hdGVSYW5nZVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGFuaW1hdG9yLT5zZXRU
b0F0RW5kT2ZEdXJhdGlvblZhbHVlKGFuaW1hdGVSYW5nZVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlv
blN0cmluZykpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50
QmFzZTo6cmVzZXRBbmltYXRlZFR5cGUoKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMDAzKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTktMDktMTggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBc3NlcnRpb24gZmlyZXMgd2hlbiBhbmltYXRpbmcgYSBkaXNjcmV0ZSBwcm9wZXJ0
eSB3aXRoIHZhbHVlcyByYW5nZSBhbmQgbXVsdGlwbGUgYW5pbWF0b3JzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbmltYXRlIGEgZGlzY3JldGUgcHJv
cGVydHksIHN1Y2ggYXMgU1ZHQW5pbWF0ZWRTdHJpbmcuIFRoZXJlIHNob3VsZCBiZQorICAgICAg
ICBtdWx0aXBsZSBhbmltYXRvcnMgYW5kIHRoZSByYW5nZSBvZiBhbmltYXRpb24gaGFzIHRvIGJl
IHNldCBieSB0aGUgJ3ZhbHVlcycKKyAgICAgICAgYXR0cmlidXRlLgorCisgICAgICAgICogc3Zn
L2FuaW1hdGlvbnMvbXVsdGlwbGUtZGlzY3JldGUtdmFsdWVzLWFuaW1hdGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9tdWx0aXBsZS1kaXNjcmV0ZS12YWx1
ZXMtYW5pbWF0ZS5zdmc6IEFkZGVkLgorCiAyMDE5LTA5LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkcmVzcyBmbGFraW5lc3Mgb2Yg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBw
bGljYXRpb24tY2FjaGUtYXBpL2FwaV91cGRhdGVfZXJyb3IuaHR0cHMuaHRtbC4KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9t
dWx0aXBsZS1kaXNjcmV0ZS12YWx1ZXMtYW5pbWF0ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvbXVsdGlwbGUtZGlzY3JldGUtdmFsdWVz
LWFuaW1hdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK1Bhc3Nl
cyBpZiB3ZSBkaWQgbm90IGRlYnVnIGFzc2VydC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLnN2Zwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9tdWx0aXBsZS1kaXNjcmV0ZS12YWx1ZXMtYW5p
bWF0ZS5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvbXVs
dGlwbGUtZGlzY3JldGUtdmFsdWVzLWFuaW1hdGUuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTggQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8
Zz4KKyAgICAgICAgPHRleHQ+UGFzc2VzIGlmIHdlIGRpZCBub3QgZGVidWcgYXNzZXJ0LjwvdGV4
dD4KKyAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY2xhc3MiIGR1cj0iMjBtcyIgdmFs
dWVzPSJib3g7IGNpcmNsZSIgb25iZWdpbj0iYW5pbWF0aW9uU3RhcnRlZCgpIi8+CisgICAgICAg
IDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImNsYXNzIiBkdXI9IjIwbXMiIHZhbHVlcz0iYm94OyBj
aXJjbGUiLz4KKyAgICA8L2c+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gYW5pbWF0aW9uU3RhcnRlZCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379246</attachid>
            <date>2019-09-20 10:26:56 -0700</date>
            <delta_ts>2019-09-20 16:00:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201926-20190920102656.patch</filename>
            <type>text/plain</type>
            <size>6184</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDEzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA5LTIwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9u
IGZpcmVzIHdoZW4gYW5pbWF0aW5nIGEgZGlzY3JldGUgcHJvcGVydHkgd2l0aCB2YWx1ZXMgcmFu
Z2UgYW5kIG11bHRpcGxlIGFuaW1hdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAxOTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGZpcnN0IGFuaW1hdG9yIG9mIGEgcHJvcGVydHkgaXMgY29u
c2lkZXJlZCB0aGUgcmVzdWx0IGVsZW1lbnQuIFRoZQorICAgICAgICBvdGhlciBhbmltYXRvcnMg
d2lsbCBiZSBqdXN0IGNvbnRyaWJ1dGVycyB0byB0aGUgZmlyc3QgYW5pbWF0b3IuIEZvciB0aGUK
KyAgICAgICAgZmlyc3QgYW5pbWF0b3IgYW5kIGluIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcygp
LCB3ZSBjYWxsIHJlc2V0QW5pbWF0ZWRUeXBlKCkKKyAgICAgICAgd2hpY2ggY3JlYXRlcyBtX2Fu
aW1hdG9yIGluIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YW5pbWF0b3IoKS4gQnV0IGZvciAKKyAg
ICAgICAgdGhlIG90aGVyIGFuaW1hdG9ycyB3ZSBkbyBub3QgY2FsbCByZXNldEFuaW1hdGVkVHlw
ZSgpLiBTbyB0aGVpciBtX2FuaW1hdG9yCisgICAgICAgIHdpbGwgc3RheSBudWxsIHVudGlsIHRo
ZXkgYXJlIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgorCisgICAgICAgIElmIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpIGNhbGxzIGNhbGN1bGF0ZVRvQXRFbmRP
ZkR1cmF0aW9uVmFsdWUoKQorICAgICAgICBmb3IgYSBkaXNjcmV0ZSBwcm9wZXJ0eSB0aGlzIHdp
bGwgaGF2ZSBubyBlZmZlY3QgYW5kIHRoZSBjYWxsIHNob3VsZCBiZQorICAgICAgICBpZ25vcmVk
LiBTbyBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFs
dWUoKQorICAgICAgICBzaG91bGQgYmFpbCBvdXQgZWFybHkgaWYgaXNEaXNjcmV0ZUFuaW1hdG9y
KCkgaXMgdHJ1ZS4KKworICAgICAgICBUaGUgYnVnIGlzIGlzRGlzY3JldGVBbmltYXRvcigpIHdp
bGwgcmV0dXJuIGZhbHNlIGlmIHRoZSBtX2FuaW1hdG9yIGlzIAorICAgICAgICBudWxsIGV2ZW4g
aWYgdGhlIGFuaW1hdGVkIHByb3BlcnR5IGlzIGRpc2NyZXRlLCBlLmcuIFNWR0FuaW1hdGVkU3Ry
aW5nLgorICAgICAgICBUaGUgZml4IGlzIHRvIG1ha2UgaXQgZW5zdXJlIG1fYW5pbWF0b3IgaXMg
Y3JlYXRlZC4KKworICAgICAgICBVbnJlbGF0ZWQgY2hhbmdlOgorICAgICAgICBNYWtlIG1vc3Qg
b2YgdGhlIHByb3RlY3RlZCBtZXRob2RzIG9mIFNWR0FuaW1hdGVFbGVtZW50QmFzZSBiZSBwcml2
YXRlLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmltYXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZh
bHVlcy1hbmltYXRlLnN2ZworCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZy
b21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6
OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUpOgorCiAyMDE5LTA5LTIwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUG9zaXRpb246
OnVwc3RyZWFtIGFuZCBQb3NpdGlvbjo6ZG93bnN0cmVhbSB3aXRoIGxpbmUgbGF5b3V0IGl0ZXJh
dG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNw
cAkocmV2aXNpb24gMjUwMTMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDEzIEBAIGJvb2wgU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpoYXNJbnZhbGlkQ1MKIAogYm9vbCBTVkdBbmltYXRlRWxlbWVudEJh
c2U6OmlzRGlzY3JldGVBbmltYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1ZhbGlkQXR0
cmlidXRlVHlwZSgpICYmIGFuaW1hdG9ySWZFeGlzdHMoKSAmJiBhbmltYXRvcklmRXhpc3RzKCkt
PmlzRGlzY3JldGUoKTsKKyAgICBpZiAoIWhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogYW5pbWF0b3IgPSB0aGlzLT5hbmltYXRv
cigpKQorICAgICAgICByZXR1cm4gYW5pbWF0b3ItPmlzRGlzY3JldGUoKTsKKworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnNldFRhcmdldEVsZW1l
bnQoU1ZHRWxlbWVudCogdGFyZ2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlRWxlbWVudEJhc2UuaAkocmV2aXNpb24gMjUwMTMzKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTQg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNWR0FuaW1hdGVFbGVtZW50QmFzZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAorICAgIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBTdHJpbmcgYW5pbWF0ZVJhbmdlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBzdHJpbmc7IH0KKworcHJp
dmF0ZToKICAgICBTVkdBdHRyaWJ1dGVBbmltYXRvciogYW5pbWF0b3IoKSBjb25zdDsKICAgICBT
VkdBdHRyaWJ1dGVBbmltYXRvciogYW5pbWF0b3JJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1f
YW5pbWF0b3IuZ2V0KCk7IH0KIAotICAgIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNJbnZhbGlkQ1NTQXR0cmlidXRlVHlwZSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRUYXJnZXRFbGVtZW50KFNWR0VsZW1lbnQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldEF0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpA
QCAtNTcsMTEgKzYxLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xlYXJBbmltYXRlZFR5cGUo
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8ZmxvYXQ+
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZykgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBhbmltYXRlUmFuZ2VT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIHN0cmluZzsgfQotCi1w
cml2YXRlOgotICAgIGJvb2wgaGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoKSBjb25zdDsKLQog
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBtX2FuaW1h
dG9yOwogICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9oYXNJbnZhbGlkQ1NTQXR0cmlidXRl
VHlwZTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxMzMpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOS0yMCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFzc2VydGlv
biBmaXJlcyB3aGVuIGFuaW1hdGluZyBhIGRpc2NyZXRlIHByb3BlcnR5IHdpdGggdmFsdWVzIHJh
bmdlIGFuZCBtdWx0aXBsZSBhbmltYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFuaW1hdGUgYSBkaXNjcmV0ZSBwcm9wZXJ0eSwgc3VjaCBhcyBT
VkdBbmltYXRlZFN0cmluZy4gVGhlcmUgc2hvdWxkIGJlCisgICAgICAgIG11bHRpcGxlIGFuaW1h
dG9ycyBhbmQgdGhlIHJhbmdlIG9mIGFuaW1hdGlvbiBoYXMgdG8gYmUgc2V0IGJ5IHRoZSAndmFs
dWVzJworICAgICAgICBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9tdWx0
aXBsZS1kaXNjcmV0ZS12YWx1ZXMtYW5pbWF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9hbmltYXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLnN2Zzog
QWRkZWQuCisKIDIwMTktMDktMjAgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBTeW5jaHJvbml6ZSBNYXRoTUwgV1BUIHRlc3RzIGFnYWluc3QgdXBzdHJlYW0KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmlt
YXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9tdWx0aXBsZS1kaXNjcmV0ZS12YWx1ZXMtYW5pbWF0ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvbXVsdGlwbGUtZGlzY3JldGUtdmFs
dWVzLWFuaW1hdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK1Bh
c3NlcyBpZiB3ZSBkaWQgbm90IGRlYnVnIGFzc2VydC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLnN2Zwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9tdWx0aXBsZS1kaXNjcmV0ZS12YWx1ZXMt
YW5pbWF0ZS5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
bXVsdGlwbGUtZGlzY3JldGUtdmFsdWVzLWFuaW1hdGUuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTggQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAg
ICA8Zz4KKyAgICAgICAgPHRleHQ+UGFzc2VzIGlmIHdlIGRpZCBub3QgZGVidWcgYXNzZXJ0Ljwv
dGV4dD4KKyAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY2xhc3MiIGR1cj0iMjBtcyIg
dmFsdWVzPSJib3g7IGNpcmNsZSIgb25iZWdpbj0iYW5pbWF0aW9uU3RhcnRlZCgpIi8+CisgICAg
ICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImNsYXNzIiBkdXI9IjIwbXMiIHZhbHVlcz0iYm94
OyBjaXJjbGUiLz4KKyAgICA8L2c+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gYW5pbWF0aW9uU3RhcnRlZCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379278</attachid>
            <date>2019-09-20 16:00:03 -0700</date>
            <delta_ts>2019-09-20 18:24:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201926-20190920160002.patch</filename>
            <type>text/plain</type>
            <size>6109</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDE2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA5LTIwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9u
IGZpcmVzIHdoZW4gYW5pbWF0aW5nIGEgZGlzY3JldGUgcHJvcGVydHkgd2l0aCB2YWx1ZXMgcmFu
Z2UgYW5kIG11bHRpcGxlIGFuaW1hdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAxOTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVGhlIGZpcnN0IGFuaW1hdG9yIG9mIGEgcHJvcGVydHkgaXMgY29uc2lk
ZXJlZCB0aGUgcmVzdWx0IGVsZW1lbnQuIFRoZQorICAgICAgICBvdGhlciBhbmltYXRvcnMgd2ls
bCBiZSBqdXN0IGNvbnRyaWJ1dGVycyB0byB0aGUgZmlyc3QgYW5pbWF0b3IuIEZvciB0aGUKKyAg
ICAgICAgZmlyc3QgYW5pbWF0b3IgYW5kIGluIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcygpLCB3
ZSBjYWxsIHJlc2V0QW5pbWF0ZWRUeXBlKCkKKyAgICAgICAgd2hpY2ggY3JlYXRlcyBtX2FuaW1h
dG9yIGluIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6YW5pbWF0b3IoKS4gQnV0IGZvciAKKyAgICAg
ICAgdGhlIG90aGVyIGFuaW1hdG9ycyB3ZSBkbyBub3QgY2FsbCByZXNldEFuaW1hdGVkVHlwZSgp
LiBTbyB0aGVpciBtX2FuaW1hdG9yCisgICAgICAgIHdpbGwgc3RheSBudWxsIHVudGlsIHRoZXkg
YXJlIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgorCisgICAgICAgIElmIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpIGNhbGxzIGNhbGN1bGF0ZVRvQXRFbmRPZkR1
cmF0aW9uVmFsdWUoKQorICAgICAgICBmb3IgYSBkaXNjcmV0ZSBwcm9wZXJ0eSB0aGlzIHdpbGwg
aGF2ZSBubyBlZmZlY3QgYW5kIHRoZSBjYWxsIHNob3VsZCBiZQorICAgICAgICBpZ25vcmVkLiBT
byBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUo
KQorICAgICAgICBzaG91bGQgYmFpbCBvdXQgZWFybHkgaWYgaXNEaXNjcmV0ZUFuaW1hdG9yKCkg
aXMgdHJ1ZS4KKworICAgICAgICBUaGUgYnVnIGlzIGlzRGlzY3JldGVBbmltYXRvcigpIHdpbGwg
cmV0dXJuIGZhbHNlIGlmIHRoZSBtX2FuaW1hdG9yIGlzIAorICAgICAgICBudWxsIGV2ZW4gaWYg
dGhlIGFuaW1hdGVkIHByb3BlcnR5IGlzIGRpc2NyZXRlLCBlLmcuIFNWR0FuaW1hdGVkU3RyaW5n
LgorICAgICAgICBUaGUgZml4IGlzIHRvIG1ha2UgaXNEaXNjcmV0ZUFuaW1hdG9yKCkgZW5zdXJl
IG1fYW5pbWF0b3IgaXMgY3JlYXRlZC4KKworICAgICAgICBVbnJlbGF0ZWQgY2hhbmdlOgorICAg
ICAgICBNYWtlIG1vc3Qgb2YgdGhlIHByb3RlY3RlZCBtZXRob2RzIG9mIFNWR0FuaW1hdGVFbGVt
ZW50QmFzZSBiZSBwcml2YXRlLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmltYXRpb25zL211bHRp
cGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLnN2ZworCisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJh
c2U6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUpOgorCiAyMDE5
LTA5LTIwICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgc29tZSBzdXBwb3J0IGZvciA8IGlPUyAxMwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDI1MDE2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSwxMSBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6aGFzSW52YWxpZENTCiAK
IGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjppc0Rpc2NyZXRlQW5pbWF0b3IoKSBjb25zdAog
ewotICAgIHJldHVybiBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSAmJiBhbmltYXRvcklmRXhpc3Rz
KCkgJiYgYW5pbWF0b3JJZkV4aXN0cygpLT5pc0Rpc2NyZXRlKCk7CisgICAgaWYgKCFoYXNWYWxp
ZEF0dHJpYnV0ZVR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogYW5p
bWF0b3IgPSB0aGlzLT5hbmltYXRvcigpOworICAgIHJldHVybiBhbmltYXRvciAmJiBhbmltYXRv
ci0+aXNEaXNjcmV0ZSgpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c2V0VGFy
Z2V0RWxlbWVudChTVkdFbGVtZW50KiB0YXJnZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCShyZXZpc2lvbiAyNTAxNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEx
ICszOCwxMyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCisgICAgYm9vbCBoYXNWYWxpZEF0
dHJpYnV0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFN0cmluZyBhbmltYXRl
UmFuZ2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIHN0cmluZzsg
fQorCitwcml2YXRlOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKiBhbmltYXRvcigpIGNvbnN0
OwogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKiBhbmltYXRvcklmRXhpc3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbmltYXRvci5nZXQoKTsgfQogCi0gICAgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5
cGUoKSBjb25zdCBvdmVycmlkZTsKLQogICAgIHZvaWQgc2V0VGFyZ2V0RWxlbWVudChTVkdFbGVt
ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CkBA
IC01Nyw5ICs1OSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQW5pbWF0ZWRUeXBlKFNW
R0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPGZsb2F0PiBj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBTdHJpbmcgYW5pbWF0ZVJhbmdlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBzdHJpbmc7IH0KLQotcHJp
dmF0ZToKICAgICBib29sIGhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CiAKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gbV9hbmltYXRv
cjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDE2MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTIwICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGZpcmVz
IHdoZW4gYW5pbWF0aW5nIGEgZGlzY3JldGUgcHJvcGVydHkgd2l0aCB2YWx1ZXMgcmFuZ2UgYW5k
IG11bHRpcGxlIGFuaW1hdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxOTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgQW5pbWF0ZSBhIGRpc2NyZXRlIHByb3BlcnR5LCBzdWNoIGFzIFNWR0FuaW1hdGVk
U3RyaW5nLiBUaGVyZSBzaG91bGQgYmUKKyAgICAgICAgbXVsdGlwbGUgYW5pbWF0b3JzIGFuZCB0
aGUgcmFuZ2Ugb2YgYW5pbWF0aW9uIGhhcyB0byBiZSBzZXQgYnkgdGhlICd2YWx1ZXMnCisgICAg
ICAgIGF0dHJpYnV0ZS4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb25zL211bHRpcGxlLWRpc2Ny
ZXRlLXZhbHVlcy1hbmltYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2Fu
aW1hdGlvbnMvbXVsdGlwbGUtZGlzY3JldGUtdmFsdWVzLWFuaW1hdGUuc3ZnOiBBZGRlZC4KKwog
MjAxOS0wOS0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogSFRNTCBGb3JtYXR0ZXIgLSBiZXR0ZXIgaW5kZW50YXRpb24vbmV3bGlu
ZSBoYW5kbGluZyBmb3Igc2VsZiBjbG9zaW5nIHRhZ3MKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL211bHRpcGxlLWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9tdWx0aXBsZS1kaXNjcmV0
ZS12YWx1ZXMtYW5pbWF0ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvc3ZnL2FuaW1hdGlvbnMvbXVsdGlwbGUtZGlzY3JldGUtdmFsdWVzLWFuaW1hdGUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK1Bhc3NlcyBpZiB3ZSBkaWQgbm90
IGRlYnVnIGFzc2VydC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL211bHRpcGxl
LWRpc2NyZXRlLXZhbHVlcy1hbmltYXRlLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9tdWx0aXBsZS1kaXNjcmV0ZS12YWx1ZXMtYW5pbWF0ZS5zdmcJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvbXVsdGlwbGUtZGlzY3JldGUt
dmFsdWVzLWFuaW1hdGUuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8Zz4KKyAgICAgICAgPHRl
eHQ+UGFzc2VzIGlmIHdlIGRpZCBub3QgZGVidWcgYXNzZXJ0LjwvdGV4dD4KKyAgICAgICAgPGFu
aW1hdGUgYXR0cmlidXRlTmFtZT0iY2xhc3MiIGR1cj0iMjBtcyIgdmFsdWVzPSJib3g7IGNpcmNs
ZSIgb25iZWdpbj0iYW5pbWF0aW9uU3RhcnRlZCgpIi8+CisgICAgICAgIDxhbmltYXRlIGF0dHJp
YnV0ZU5hbWU9ImNsYXNzIiBkdXI9IjIwbXMiIHZhbHVlcz0iYm94OyBjaXJjbGUiLz4KKyAgICA8
L2c+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9u
U3RhcnRlZCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorPC9zdmc+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>