<?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>172019</bug_id>
          
          <creation_ts>2017-05-11 22:14:59 -0700</creation_ts>
          <short_desc>elementFromPoint() should consider x and y to be in client (layout viewport) coordinates</short_desc>
          <delta_ts>2017-07-11 11:01:21 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>170981</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Ali Juma">ajuma</assigned_to>
          <cc>ajuma</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rbyers</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307770</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-11 22:14:59 -0700</bug_when>
    <thetext>We should fix document.elementFromPoint() to consider x and y to be in the same coordinates as getBoundingClientRect() (bug 171113), and event.clientX/clientY.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307771</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-11 22:17:22 -0700</bug_when>
    <thetext>document.elementFromPoint() ignores elements outside the &quot;viewport&quot;, but should we climb based on the layout viewport, or the visual viewport?

I always thought this clipping behavior was arbitrary and interfere with genuine use cases; not sure if it&apos;s a security policy or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308046</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-12 13:58:07 -0700</bug_when>
    <thetext>Need to fix this to fix the imported/w3c/web-platform-tests/cssom-view/elementFromPoint.html test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308309</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-13 11:27:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/32178867&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322931</commentid>
    <comment_count>4</comment_count>
      <attachid>313860</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-06-26 11:59:25 -0700</bug_when>
    <thetext>Created attachment 313860
WIP

Still need to add tests and sort out failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325493</commentid>
    <comment_count>5</comment_count>
      <attachid>314585</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-04 16:28:00 -0700</bug_when>
    <thetext>Created attachment 314585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325667</commentid>
    <comment_count>6</comment_count>
      <attachid>314585</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-05 11:31:07 -0700</bug_when>
    <thetext>Comment on attachment 314585
Patch

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

&gt; Source/WebCore/dom/TreeScope.cpp:307
&gt; +        documentScope().updateLayout();

Why is this documentScope().updateLayout(); only in the visual viewport code path?

&gt; Source/WebCore/dom/TreeScope.cpp:308
&gt; +        FloatPoint layoutViewportPoint = view-&gt;clientToLayoutViewportPoint(clientPoint);

clientPoint should already be in layout viewport coordinates from the caller.

&gt; Source/WebCore/page/FrameView.h:480
&gt; +    FloatRect layoutViewportToAbsoluteRect(FloatRect) const;
&gt; +    FloatPoint layoutViewportToAbsolutePoint(FloatPoint) const;
&gt; +
&gt; +    FloatPoint clientToLayoutViewportPoint(FloatPoint) const;

I don&apos;t think we should introduce these new conversion functions. &quot;layoutViewport&quot; coordinates should just be client coordinates when visual viewports are enabled, and callers can already convert to them via documentToClientRect etc.

&gt; Source/WebCore/rendering/RenderLayer.cpp:4934
&gt; +            hitTestArea.intersect(absoluteLayoutViewportRect);
&gt; +        } else
&gt; +            hitTestArea.intersect(renderer().view().frameView().visibleContentRect(LegacyIOSDocumentVisibleRect));

Neither of these make much sense for the case when visualOverflowRect() was called; that&apos;s not in absolute coordinates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325710</commentid>
    <comment_count>7</comment_count>
      <attachid>314585</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-05 12:41:12 -0700</bug_when>
    <thetext>Comment on attachment 314585
Patch

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

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:307
&gt;&gt; +        documentScope().updateLayout();
&gt; 
&gt; Why is this documentScope().updateLayout(); only in the visual viewport code path?

This is because of the call to view-&gt;layoutViewportRect() below. We need the layout viewport updated before that. In the existing code path, we don&apos;t update layout until RenderView::hitTest.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:308
&gt;&gt; +        FloatPoint layoutViewportPoint = view-&gt;clientToLayoutViewportPoint(clientPoint);
&gt; 
&gt; clientPoint should already be in layout viewport coordinates from the caller.

The layout viewport incorporates page zoom, so this conversion is needed in order to treat the input point as being in the same space as the rect output by getBoundingClientRect(). For example, with an 800x600 window and a page zoom of 2, the layout viewport will still be 800x600, but an element positioned at the bottom right of the window (and at the bottom right of the layout viewport) will have a bounding client rect whose bottom right corner is (400, 300).

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4934
&gt;&gt; +            hitTestArea.intersect(renderer().view().frameView().visibleContentRect(LegacyIOSDocumentVisibleRect));
&gt; 
&gt; Neither of these make much sense for the case when visualOverflowRect() was called; that&apos;s not in absolute coordinates.

I&apos;ll look into this some more to figure out how hitTestArea is being used in the RenderFlowThread case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325714</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-05 12:48:03 -0700</bug_when>
    <thetext>(In reply to Ali Juma from comment #7)
&gt; Comment on attachment 314585 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314585&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/TreeScope.cpp:307
&gt; &gt;&gt; +        documentScope().updateLayout();
&gt; &gt; 
&gt; &gt; Why is this documentScope().updateLayout(); only in the visual viewport code path?
&gt; 
&gt; This is because of the call to view-&gt;layoutViewportRect() below. We need the
&gt; layout viewport updated before that. In the existing code path, we don&apos;t
&gt; update layout until RenderView::hitTest.

OK.


&gt; &gt;&gt; Source/WebCore/dom/TreeScope.cpp:308
&gt; &gt;&gt; +        FloatPoint layoutViewportPoint = view-&gt;clientToLayoutViewportPoint(clientPoint);
&gt; &gt; 
&gt; &gt; clientPoint should already be in layout viewport coordinates from the caller.
&gt; 
&gt; The layout viewport incorporates page zoom, so this conversion is needed in
&gt; order to treat the input point as being in the same space as the rect output
&gt; by getBoundingClientRect().

Ah right. Long term, I&apos;d like all &quot;document&quot; coordinates to be independent of page zoom (see recently-added FIXME in FrameView.h), so ideally visual/layoutViewportRects would not change with page zoom, but that&apos;s too invasive to do now. I was going to ask you if you&apos;d tested with page zoom!

&gt; &gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4934
&gt; &gt;&gt; +            hitTestArea.intersect(renderer().view().frameView().visibleContentRect(LegacyIOSDocumentVisibleRect));
&gt; &gt; 
&gt; &gt; Neither of these make much sense for the case when visualOverflowRect() was called; that&apos;s not in absolute coordinates.
&gt; 
&gt; I&apos;ll look into this some more to figure out how hitTestArea is being used in
&gt; the RenderFlowThread case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326494</commentid>
    <comment_count>9</comment_count>
      <attachid>314850</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-07 08:55:47 -0700</bug_when>
    <thetext>Created attachment 314850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326513</commentid>
    <comment_count>10</comment_count>
      <attachid>314585</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-07 10:26:59 -0700</bug_when>
    <thetext>Comment on attachment 314585
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4934
&gt;&gt;&gt;&gt; +            hitTestArea.intersect(renderer().view().frameView().visibleContentRect(LegacyIOSDocumentVisibleRect));
&gt;&gt;&gt; 
&gt;&gt;&gt; Neither of these make much sense for the case when visualOverflowRect() was called; that&apos;s not in absolute coordinates.
&gt;&gt; 
&gt;&gt; I&apos;ll look into this some more to figure out how hitTestArea is being used in the RenderFlowThread case.
&gt; 
&gt; 

It turns out that the visualOverflowRect() case never happens, since RenderLayer::hitTest is never called on a RenderFlowThread. RenderLayer::hitTest is the top-level entry point to hit-testing (RenderLayer::hitTestLayer is what gets called on each layer). It&apos;s mostly called on RenderViews, though from accessibility code it&apos;s possible to call it on the currently focused Element&apos;s RenderObject&apos;s layer. But RenderFlowThreads are never directly owned by Elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326721</commentid>
    <comment_count>11</comment_count>
      <attachid>314850</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-07 18:07:02 -0700</bug_when>
    <thetext>Comment on attachment 314850
Patch

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

See the &quot;Coordinate systems:&quot; comment in FrameView.h, and enhance it to add &quot;layoutViewport&quot; coordinates.

&gt; Source/WebCore/page/FrameView.cpp:4930
&gt; +    ASSERT(frame().settings().visualViewportEnabled());
&gt; +    rect.scale(frame().frameScaleFactor());
&gt; +    return rect;

This seems wrong. layoutViewport -&gt; absolute should be accounting for both the layout viewport origin, and the frame scale.

&gt; Source/WebCore/page/FrameView.cpp:4936
&gt; +    p.scale(frame().frameScaleFactor());

Ditto.

&gt; Source/WebCore/page/FrameView.cpp:4944
&gt; +    ASSERT(frame().settings().visualViewportEnabled());
&gt; +    p.scale(frame().pageZoomFactor());
&gt; +    p.moveBy(layoutViewportRect().location());

client to layout viewport should just be about pageZoom.

&gt; Source/WebCore/page/FrameView.h:480
&gt; +    FloatRect layoutViewportToAbsoluteRect(FloatRect) const;
&gt; +    FloatPoint layoutViewportToAbsolutePoint(FloatPoint) const;
&gt; +
&gt; +    FloatPoint clientToLayoutViewportPoint(FloatPoint) const;

Please add a comment saying that &quot;layoutViewport&quot; coordinate differ from client coordinates because of page zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327016</commentid>
    <comment_count>12</comment_count>
      <attachid>314984</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-10 08:50:25 -0700</bug_when>
    <thetext>Created attachment 314984
Patch

Addressed comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327087</commentid>
    <comment_count>13</comment_count>
      <attachid>314984</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-10 11:50:13 -0700</bug_when>
    <thetext>Comment on attachment 314984
Patch

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

&gt; Source/WebCore/dom/TreeScope.cpp:309
&gt; +        FloatRect layoutViewportBounds(FloatPoint(), view-&gt;layoutViewportRect().size());

FloatPoint() can be { }

&gt; Source/WebCore/page/FrameView.cpp:4939
&gt; +    p.scale(frame().frameScaleFactor());
&gt; +    return p;

This can use p.scaled()

&gt; Source/WebCore/page/FrameView.cpp:4946
&gt; +    p.scale(frame().pageZoomFactor());
&gt; +    return p;

This can use p.scaled()

&gt; Source/WebCore/page/FrameView.h:455
&gt; +    //    Relative to the layout viewport rect, affected by page zoom but not by page scale. Affected by scroll origin.

I would say &quot;Similar to client coordinates, but affected by page zoom (but not page scale).&quot; I think the &quot;Affected by scroll origin&quot; adds confusion, so remove it.

&gt; Source/WebCore/rendering/RenderLayer.cpp:4931
&gt; +            const FrameView&amp; frameView = renderer().view().frameView();

auto&amp; frameView =

&gt; Source/WebCore/rendering/RenderLayer.cpp:4932
&gt; +            LayoutRect layoutViewportBounds(LayoutPoint(), frameView.layoutViewportRect().size());

LayoutPoint() -&gt; { }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327134</commentid>
    <comment_count>14</comment_count>
      <attachid>315019</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-10 13:54:10 -0700</bug_when>
    <thetext>Created attachment 315019
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327177</commentid>
    <comment_count>15</comment_count>
      <attachid>315019</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-10 14:04:04 -0700</bug_when>
    <thetext>Comment on attachment 315019
Patch for landing

Rejecting attachment 315019 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 315019, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/4094583</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327186</commentid>
    <comment_count>16</comment_count>
      <attachid>315022</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-10 14:07:06 -0700</bug_when>
    <thetext>Created attachment 315022
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327190</commentid>
    <comment_count>17</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-07-10 14:10:24 -0700</bug_when>
    <thetext>Sorry about the previous patch, I was expecting the commit queue to fix up the OOPS lines. The newly-uploaded patch should be good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327588</commentid>
    <comment_count>18</comment_count>
      <attachid>315022</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-11 11:01:19 -0700</bug_when>
    <thetext>Comment on attachment 315022
Patch for landing

Clearing flags on attachment: 315022

Committed r219342: &lt;http://trac.webkit.org/changeset/219342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327589</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-11 11:01:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313860</attachid>
            <date>2017-06-26 11:59:25 -0700</date>
            <delta_ts>2017-07-04 16:27:58 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-172019-20170626145924.patch</filename>
            <type>text/plain</type>
            <size>7574</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE2OTZlNDcwMGMzMGM0
MzU1OTU1YzVhNjFiZWMxNzI3MmUzNjlhNS4uODJhMTE5OTQwMmQ1MjZjZjgzNmE5ZDY0Y2Y0Yjlh
ZDk4NjRmMWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA2LTI2ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkg
c2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQp
IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwMTkKKworICAgICAgICBUaGlzIG1ha2VzIFRyZWVTY29wZTo6bm9kZUZyb21Qb2lu
dCBjb25zaWRlciBpdHMgaW5wdXQgdG8gYmUgaW4gbGF5b3V0IHZpZXdwb3J0CisgICAgICAgIGNv
b3JkaW5hdGVzLCBhbmQgY2xpcHMgdGhpcyBpbnB1dCB0byB0aGUgbGF5b3V0IHZpZXdwb3J0LiBU
aGlzIGNoYW5nZSBhZmZlY3RzCisgICAgICAgIHRoZSBiZWhhdmlvciBvZiBkb2N1bWVudC5lbGVt
ZW50RnJvbVBvaW50KCkgYW5kIGRvY3VtZW50LmNhcmV0UmFuZ2VGcm9tUG9pbnQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bm9kZUZyb21Qb2ludCk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphYnNvbHV0
ZVRvRG9jdW1lbnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRv
Y3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6ZG9jdW1lbnRUb0Fic29sdXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmRvY3VtZW50VG9BYnNvbHV0ZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
Y2xpZW50VG9Eb2N1bWVudFBvaW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6aGl0VGVzdCk6CisKIDIwMTctMDYtMjMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtIG1hY09TXSBlbnVtZXJhdGVE
ZXZpY2VzIHNob3VsZCBvbmx5IHJldHVybiB2YWxpZCBhdWRpbyBjYXB0dXJlIGRldmljZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggM2EwODUxMzkwY2VkMThiNTU3NzAyOGZlZmE0YmM3
MDRhYWQxOThjOS4uYmYyNmQyMDY2YTk1OTBiZjg4YjQwYWZjN2U2Nzg1NTk1N2NlY2E2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTMwMSwyMiArMzAxLDEzIEBAIE5vZGUqIFRyZWVT
Y29wZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91
dFBvaW50KiBsb2NhCiAgICAgaWYgKCFmcmFtZSB8fCAhdmlldykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3Rvcigp
ICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKLQotICAgIExheW91dFBvaW50IGNvbnRlbnRz
UG9pbnQgPSBjbGllbnRQb2ludDsKLSAgICBjb250ZW50c1BvaW50LnNjYWxlKHNjYWxlRmFjdG9y
KTsKLSAgICBjb250ZW50c1BvaW50Lm1vdmVCeSh2aWV3LT5jb250ZW50c1Njcm9sbFBvc2l0aW9u
KCkpOwotCi0gICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdDsKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgdmlzaWJsZVJlY3QgPSB2aWV3LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKLSNlbHNlCi0g
ICAgdmlzaWJsZVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSNlbmRpZgotICAg
IGlmICghdmlzaWJsZVJlY3QuY29udGFpbnMoY29udGVudHNQb2ludCkpCisgICAgRmxvYXRQb2lu
dCBkb2N1bWVudFBvaW50ID0gdmlldy0+Y2xpZW50VG9Eb2N1bWVudFBvaW50KGNsaWVudFBvaW50
KTsKKyAgICBpZiAoIXZpZXctPmxheW91dFZpZXdwb3J0UmVjdCgpLmNvbnRhaW5zKExheW91dFBv
aW50KGRvY3VtZW50UG9pbnQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdChjb250ZW50c1BvaW50KTsKKyAgICBGbG9hdFBvaW50IGFic29sdXRl
UG9pbnQgPSB2aWV3LT5kb2N1bWVudFRvQWJzb2x1dGVQb2ludChkb2N1bWVudFBvaW50KTsKKwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGFic29sdXRlUG9pbnQpOwogICAgIGRvY3VtZW50U2Nv
cGUoKS5yZW5kZXJWaWV3KCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoKSwgcmVzdWx0KTsKIAog
ICAgIGlmIChsb2NhbFBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDYxZTI2
OTUxZDFmM2M1MjI1MGE3OTk2NTVkZTIzMWI3ZTAwMDI3YWMuLjI5MTkzYTg3ZjExZGU2YjI1Y2I2
Zjk5M2JhMDQ4Y2EyZWI4NjA2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ4
OTcsOSArNDg5NywxNCBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAogCiBmbG9hdCBGcmFtZVZp
ZXc6OmFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVm
ZmVjdGl2ZVpvb20pIGNvbnN0CiB7Ci0gICAgLy8gSWYgZWZmZWN0aXZlWm9vbSBpcyBwYXNzZWQs
IGl0IGFscmVhZHkgZmFjdG9ycyBpbiBwYWdlWm9vbUZhY3RvcigpLiAKLSAgICBmbG9hdCBjc3Na
b29tID0gZWZmZWN0aXZlWm9vbS52YWx1ZV9vcihmcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpOyAK
LSAgICByZXR1cm4gMSAvIChjc3Nab29tICogZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOwor
ICAgIHJldHVybiAxIC8gZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoZWZmZWN0aXZlWm9v
bSk7Cit9CisKK2Zsb2F0IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3Io
c3RkOjpvcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK3sKKyAgICAvLyBJZiBl
ZmZlY3RpdmVab29tIGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Vab29tRmFj
dG9yKCkuCisgICAgZmxvYXQgY3NzWm9vbSA9IGVmZmVjdGl2ZVpvb20udmFsdWVfb3IoZnJhbWUo
KS5wYWdlWm9vbUZhY3RvcigpKTsKKyAgICByZXR1cm4gY3NzWm9vbSAqIGZyYW1lKCkuZnJhbWVT
Y2FsZUZhY3RvcigpOwogfQogCiBGbG9hdFJlY3QgRnJhbWVWaWV3OjphYnNvbHV0ZVRvRG9jdW1l
bnRSZWN0KEZsb2F0UmVjdCByZWN0LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29t
KSBjb25zdApAQCAtNDkwOCwxMiArNDkxMywyNCBAQCBGbG9hdFJlY3QgRnJhbWVWaWV3OjphYnNv
bHV0ZVRvRG9jdW1lbnRSZWN0KEZsb2F0UmVjdCByZWN0LCBzdGQ6Om9wdGlvbmFsPGZsb2F0Pgog
ICAgIHJldHVybiByZWN0OwogfQogCitGbG9hdFJlY3QgRnJhbWVWaWV3Ojpkb2N1bWVudFRvQWJz
b2x1dGVSZWN0KEZsb2F0UmVjdCByZWN0LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVa
b29tKSBjb25zdAoreworICAgIHJlY3Quc2NhbGUoZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0
b3IoZWZmZWN0aXZlWm9vbSkpOworICAgIHJldHVybiByZWN0OworfQorCiBGbG9hdFBvaW50IEZy
YW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCBwLCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAogewogICAgIHAuc2NhbGUoYWJzb2x1dGVU
b0RvY3VtZW50U2NhbGVGYWN0b3IoZWZmZWN0aXZlWm9vbSkpOwogICAgIHJldHVybiBwOwogfQog
CitGbG9hdFBvaW50IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlUG9pbnQoRmxvYXRQb2lu
dCBwLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAoreworICAgIHAu
c2NhbGUoZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoZWZmZWN0aXZlWm9vbSkpOworICAg
IHJldHVybiBwOworfQorCiBGbG9hdFNpemUgRnJhbWVWaWV3Ojpkb2N1bWVudFRvQ2xpZW50T2Zm
c2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdw
b3J0RW5hYmxlZCgpID8gLXRvRmxvYXRTaXplKGxheW91dFZpZXdwb3J0UmVjdCgpLmxvY2F0aW9u
KCkpIDogLXRvRmxvYXRTaXplKHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkpOwpAQCAt
NDkzMSw2ICs0OTQ4LDEyIEBAIEZsb2F0UG9pbnQgRnJhbWVWaWV3Ojpkb2N1bWVudFRvQ2xpZW50
UG9pbnQoRmxvYXRQb2ludCBwKSBjb25zdAogICAgIHJldHVybiBwOwogfQogCitGbG9hdFBvaW50
IEZyYW1lVmlldzo6Y2xpZW50VG9Eb2N1bWVudFBvaW50KEZsb2F0UG9pbnQgcCkgY29uc3QKK3sK
KyAgICBwLm1vdmUoLWRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSk7CisgICAgcmV0dXJuIHA7Cit9
CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMp
CiB7CiAgICAgaWYgKHRyYWNrUmVwYWludHMgPT0gbV9pc1RyYWNraW5nUmVwYWludHMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCAxM2RhMjkyNDkzNTQ2NWE3ZTI1NTU3NGIzZWU5ZjMwZjQy
MTQ4NDk1Li5kNTA1ZWQ0YTRhODdkZWM2NjRiNDg5MDA3YjkzN2MyOTcwMDU2NjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQ2NywxMCArNDY3LDE2IEBAIHB1YmxpYzoKICAgICBGbG9h
dFJlY3QgYWJzb2x1dGVUb0RvY3VtZW50UmVjdChGbG9hdFJlY3QsIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQg
YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCwgc3RkOjpvcHRpb25hbDxmbG9hdD4g
ZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKKyAgICBmbG9hdCBkb2N1bWVu
dFRvQWJzb2x1dGVTY2FsZUZhY3RvcihzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29t
ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBGbG9hdFJlY3QgZG9jdW1lbnRUb0Fic29sdXRl
UmVjdChGbG9hdFJlY3QsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OworICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRUb0Fic29sdXRlUG9pbnQo
RmxvYXRQb2ludCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CisKICAgICBGbG9hdFNpemUgZG9jdW1lbnRUb0NsaWVudE9mZnNldCgpIGNv
bnN0OwogICAgIEZsb2F0UmVjdCBkb2N1bWVudFRvQ2xpZW50UmVjdChGbG9hdFJlY3QpIGNvbnN0
OwogICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRUb0NsaWVudFBvaW50KEZsb2F0UG9pbnQpIGNvbnN0
OwogCisgICAgRmxvYXRQb2ludCBjbGllbnRUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCkgY29u
c3Q7CisKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKGNvbnN0IFJlbmRlclNjcm9s
bGJhclBhcnQmIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIgPT0g
JnNjcm9sbENvcm5lcjsgfQogCiAgICAgLy8gaXNTY3JvbGxhYmxlKCkgdGFrZXMgYW4gb3B0aW9u
YWwgU2Nyb2xsYWJpbGl0eSBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgdGhlIGNhbGxlciB0byBkZWZp
bmUgd2hhdCB0aGV5IG1lYW4gYnkgJ3Njcm9sbGFibGUuJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggN2EwZWJhYTYxZTk3ZGY5OGY0YjM3MjUzZDRmZTI5YmIy
YzA3YTdmNC4uZmU2ZmUzM2I5OGZmNjJmZjgwYjExZmRmZGY4ZmM2NWE0NDRkZWVkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00OTI1LDggKzQ5MjUsMTIg
QEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgIHVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgp
OwogCiAgICAgTGF5b3V0UmVjdCBoaXRUZXN0QXJlYSA9IGlzT3V0T2ZGbG93UmVuZGVyRmxvd1Ro
cmVhZCgpID8gZG93bmNhc3Q8UmVuZGVyRmxvd1RocmVhZD4ocmVuZGVyZXIoKSkudmlzdWFsT3Zl
cmZsb3dSZWN0KCkgOiByZW5kZXJlcigpLnZpZXcoKS5kb2N1bWVudFJlY3QoKTsKLSAgICBpZiAo
IXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkKLSAgICAgICAgaGl0VGVzdEFyZWEuaW50ZXJzZWN0
KHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KSk7CisgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5n
KCkpIHsKKyAgICAgICAgY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZp
ZXcoKS5mcmFtZVZpZXcoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUxheW91dFZpZXdw
b3J0UmVjdCA9IExheW91dFJlY3QoZnJhbWVWaWV3LmRvY3VtZW50VG9BYnNvbHV0ZVJlY3QoZnJh
bWVWaWV3LmxheW91dFZpZXdwb3J0UmVjdCgpLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKSk7CisgICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChhYnNvbHV0ZUxheW91dFZp
ZXdwb3J0UmVjdCk7CisgICAgfQorCiAKICAgICBSZW5kZXJMYXllciogaW5zaWRlTGF5ZXIgPSBo
aXRUZXN0TGF5ZXIodGhpcywgbnVsbHB0ciwgcmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0QXJlYSwg
aGl0VGVzdExvY2F0aW9uLCBmYWxzZSk7CiAgICAgaWYgKCFpbnNpZGVMYXllcikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314585</attachid>
            <date>2017-07-04 16:28:00 -0700</date>
            <delta_ts>2017-07-07 08:55:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172019-20170704192845.patch</filename>
            <type>text/plain</type>
            <size>12829</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I2ZDVhMGNlNTEyMDQ5
MmU1YTA5Mjc4OGY0ZjhkNDg3ZDAzODU4OS4uYmMwYmU4MGQwMmNhNzQ5N2Q2ZGY1YzNlNTJkNDEx
ZTFmNWUwNGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA3LTA0ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkg
c2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQp
IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwMTkKKworICAgICAgICBXaGVuIHZpc3VhbCB2aWV3cG9ydHMgYXJlIGVuYWJsZWQs
IHRoaXMgbWFrZXMgVHJlZVNjb3BlOjpub2RlRnJvbVBvaW50IGNvbnNpZGVyIGl0cworICAgICAg
ICBpbnB1dCB0byBiZSBpbiBjbGllbnQgY29vcmRpbmF0ZXMsIGFuZCBjbGlwcyB0aGlzIGlucHV0
IHRvIHRoZSBsYXlvdXQgdmlld3BvcnQuIFRoaXMgY2hhbmdlCisgICAgICAgIGFmZmVjdHMgdGhl
IGJlaGF2aW9yIG9mIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKSBhbmQgZG9jdW1lbnQuY2Fy
ZXRSYW5nZUZyb21Qb2ludC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE1vZGlmaWVkIGFuIGV4
aXN0aW5nIHRlc3QsIGFuZCBtYWRlIGEgcHJldmlvdXNseS1mYWlsaW5nIHRlc3QgcGFzcyBvbiBp
b3MuCisKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6bm9kZUZyb21Qb2ludCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRl
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjbGllbnRUb0xheW91dFZpZXdw
b3J0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRU
ZXN0KToKKwogMjAxNy0wNi0zMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFRvcCBjb250cm9scyBiYXJzIHNob3VsZCBpbnZlcnQgd2l0aCByaWdodC10by1s
ZWZ0IHVzZXIgaW50ZXJmYWNlIGxheW91dCBkaXJlY3Rpb24gbG9jYWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCmluZGV4IDNhMDg1MTM5MGNlZDE4YjU1NzcwMjhmZWZhNGJjNzA0YWFkMTk4Yzku
LjZjMDc2NjY3OGQ4ODY5NTA4NGM4MjIxMzQ4ZDBiOTEyNDE0NzdmOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMwMSwyMiArMzAyLDMx
IEBAIE5vZGUqIFRyZWVTY29wZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xp
ZW50UG9pbnQsIExheW91dFBvaW50KiBsb2NhCiAgICAgaWYgKCFmcmFtZSB8fCAhdmlldykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBMYXlvdXRQ
b2ludCBhYnNvbHV0ZVBvaW50OworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS52aXN1YWxWaWV3
cG9ydEVuYWJsZWQoKSkgeworICAgICAgICBkb2N1bWVudFNjb3BlKCkudXBkYXRlTGF5b3V0KCk7
CisgICAgICAgIEZsb2F0UG9pbnQgbGF5b3V0Vmlld3BvcnRQb2ludCA9IHZpZXctPmNsaWVudFRv
TGF5b3V0Vmlld3BvcnRQb2ludChjbGllbnRQb2ludCk7CisgICAgICAgIGlmICghdmlldy0+bGF5
b3V0Vmlld3BvcnRSZWN0KCkuY29udGFpbnMoTGF5b3V0UG9pbnQobGF5b3V0Vmlld3BvcnRQb2lu
dCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGFic29sdXRlUG9pbnQg
PSBMYXlvdXRQb2ludCh2aWV3LT5sYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVQb2ludChsYXlvdXRW
aWV3cG9ydFBvaW50KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CiAK
LSAgICBMYXlvdXRQb2ludCBjb250ZW50c1BvaW50ID0gY2xpZW50UG9pbnQ7Ci0gICAgY29udGVu
dHNQb2ludC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgY29udGVudHNQb2ludC5tb3ZlQnkodmll
dy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgYWJzb2x1dGVQb2ludCA9IGNs
aWVudFBvaW50OworICAgICAgICBhYnNvbHV0ZVBvaW50LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgYWJzb2x1dGVQb2ludC5tb3ZlQnkodmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigp
KTsKIAotICAgIExheW91dFJlY3QgdmlzaWJsZVJlY3Q7CisgICAgICAgIExheW91dFJlY3Qgdmlz
aWJsZVJlY3Q7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5v
YnNjdXJlZENvbnRlbnRSZWN0KCk7CisgICAgICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNj
dXJlZENvbnRlbnRSZWN0KCk7CiAjZWxzZQotICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCk7CisgICAgICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRl
bnRSZWN0KCk7CiAjZW5kaWYKLSAgICBpZiAoIXZpc2libGVSZWN0LmNvbnRhaW5zKGNvbnRlbnRz
UG9pbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF2aXNpYmxlUmVj
dC5jb250YWlucyhhYnNvbHV0ZVBvaW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRzUG9pbnQpOworICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KGFic29sdXRlUG9pbnQpOwogICAgIGRvY3VtZW50U2NvcGUoKS5y
ZW5kZXJWaWV3KCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoKSwgcmVzdWx0KTsKIAogICAgIGlm
IChsb2NhbFBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGE2OTJkMDQ5ZWNl
YTZhNTI5Y2E5MmM4YWI4YzY5MjZjMGRiYmIwNTcuLmMyYmNmNTcxZTRhNWE0NTMxMjkxMjk0MjNj
Mjg3YjI5NjY2NGY3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ5MjUsNiAr
NDkyNSwyOCBAQCBGbG9hdFBvaW50IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0NsaWVudFBvaW50KEZs
b2F0UG9pbnQgcCkgY29uc3QKICAgICByZXR1cm4gcDsKIH0KIAorRmxvYXRSZWN0IEZyYW1lVmll
dzo6bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRlUmVjdChGbG9hdFJlY3QgcmVjdCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsK
KyAgICByZWN0LnNjYWxlKGZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4g
cmVjdDsKK30KKworRmxvYXRQb2ludCBGcmFtZVZpZXc6OmxheW91dFZpZXdwb3J0VG9BYnNvbHV0
ZVBvaW50KEZsb2F0UG9pbnQgcCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUoKS5zZXR0aW5n
cygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKKyAgICBwLnNjYWxlKGZyYW1lKCkuZnJhbWVT
Y2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gcDsKK30KKworRmxvYXRQb2ludCBGcmFtZVZpZXc6
OmNsaWVudFRvTGF5b3V0Vmlld3BvcnRQb2ludChGbG9hdFBvaW50IHApIGNvbnN0Cit7CisgICAg
QVNTRVJUKGZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSk7CisgICAg
cC5zY2FsZShmcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpOworICAgIHAubW92ZUJ5KGxheW91dFZp
ZXdwb3J0UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHJldHVybiBwOworfQorCiB2b2lkIEZyYW1l
Vmlldzo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAgIGlmICh0
cmFja1JlcGFpbnRzID09IG1faXNUcmFja2luZ1JlcGFpbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKaW5kZXggMWM0NjcxNGVlMTUxN2JjOGM2NjQ3MTNiMzg2NmM3MzYxMTg1NDk2ZS4uN2QwZTVm
OTUwMTUxNmY1Y2NlNTNjMDEwZDZlMzJlNmNiZTA1OWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCkBAIC00NzQsNiArNDc0LDExIEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgZG9jdW1lbnRU
b0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKICAgICBGbG9hdFBvaW50IGRvY3VtZW50VG9D
bGllbnRQb2ludChGbG9hdFBvaW50KSBjb25zdDsKIAorICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3
cG9ydFRvQWJzb2x1dGVSZWN0KEZsb2F0UmVjdCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBsYXlv
dXRWaWV3cG9ydFRvQWJzb2x1dGVQb2ludChGbG9hdFBvaW50KSBjb25zdDsKKworICAgIEZsb2F0
UG9pbnQgY2xpZW50VG9MYXlvdXRWaWV3cG9ydFBvaW50KEZsb2F0UG9pbnQpIGNvbnN0OworCiAg
ICAgYm9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihjb25zdCBSZW5kZXJTY3JvbGxiYXJQYXJ0
JiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09ICZzY3JvbGxD
b3JuZXI7IH0KIAogICAgIC8vIGlzU2Nyb2xsYWJsZSgpIHRha2VzIGFuIG9wdGlvbmFsIFNjcm9s
bGFiaWxpdHkgcGFyYW1ldGVyIHRoYXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gZGVmaW5lIHdoYXQg
dGhleSBtZWFuIGJ5ICdzY3JvbGxhYmxlLicKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDk2ZTQ4YzIyMGMxODQzNjk5YzRkNWIxMDZlNmQyYWU1Mjc5ZGMwMjUu
Ljk3ZDdiYTYzMDNkNWE3MDQ4NGM3N2NhNWI3YTZlYThmMmYyMGMwZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDkyNSw4ICs0OTI1LDE0IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYKICAgICB1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKIAogICAg
IExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSA/
IGRvd25jYXN0PFJlbmRlckZsb3dUaHJlYWQ+KHJlbmRlcmVyKCkpLnZpc3VhbE92ZXJmbG93UmVj
dCgpIDogcmVuZGVyZXIoKS52aWV3KCkuZG9jdW1lbnRSZWN0KCk7Ci0gICAgaWYgKCFyZXF1ZXN0
Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5kZXJl
cigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygpKSB7Cisg
ICAgICAgIGlmIChyZW5kZXJlcigpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFibGVkKCkp
IHsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52
aWV3KCkuZnJhbWVWaWV3KCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IGFic29sdXRlTGF5b3V0
Vmlld3BvcnRSZWN0ID0gTGF5b3V0UmVjdChmcmFtZVZpZXcubGF5b3V0Vmlld3BvcnRUb0Fic29s
dXRlUmVjdChmcmFtZVZpZXcubGF5b3V0Vmlld3BvcnRSZWN0KCkpKTsKKyAgICAgICAgICAgIGhp
dFRlc3RBcmVhLmludGVyc2VjdChhYnNvbHV0ZUxheW91dFZpZXdwb3J0UmVjdCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgaGl0VGVzdEFyZWEuaW50ZXJzZWN0KHJlbmRlcmVyKCkudmll
dygpLmZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2li
bGVSZWN0KSk7CisgICAgfQogCiAgICAgUmVuZGVyTGF5ZXIqIGluc2lkZUxheWVyID0gaGl0VGVz
dExheWVyKHRoaXMsIG51bGxwdHIsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdEFyZWEsIGhpdFRl
c3RMb2NhdGlvbiwgZmFsc2UpOwogICAgIGlmICghaW5zaWRlTGF5ZXIpIHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzIw
YTZjMTE3NjZlMDQ4ODZjYzk3ODFhYTUzNDdhMWYwN2NjNGMxLi45MjQ5OWI3YWY0MjNiYTI5ZmQy
ZjVkNmQ4NGYyMTI3ZDFhYThlMTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDctMDQg
IEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGVsZW1lbnRGcm9tUG9p
bnQoKSBzaG91bGQgY29uc2lkZXIgeCBhbmQgeSB0byBiZSBpbiBjbGllbnQgKGxheW91dCB2aWV3
cG9ydCkgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MjAxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQtZXhw
ZWN0ZWQudHh0OiBVcGRhdGVkLgorICAgICAgICAqIGZhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQt
c2NhbGVkLXNjcm9sbGVkLmh0bWw6IFVwZGF0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFw
cGxlLmNvbT4KIAogICAgICAgICBUb3AgY29udHJvbHMgYmFycyBzaG91bGQgaW52ZXJ0IHdpdGgg
cmlnaHQtdG8tbGVmdCB1c2VyIGludGVyZmFjZSBsYXlvdXQgZGlyZWN0aW9uIGxvY2FsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Ny
b2xsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2lu
dC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0CmluZGV4IGY4MWZiNjMwYTM1Y2QxZDk2ODM2
YTc2NmEzYzQzOTAzOGRkZjQxNTEuLmQ5MjlkNGRjYmY0Nzk5Njg2ZjI1MGE0ZjM0NmM4ZDc5ZDU5
MjA2MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQt
c2NhbGVkLXNjcm9sbGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9l
bGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwy
MCBAQAotQjFCMkIzCi1UaGlzIHRlc3QgaXMgc3VjY2Vzc2Z1bCBpZiBlbGVtZW50RnJvbVBvaW50
IHJldHVybnMgdGhlIGNvcnJlY3QgZWxlbWVudC4KLUIzCitUaGlzIHRlc3QgYXBwbGllcyBwYWdl
IHNjYWxlIGFuZCBzY3JvbGxzIHRoZSBwYWdlLCBhbmQgY2hlY2tzIHRoYXQgZWxlbWVudEZyb21Q
b2ludCByZXR1cm5zIHRoZSBjb3JyZWN0IGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK1BBU1MgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgyMjUsIDEyNSkgaXMgYjEKK1BBU1Mg
ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCg1MjUsIDQyNSkgaXMgYjIKK1BBU1MgZG9jdW1lbnQu
ZWxlbWVudEZyb21Qb2ludCgyMjUsIDEyNSkgaXMgYjEKK1BBU1MgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCg1MjUsIDQyNSkgaXMgYjIKK1BBU1MgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgx
MTUsIDE1KSBpcyBiMQorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDQxNSwgMzE1KSBp
cyBiMgorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KC04NSwgMTUpIGlzIG51bGwKK1BB
U1MgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgyMTUsIDMxNSkgaXMgYjIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQuaHRt
bAppbmRleCBhYTgwOWVkZjYxY2UxOTdlNjdmNDZhYjI0MGVlMmE5YmYxYjU0OTc4Li4yMmJhMjA3
OWJmYzlkNjY2ZTE3NzJiM2M1YWMzNWI2ZmNjMzgzMzlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLmh0bWwK
QEAgLTEsMjQgKzEsNjAgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHN0eWxlPgorICAgIGJvZHkgeworICAgICAgICB3aWR0aDogMjAwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMDBweDsKKyAgICB9CisgICAgYnV0dG9uIHsKKyAgICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0K
KyAgICAjYjEgeworICAgICAgICBsZWZ0OiAyMDBweDsKKyAgICAgICAgdG9wOiAxMDBweDsKKyAg
ICB9CisgICAgI2IyIHsKKyAgICAgICAgbGVmdDogNTAwcHg7CisgICAgICAgIHRvcDogNDAwcHg7
CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBzdHls
ZT0id2lkdGg6MjAwMHB4O2hlaWdodDoyMDAwcHg7bWFyZ2luOjBweDtwYWRkaW5nOjEwMHB4Ij4K
LTxidXR0b24gc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7Ij5CMTwvYnV0dG9uPjxidXR0
b24gc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7Ij5CMjwvYnV0dG9uPjxidXR0b24gc3R5
bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7Ij5CMzwvYnV0dG9uPgotPGRpdj5UaGlzIHRlc3Qg
aXMgc3VjY2Vzc2Z1bCBpZiBlbGVtZW50RnJvbVBvaW50IHJldHVybnMgdGhlIGNvcnJlY3QgZWxl
bWVudC48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8YnV0dG9uIGlkPSJiMSI+PC9i
dXR0b24+Cis8YnV0dG9uIGlkPSJiMiI+PC9idXR0b24+CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IGFwcGxpZXMgcGFnZSBzY2FsZSBhbmQgc2Nyb2xscyB0aGUgcGFnZSwgYW5kIGNoZWNr
cyB0aGF0IGVsZW1lbnRGcm9tUG9pbnQgcmV0dXJucyB0aGUgY29ycmVjdCBlbGVtZW50LiIpOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
dGluZ3Muc2V0VmlzdWFsVmlld3BvcnRFbmFibGVkKHRydWUpOwogICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldFBhZ2VTY2FsZUZhY3RvcigyLCAwLCAwKTsKLSAgICB3aW5kb3cuc2Nyb2xsVG8o
MTAwLDEwMCk7CisgICAgfQorICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsIDEwMCk7CiAKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIC8vIFRoZSBsYXlvdXQgdmlld3BvcnQgaGFzbid0IGJlZW4gc2Nyb2xsZWQuCisgICAgc2hv
dWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMjI1LCAxMjUpIiwgImIxIik7CisgICAg
c2hvdWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoNTI1LCA0MjUpIiwgImIyIik7CiAK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gZG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludCgxMjUsIDI1KS5pbm5lclRleHQ7CisgICAgd2luZG93LnNjcm9s
bFRvKDIwMCwgMjAwKTsKKworICAgIC8vIGIxIGlzIG5vdyBvZmZzY3JlZW4sIGJ1dCBzdGlsbCB3
aXRoaW4gdGhlIGxheW91dCB2aWV3cG9ydC4KKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVu
dEZyb21Qb2ludCgyMjUsIDEyNSkiLCAiYjEiKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxl
bWVudEZyb21Qb2ludCg1MjUsIDQyNSkiLCAiYjIiKTsKKworICAgIHdpbmRvdy5zY3JvbGxUbyg1
MDAsIDQwMCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMTE1LCAx
NSkiLCAiYjEiKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCg0MTUs
IDMxNSkiLCAiYjIiKTsKKworICAgIHdpbmRvdy5zY3JvbGxUbyg3MDAsIDQwMCk7CisgICAgc2hv
dWxkQmVOdWxsKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KC04NSwgMTUpIik7CisgICAgc2hv
dWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMjE1LCAzMTUpIiwgImIyIik7CisKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKIH0KIDwvc2NyaXB0PgotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNlYThl
YjE1NWU3YTI0NzFmMWVhZDdjMmQ1ZjE2MGMxNmFlZWM2MjYuLmRkZDFiYjBiYzZhNGI1OTA5OGUx
YjRlY2U0MmFiZDJhMzRiOWNmYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0yNzIyLDYgKzI3MjIsNyBAQCB3ZWJraXQub3JnL2IvMTY0NTk0IGh0dHAv
dGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXJlcXVlc3QtaGVhZGVycy5odG1sCiB3
ZWJraXQub3JnL2IvMTYzMDQ2IGpzL3JlZ3Jlc3MtMTQxMDk4Lmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCiAjIFRlc3QgcmVsaWVzIG9uIHdpbmRvdy5zY3JvbGxUbworZmFzdC9kb20vZWxlbWVudEZy
b21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQuaHRtbCBbIFNraXAgXQogZmFzdC96b29taW5nL2NsaWVu
dC1yZWN0LWluLWZpeGVkLXpvb21lZC5odG1sIFsgU2tpcCBdCiBmYXN0L3Zpc3VhbC12aWV3cG9y
dC96b29tZWQtc2Nyb2xsLXRvLWFuY2hvci1pbi1wb3NpdGlvbi1maXhlZC5odG1sIFsgU2tpcCBd
CiBmYXN0L3Zpc3VhbC12aWV3cG9ydC96b29tZWQtc2Nyb2xsLWludG8tdmlldy1maXhlZC5odG1s
IFsgU2tpcCBdCkBAIC0yODIwLDggKzI4MjEsNiBAQCB3ZWJraXQub3JnL2IvMTI0OTMzIHN2Zy9h
bmltYXRpb25zL2dldEN1cnJlbnRUaW1lLXBhdXNlLXVucGF1c2UuaHRtbCBbIFBhc3MgRmFpbAog
d2Via2l0Lm9yZy9iLzE3MTc2MCBpbXBvcnRlZC93M2MvaTE4bi9iaWRpL2JpZGktcGxhaW50ZXh0
LTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTcxNzYwIGltcG9y
dGVkL3czYy9pMThuL2JpZGkvYmxvY2stcGxhaW50ZXh0LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzIwMTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3NvbS12aWV3L2VsZW1lbnRGcm9tUG9pbnQuaHRtbCBbIEZhaWx1cmUgXQotCiB3ZWJr
aXQub3JnL2IvMTcyNTQ3IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
NTBtcy1kb3dubG9hZC1kaXNwYXRjaC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
NzI2MTAgbWVkaWEvaW9zL2F1dG9wbGF5LW9ubHktaW4tbWFpbi1kb2N1bWVudC5odG1sIFsgU2tp
cCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314850</attachid>
            <date>2017-07-07 08:55:47 -0700</date>
            <delta_ts>2017-07-10 08:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172019-20170707115643.patch</filename>
            <type>text/plain</type>
            <size>12893</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhjNWJhZTMzODI5ZWVk
MmNkMGYyNWE2Y2QxNDI2MDA4MTFkMzg2NC4uYzVlZDRmZDVhYTdjNjcyM2Y5OWFlMjBhZDcxMTBh
NTQ1NDg2ZWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA3LTA3ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkg
c2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQp
IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwMTkKKworICAgICAgICBXaGVuIHZpc3VhbCB2aWV3cG9ydHMgYXJlIGVuYWJsZWQs
IHRoaXMgbWFrZXMgVHJlZVNjb3BlOjpub2RlRnJvbVBvaW50IGNvbnNpZGVyIGl0cworICAgICAg
ICBpbnB1dCB0byBiZSBpbiBjbGllbnQgY29vcmRpbmF0ZXMsIGFuZCBjbGlwcyB0aGlzIGlucHV0
IHRvIHRoZSBsYXlvdXQgdmlld3BvcnQuIFRoaXMgY2hhbmdlCisgICAgICAgIGFmZmVjdHMgdGhl
IGJlaGF2aW9yIG9mIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKSBhbmQgZG9jdW1lbnQuY2Fy
ZXRSYW5nZUZyb21Qb2ludC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE1vZGlmaWVkIGFuIGV4
aXN0aW5nIHRlc3QsIGFuZCBtYWRlIGEgcHJldmlvdXNseS1mYWlsaW5nIHRlc3QgcGFzcyBvbiBp
b3MuCisKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6bm9kZUZyb21Qb2ludCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRl
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjbGllbnRUb0xheW91dFZpZXdw
b3J0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRU
ZXN0KToKKwogMjAxNy0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVjZWl2aW5nIHRyYWNrcyBzaG91bGQgYmUgZW5kZWQgd2hlbiBwZWVyIGNvbm5l
Y3Rpb24gaXMgYmVpbmcgY2xvc2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDNhMDg1
MTM5MGNlZDE4YjU1NzcwMjhmZWZhNGJjNzA0YWFkMTk4YzkuLjZjMDc2NjY3OGQ4ODY5NTA4NGM4
MjIxMzQ4ZDBiOTEyNDE0NzdmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC00NCw2
ICs0NCw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMwMSwyMiArMzAyLDMxIEBAIE5vZGUqIFRyZWVTY29wZTo6
bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50
KiBsb2NhCiAgICAgaWYgKCFmcmFtZSB8fCAhdmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJh
bWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVBvaW50Owor
ICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSkgeworICAg
ICAgICBkb2N1bWVudFNjb3BlKCkudXBkYXRlTGF5b3V0KCk7CisgICAgICAgIEZsb2F0UG9pbnQg
bGF5b3V0Vmlld3BvcnRQb2ludCA9IHZpZXctPmNsaWVudFRvTGF5b3V0Vmlld3BvcnRQb2ludChj
bGllbnRQb2ludCk7CisgICAgICAgIGlmICghdmlldy0+bGF5b3V0Vmlld3BvcnRSZWN0KCkuY29u
dGFpbnMoTGF5b3V0UG9pbnQobGF5b3V0Vmlld3BvcnRQb2ludCkpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGFic29sdXRlUG9pbnQgPSBMYXlvdXRQb2ludCh2aWV3LT5s
YXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVQb2ludChsYXlvdXRWaWV3cG9ydFBvaW50KSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0
b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBMYXlvdXRQb2ludCBjb250
ZW50c1BvaW50ID0gY2xpZW50UG9pbnQ7Ci0gICAgY29udGVudHNQb2ludC5zY2FsZShzY2FsZUZh
Y3Rvcik7Ci0gICAgY29udGVudHNQb2ludC5tb3ZlQnkodmlldy0+Y29udGVudHNTY3JvbGxQb3Np
dGlvbigpKTsKKyAgICAgICAgYWJzb2x1dGVQb2ludCA9IGNsaWVudFBvaW50OworICAgICAgICBh
YnNvbHV0ZVBvaW50LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICAgICAgYWJzb2x1dGVQb2ludC5t
b3ZlQnkodmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIExheW91dFJlY3Qg
dmlzaWJsZVJlY3Q7CisgICAgICAgIExheW91dFJlY3QgdmlzaWJsZVJlY3Q7CiAjaWYgUExBVEZP
Uk0oSU9TKQotICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7
CisgICAgICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CiAj
ZWxzZQotICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAg
ICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjZW5kaWYKLSAg
ICBpZiAoIXZpc2libGVSZWN0LmNvbnRhaW5zKGNvbnRlbnRzUG9pbnQpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF2aXNpYmxlUmVjdC5jb250YWlucyhhYnNvbHV0ZVBv
aW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KGNvbnRlbnRzUG9pbnQpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGFi
c29sdXRlUG9pbnQpOwogICAgIGRvY3VtZW50U2NvcGUoKS5yZW5kZXJWaWV3KCktPmhpdFRlc3Qo
SGl0VGVzdFJlcXVlc3QoKSwgcmVzdWx0KTsKIAogICAgIGlmIChsb2NhbFBvaW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEwOWNjZTY3ZjMwODNlZjI0NTc2YzM0MjFkYTBiYTkw
YTE2ZmFjNjcuLjI2OTc3ZGNjNzJmOTg5NjYwODI4NjJjNTk3N2VlOWU5OWMxMThhZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ5MjMsNiArNDkyMywyOCBAQCBGbG9hdFBvaW50
IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0NsaWVudFBvaW50KEZsb2F0UG9pbnQgcCkgY29uc3QKICAg
ICByZXR1cm4gcDsKIH0KIAorRmxvYXRSZWN0IEZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fi
c29sdXRlUmVjdChGbG9hdFJlY3QgcmVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUoKS5z
ZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKKyAgICByZWN0LnNjYWxlKGZyYW1l
KCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gcmVjdDsKK30KKworRmxvYXRQb2lu
dCBGcmFtZVZpZXc6OmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVBvaW50KEZsb2F0UG9pbnQgcCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5h
YmxlZCgpKTsKKyAgICBwLnNjYWxlKGZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICBy
ZXR1cm4gcDsKK30KKworRmxvYXRQb2ludCBGcmFtZVZpZXc6OmNsaWVudFRvTGF5b3V0Vmlld3Bv
cnRQb2ludChGbG9hdFBvaW50IHApIGNvbnN0Cit7CisgICAgQVNTRVJUKGZyYW1lKCkuc2V0dGlu
Z3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSk7CisgICAgcC5zY2FsZShmcmFtZSgpLnBhZ2Va
b29tRmFjdG9yKCkpOworICAgIHAubW92ZUJ5KGxheW91dFZpZXdwb3J0UmVjdCgpLmxvY2F0aW9u
KCkpOworICAgIHJldHVybiBwOworfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0VHJhY2tzUmVwYWlu
dHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAgIGlmICh0cmFja1JlcGFpbnRzID09IG1faXNU
cmFja2luZ1JlcGFpbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMWM0NjcxNGVlMTUx
N2JjOGM2NjQ3MTNiMzg2NmM3MzYxMTg1NDk2ZS4uN2QwZTVmOTUwMTUxNmY1Y2NlNTNjMDEwZDZl
MzJlNmNiZTA1OWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00NzQsNiArNDc0LDEx
IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0
KSBjb25zdDsKICAgICBGbG9hdFBvaW50IGRvY3VtZW50VG9DbGllbnRQb2ludChGbG9hdFBvaW50
KSBjb25zdDsKIAorICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0KEZs
b2F0UmVjdCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVQ
b2ludChGbG9hdFBvaW50KSBjb25zdDsKKworICAgIEZsb2F0UG9pbnQgY2xpZW50VG9MYXlvdXRW
aWV3cG9ydFBvaW50KEZsb2F0UG9pbnQpIGNvbnN0OworCiAgICAgYm9vbCBpc0ZyYW1lVmlld1Nj
cm9sbENvcm5lcihjb25zdCBSZW5kZXJTY3JvbGxiYXJQYXJ0JiBzY3JvbGxDb3JuZXIpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09ICZzY3JvbGxDb3JuZXI7IH0KIAogICAgIC8vIGlz
U2Nyb2xsYWJsZSgpIHRha2VzIGFuIG9wdGlvbmFsIFNjcm9sbGFiaWxpdHkgcGFyYW1ldGVyIHRo
YXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gZGVmaW5lIHdoYXQgdGhleSBtZWFuIGJ5ICdzY3JvbGxh
YmxlLicKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDk2ZTQ4
YzIyMGMxODQzNjk5YzRkNWIxMDZlNmQyYWU1Mjc5ZGMwMjUuLmEwZWZjZTExODQyNWIwNzc1MTBh
YTg5YjY3YjRhM2UxNTVhNzc3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtNDkyNCw5ICs0OTI0LDE2IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3Qo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAg
ICAKICAgICB1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKIAotICAgIExheW91dFJlY3QgaGl0
VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSA/IGRvd25jYXN0PFJlbmRl
ckZsb3dUaHJlYWQ+KHJlbmRlcmVyKCkpLnZpc3VhbE92ZXJmbG93UmVjdCgpIDogcmVuZGVyZXIo
KS52aWV3KCkuZG9jdW1lbnRSZWN0KCk7Ci0gICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5n
KCkpCi0gICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5kZXJlcigpLnZpZXcoKS5mcmFt
ZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkp
OworICAgIEFTU0VSVCghaXNSZW5kZXJGbG93VGhyZWFkKCkpOworICAgIExheW91dFJlY3QgaGl0
VGVzdEFyZWEgPSByZW5kZXJlcigpLnZpZXcoKS5kb2N1bWVudFJlY3QoKTsKKyAgICBpZiAoIXJl
cXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkgeworICAgICAgICBpZiAocmVuZGVyZXIoKS5zZXR0aW5n
cygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7CisgICAgICAgICAgICBjb25zdCBGcmFtZVZp
ZXcmIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOworICAgICAgICAg
ICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUxheW91dFZpZXdwb3J0UmVjdCA9IExheW91dFJlY3QoZnJh
bWVWaWV3LmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVJlY3QoZnJhbWVWaWV3LmxheW91dFZpZXdw
b3J0UmVjdCgpKSk7CisgICAgICAgICAgICBoaXRUZXN0QXJlYS5pbnRlcnNlY3QoYWJzb2x1dGVM
YXlvdXRWaWV3cG9ydFJlY3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGhpdFRlc3RB
cmVhLmludGVyc2VjdChyZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVu
dFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgIH0KIAogICAgIFJlbmRl
ckxheWVyKiBpbnNpZGVMYXllciA9IGhpdFRlc3RMYXllcih0aGlzLCBudWxscHRyLCByZXF1ZXN0
LCByZXN1bHQsIGhpdFRlc3RBcmVhLCBoaXRUZXN0TG9jYXRpb24sIGZhbHNlKTsKICAgICBpZiAo
IWluc2lkZUxheWVyKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTYyYWJlODg5MWVlN2FkMWIxZjE0MmViNGZjNzc2YmQx
ODY1ZmQ1Ni4uY2Q3MGM0NjQ1ODRkYjVhNDQ0MTM0NjU0ZTgxYjdlMmQ4MjhmODc1NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE3LTA3LTA3ICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkgc2hvdWxkIGNvbnNpZGVyIHggYW5kIHkg
dG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQpIGNvb3JkaW5hdGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2VsZW1lbnRG
cm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sOiBVcGRhdGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTA3LTA1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWNlaXZpbmcg
dHJhY2tzIHNob3VsZCBiZSBlbmRlZCB3aGVuIHBlZXIgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9z
ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2Nh
bGVkLXNjcm9sbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRG
cm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLWV4cGVjdGVkLnR4dAppbmRleCBmODFmYjYzMGEzNWNk
MWQ5NjgzNmE3NjZhM2M0MzkwMzhkZGY0MTUxLi5kOTI5ZDRkY2JmNDc5OTY4NmYyNTBhNGYzNDZj
OGQ3OWQ1OTIwNjBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJv
bVBvaW50LXNjYWxlZC1zY3JvbGxlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0CkBAIC0x
LDMgKzEsMjAgQEAKLUIxQjJCMwotVGhpcyB0ZXN0IGlzIHN1Y2Nlc3NmdWwgaWYgZWxlbWVudEZy
b21Qb2ludCByZXR1cm5zIHRoZSBjb3JyZWN0IGVsZW1lbnQuCi1CMworVGhpcyB0ZXN0IGFwcGxp
ZXMgcGFnZSBzY2FsZSBhbmQgc2Nyb2xscyB0aGUgcGFnZSwgYW5kIGNoZWNrcyB0aGF0IGVsZW1l
bnRGcm9tUG9pbnQgcmV0dXJucyB0aGUgY29ycmVjdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMjI1LCAxMjUpIGlzIGIx
CitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoNTI1LCA0MjUpIGlzIGIyCitQQVNTIGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMjI1LCAxMjUpIGlzIGIxCitQQVNTIGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQoNTI1LCA0MjUpIGlzIGIyCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9t
UG9pbnQoMTE1LCAxNSkgaXMgYjEKK1BBU1MgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCg0MTUs
IDMxNSkgaXMgYjIKK1BBU1MgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgtODUsIDE1KSBpcyBu
dWxsCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMjE1LCAzMTUpIGlzIGIyCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9s
bGVkLmh0bWwKaW5kZXggYWE4MDllZGY2MWNlMTk3ZTY3ZjQ2YWIyNDBlZTJhOWJmMWI1NDk3OC4u
MjJiYTIwNzliZmM5ZDY2NmUxNzcyYjNjNWFjMzViNmZjYzM4MzM5ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxl
ZC5odG1sCkBAIC0xLDI0ICsxLDYwIEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzdHlsZT4KKyAgICBib2R5IHsKKyAgICAgICAgd2lkdGg6IDIwMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDAwcHg7CisgICAgfQorICAgIGJ1dHRvbiB7CisgICAgICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDogNTBweDsK
KyAgICB9CisgICAgI2IxIHsKKyAgICAgICAgbGVmdDogMjAwcHg7CisgICAgICAgIHRvcDogMTAw
cHg7CisgICAgfQorICAgICNiMiB7CisgICAgICAgIGxlZnQ6IDUwMHB4OworICAgICAgICB0b3A6
IDQwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgp
OyIgc3R5bGU9IndpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4O21hcmdpbjowcHg7cGFkZGluZzox
MDBweCI+Ci08YnV0dG9uIHN0eWxlPSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4OyI+QjE8L2J1dHRv
bj48YnV0dG9uIHN0eWxlPSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4OyI+QjI8L2J1dHRvbj48YnV0
dG9uIHN0eWxlPSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4OyI+QjM8L2J1dHRvbj4KLTxkaXY+VGhp
cyB0ZXN0IGlzIHN1Y2Nlc3NmdWwgaWYgZWxlbWVudEZyb21Qb2ludCByZXR1cm5zIHRoZSBjb3Jy
ZWN0IGVsZW1lbnQuPC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGJ1dHRvbiBpZD0i
YjEiPjwvYnV0dG9uPgorPGJ1dHRvbiBpZD0iYjIiPjwvYnV0dG9uPgogPHNjcmlwdD4KIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBhcHBsaWVzIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbHMgdGhlIHBhZ2UsIGFu
ZCBjaGVja3MgdGhhdCBlbGVtZW50RnJvbVBvaW50IHJldHVybnMgdGhlIGNvcnJlY3QgZWxlbWVu
dC4iKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldFZpc3VhbFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKICAgICAgICAgd2lu
ZG93LmludGVybmFscy5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgd2luZG93LnNj
cm9sbFRvKDEwMCwxMDApOworICAgIH0KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwLCAxMDApOwog
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAvLyBUaGUgbGF5b3V0IHZpZXdwb3J0IGhhc24ndCBiZWVuIHNjcm9sbGVkLgor
ICAgIHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSIsICJiMSIp
OworICAgIHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSIsICJi
MiIpOwogCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9
IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMTI1LCAyNSkuaW5uZXJUZXh0OworICAgIHdpbmRv
dy5zY3JvbGxUbygyMDAsIDIwMCk7CisKKyAgICAvLyBiMSBpcyBub3cgb2Zmc2NyZWVuLCBidXQg
c3RpbGwgd2l0aGluIHRoZSBsYXlvdXQgdmlld3BvcnQuCisgICAgc2hvdWxkQmUoImRvY3VtZW50
LmVsZW1lbnRGcm9tUG9pbnQoMjI1LCAxMjUpIiwgImIxIik7CisgICAgc2hvdWxkQmUoImRvY3Vt
ZW50LmVsZW1lbnRGcm9tUG9pbnQoNTI1LCA0MjUpIiwgImIyIik7CisKKyAgICB3aW5kb3cuc2Ny
b2xsVG8oNTAwLCA0MDApOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50
KDExNSwgMTUpIiwgImIxIik7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9p
bnQoNDE1LCAzMTUpIiwgImIyIik7CisKKyAgICB3aW5kb3cuc2Nyb2xsVG8oNzAwLCA0MDApOwor
ICAgIHNob3VsZEJlTnVsbCgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgtODUsIDE1KSIpOwor
ICAgIHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIxNSwgMzE1KSIsICJiMiIp
OworCisgICAgZmluaXNoSlNUZXN0KCk7CiB9CiA8L3NjcmlwdD4KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA2ZWExYmY4M2QwZjBiYTJhNTUwMjQ2YTQ2OGM1NWQ2ZGFhMDg2MzNhLi5iMDc0NDU2ZDgzNzZh
ODQ3Y2MxYjBjZDk3ZWJhZDEzZGM0MWE0ZTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcxOCw2ICsyNzE4LDcgQEAgd2Via2l0Lm9yZy9iLzE2NDU5
NCBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMu
aHRtbAogd2Via2l0Lm9yZy9iLzE2MzA0NiBqcy9yZWdyZXNzLTE0MTA5OC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAogIyBUZXN0IHJlbGllcyBvbiB3aW5kb3cuc2Nyb2xsVG8KK2Zhc3QvZG9tL2Vs
ZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLmh0bWwgWyBTa2lwIF0KIGZhc3Qvem9vbWlu
Zy9jbGllbnQtcmVjdC1pbi1maXhlZC16b29tZWQuaHRtbCBbIFNraXAgXQogZmFzdC92aXN1YWwt
dmlld3BvcnQvem9vbWVkLXNjcm9sbC10by1hbmNob3ItaW4tcG9zaXRpb24tZml4ZWQuaHRtbCBb
IFNraXAgXQogZmFzdC92aXN1YWwtdmlld3BvcnQvem9vbWVkLXNjcm9sbC1pbnRvLXZpZXctZml4
ZWQuaHRtbCBbIFNraXAgXQpAQCAtMjgxNiw4ICsyODE3LDYgQEAgd2Via2l0Lm9yZy9iLzEyNDkz
MyBzdmcvYW5pbWF0aW9ucy9nZXRDdXJyZW50VGltZS1wYXVzZS11bnBhdXNlLmh0bWwgWyBQYXNz
IEZhaWwKIHdlYmtpdC5vcmcvYi8xNzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBs
YWludGV4dC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE3MTc2
MCBpbXBvcnRlZC93M2MvaTE4bi9iaWRpL2Jsb2NrLXBsYWludGV4dC0wMDUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcyMDE5IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3Nzb20tdmlldy9lbGVtZW50RnJvbVBvaW50Lmh0bWwgWyBGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzE3MjU0NyBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LTUwbXMtZG93bmxvYWQtZGlzcGF0Y2guaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTcyNjEwIG1lZGlhL2lvcy9hdXRvcGxheS1vbmx5LWluLW1haW4tZG9jdW1lbnQuaHRt
bCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314984</attachid>
            <date>2017-07-10 08:50:25 -0700</date>
            <delta_ts>2017-07-10 13:54:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172019-20170710115133.patch</filename>
            <type>text/plain</type>
            <size>13881</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OTBmZTI0YjAzOTVm
ODQzMzhiZTQyYTg5MzNiZTMyNDJjYmRiNy4uNmM2OGM5ZWRkNGZlMzQ0NTk3ZDFhMmU3NWRhMmY0
ODE1ODYyZmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA3LTEwICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkg
c2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQp
IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwMTkKKworICAgICAgICBXaGVuIHZpc3VhbCB2aWV3cG9ydHMgYXJlIGVuYWJsZWQs
IHRoaXMgbWFrZXMgVHJlZVNjb3BlOjpub2RlRnJvbVBvaW50IGNvbnNpZGVyIGl0cworICAgICAg
ICBpbnB1dCB0byBiZSBpbiBjbGllbnQgY29vcmRpbmF0ZXMsIGFuZCBjbGlwcyB0aGlzIGlucHV0
IHRvIHRoZSBsYXlvdXQgdmlld3BvcnQuIFRoaXMgY2hhbmdlCisgICAgICAgIGFmZmVjdHMgdGhl
IGJlaGF2aW9yIG9mIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKSBhbmQgZG9jdW1lbnQuY2Fy
ZXRSYW5nZUZyb21Qb2ludC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE1vZGlmaWVkIGFuIGV4
aXN0aW5nIHRlc3QsIGFuZCBtYWRlIGEgcHJldmlvdXNseS1mYWlsaW5nIHRlc3QgcGFzcyBvbiBp
b3MuCisKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6bm9kZUZyb21Qb2ludCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRl
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjbGllbnRUb0xheW91dFZpZXdw
b3J0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRU
ZXN0KToKKwogMjAxNy0wNy0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1NPVVBdIFNvdXBDb29raWVKYXIgaXMgbmV2ZXIgcmVsZWFzZWQg
KHJlc3VsdGluZyBpbiBzcWxpdGUgdGVtcCBmaWxlcyBseWluZyBhcm91bmQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCmluZGV4IDNhMDg1MTM5MGNlZDE4YjU1NzcwMjhmZWZhNGJjNzA0YWFkMTk4
YzkuLjc2ZDg4ODA5NTg4ZjdkNzI1ZjExMDgxNTMwMDg2NzhiOGJjYTNjMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckxvY2tD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMwMSwyMiArMzAy
LDMyIEBAIE5vZGUqIFRyZWVTY29wZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYg
Y2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2NhCiAgICAgaWYgKCFmcmFtZSB8fCAhdmlldykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1l
LT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBMYXlv
dXRQb2ludCBhYnNvbHV0ZVBvaW50OworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS52aXN1YWxW
aWV3cG9ydEVuYWJsZWQoKSkgeworICAgICAgICBkb2N1bWVudFNjb3BlKCkudXBkYXRlTGF5b3V0
KCk7CisgICAgICAgIEZsb2F0UG9pbnQgbGF5b3V0Vmlld3BvcnRQb2ludCA9IHZpZXctPmNsaWVu
dFRvTGF5b3V0Vmlld3BvcnRQb2ludChjbGllbnRQb2ludCk7CisgICAgICAgIEZsb2F0UmVjdCBs
YXlvdXRWaWV3cG9ydEJvdW5kcyhGbG9hdFBvaW50KCksIHZpZXctPmxheW91dFZpZXdwb3J0UmVj
dCgpLnNpemUoKSk7CisgICAgICAgIGlmICghbGF5b3V0Vmlld3BvcnRCb3VuZHMuY29udGFpbnMo
bGF5b3V0Vmlld3BvcnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgYWJzb2x1dGVQb2ludCA9IExheW91dFBvaW50KHZpZXctPmxheW91dFZpZXdwb3J0VG9BYnNv
bHV0ZVBvaW50KGxheW91dFZpZXdwb3J0UG9pbnQpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1l
U2NhbGVGYWN0b3IoKTsKIAotICAgIExheW91dFBvaW50IGNvbnRlbnRzUG9pbnQgPSBjbGllbnRQ
b2ludDsKLSAgICBjb250ZW50c1BvaW50LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBjb250ZW50
c1BvaW50Lm1vdmVCeSh2aWV3LT5jb250ZW50c1Njcm9sbFBvc2l0aW9uKCkpOworICAgICAgICBh
YnNvbHV0ZVBvaW50ID0gY2xpZW50UG9pbnQ7CisgICAgICAgIGFic29sdXRlUG9pbnQuc2NhbGUo
c2NhbGVGYWN0b3IpOworICAgICAgICBhYnNvbHV0ZVBvaW50Lm1vdmVCeSh2aWV3LT5jb250ZW50
c1Njcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdDsKKyAgICAg
ICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdDsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlzaWJs
ZVJlY3QgPSB2aWV3LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKKyAgICAgICAgdmlzaWJsZVJl
Y3QgPSB2aWV3LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKICNlbHNlCi0gICAgdmlzaWJsZVJl
Y3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgdmlzaWJsZVJlY3QgPSB2
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICNlbmRpZgotICAgIGlmICghdmlzaWJsZVJlY3Qu
Y29udGFpbnMoY29udGVudHNQb2ludCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBpZiAoIXZpc2libGVSZWN0LmNvbnRhaW5zKGFic29sdXRlUG9pbnQpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoY29udGVu
dHNQb2ludCk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoYWJzb2x1dGVQb2ludCk7CiAgICAg
ZG9jdW1lbnRTY29wZSgpLnJlbmRlclZpZXcoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCgpLCBy
ZXN1bHQpOwogCiAgICAgaWYgKGxvY2FsUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggMTA5Y2NlNjdmMzA4M2VmMjQ1NzZjMzQyMWRhMGJhOTBhMTZmYWM2Ny4uOWI3MDRlNDlk
NDY0OWM3NWFmZTA0OTFlYzI3YjljMTQ2YTVlNzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtNDkyMyw2ICs0OTIzLDI5IEBAIEZsb2F0UG9pbnQgRnJhbWVWaWV3Ojpkb2N1bWVu
dFRvQ2xpZW50UG9pbnQoRmxvYXRQb2ludCBwKSBjb25zdAogICAgIHJldHVybiBwOwogfQogCitG
bG9hdFJlY3QgRnJhbWVWaWV3OjpsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0KEZsb2F0UmVj
dCByZWN0KSBjb25zdAoreworICAgIEFTU0VSVChmcmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmll
d3BvcnRFbmFibGVkKCkpOworICAgIHJlY3QubW92ZUJ5KGxheW91dFZpZXdwb3J0UmVjdCgpLmxv
Y2F0aW9uKCkpOworICAgIHJlY3Quc2NhbGUoZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOwor
ICAgIHJldHVybiByZWN0OworfQorCitGbG9hdFBvaW50IEZyYW1lVmlldzo6bGF5b3V0Vmlld3Bv
cnRUb0Fic29sdXRlUG9pbnQoRmxvYXRQb2ludCBwKSBjb25zdAoreworICAgIEFTU0VSVChmcmFt
ZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFibGVkKCkpOworICAgIHAubW92ZUJ5KGxh
eW91dFZpZXdwb3J0UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHAuc2NhbGUoZnJhbWUoKS5mcmFt
ZVNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBwOworfQorCitGbG9hdFBvaW50IEZyYW1lVmll
dzo6Y2xpZW50VG9MYXlvdXRWaWV3cG9ydFBvaW50KEZsb2F0UG9pbnQgcCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKKyAg
ICBwLnNjYWxlKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSk7CisgICAgcmV0dXJuIHA7Cit9CisK
IHZvaWQgRnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCiB7
CiAgICAgaWYgKHRyYWNrUmVwYWludHMgPT0gbV9pc1RyYWNraW5nUmVwYWludHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAppbmRleCAxYzQ2NzE0ZWUxNTE3YmM4YzY2NDcxM2IzODY2YzczNjExODU0
OTZlLi4yYTEzNWE3YjRiMWM4N2NjYzAyOTQyM2Y4MzhkNGJiNDU2YTg2ZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKQEAgLTQ1MCw3ICs0NTAsMTAgQEAgcHVibGljOgogICAgIC8vICJDbGll
bnQiCiAgICAgLy8gICAgUmVsYXRpdmUgdG8gdGhlIHZpc2libGUgcGFydCBvZiB0aGUgZG9jdW1l
bnQgKG9yLCBtb3JlIHN0cmljdGx5LCB0aGUgbGF5b3V0IHZpZXdwb3J0IHJlY3QpLCBhbmQgd2l0
aCB0aGUgc2FtZSBzY2FsaW5nCiAgICAgLy8gICAgYXMgRG9jdW1lbnQgY29vcmRpbmF0ZXMsIGku
ZS4gbWF0Y2hpbmcgQ1NTIHBpeGVscy4gQWZmZWN0ZWQgYnkgc2Nyb2xsIG9yaWdpbi4KLSAgICAv
LyAgICAKKyAgICAvLworICAgIC8vICJMYXlvdXRWaWV3cG9ydCIKKyAgICAvLyAgICBSZWxhdGl2
ZSB0byB0aGUgbGF5b3V0IHZpZXdwb3J0IHJlY3QsIGFmZmVjdGVkIGJ5IHBhZ2Ugem9vbSBidXQg
bm90IGJ5IHBhZ2Ugc2NhbGUuIEFmZmVjdGVkIGJ5IHNjcm9sbCBvcmlnaW4uCisgICAgLy8KIAog
ICAgIC8vIE1ldGhvZHMgdG8gY29udmVydCBwb2ludHMgYW5kIHJlY3RzIGJldHdlZW4gdGhlIGNv
b3JkaW5hdGUgc3BhY2Ugb2YgdGhlIHJlbmRlcmVyLCBhbmQgdGhpcyB2aWV3LgogICAgIFdFQkNP
UkVfRVhQT1JUIEludFJlY3QgY29udmVydEZyb21SZW5kZXJlclRvQ29udGFpbmluZ1ZpZXcoY29u
c3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKQEAgLTQ3NCw2ICs0Nzcs
MTIgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBkb2N1bWVudFRvQ2xpZW50UmVjdChGbG9hdFJl
Y3QpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRUb0NsaWVudFBvaW50KEZsb2F0UG9p
bnQpIGNvbnN0OwogCisgICAgRmxvYXRSZWN0IGxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVJlY3Qo
RmxvYXRSZWN0KSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxheW91dFZpZXdwb3J0VG9BYnNvbHV0
ZVBvaW50KEZsb2F0UG9pbnQpIGNvbnN0OworCisgICAgLy8gVW5saWtlIGNsaWVudCBjb29yZGlu
YXRlcywgbGF5b3V0IHZpZXdwb3J0IGNvb3JkaW5hdGVzIGFyZSBhZmZlY3RlZCBieSBwYWdlIHpv
b20uCisgICAgRmxvYXRQb2ludCBjbGllbnRUb0xheW91dFZpZXdwb3J0UG9pbnQoRmxvYXRQb2lu
dCkgY29uc3Q7CisKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKGNvbnN0IFJlbmRl
clNjcm9sbGJhclBhcnQmIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3Ju
ZXIgPT0gJnNjcm9sbENvcm5lcjsgfQogCiAgICAgLy8gaXNTY3JvbGxhYmxlKCkgdGFrZXMgYW4g
b3B0aW9uYWwgU2Nyb2xsYWJpbGl0eSBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgdGhlIGNhbGxlciB0
byBkZWZpbmUgd2hhdCB0aGV5IG1lYW4gYnkgJ3Njcm9sbGFibGUuJwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTZlNDhjMjIwYzE4NDM2OTljNGQ1YjEwNmU2
ZDJhZTUyNzlkYzAyNS4uNTAyOWJiMjM0NTNjMTY4ZTI2NGU4Zjc1YTQ3MTdkODhkMzc4YjAxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00OTI0LDkgKzQ5
MjQsMTcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgIAogICAgIHVwZGF0ZUxheWVyTGlz
dHNJZk5lZWRlZCgpOwogCi0gICAgTGF5b3V0UmVjdCBoaXRUZXN0QXJlYSA9IGlzT3V0T2ZGbG93
UmVuZGVyRmxvd1RocmVhZCgpID8gZG93bmNhc3Q8UmVuZGVyRmxvd1RocmVhZD4ocmVuZGVyZXIo
KSkudmlzdWFsT3ZlcmZsb3dSZWN0KCkgOiByZW5kZXJlcigpLnZpZXcoKS5kb2N1bWVudFJlY3Qo
KTsKLSAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkKLSAgICAgICAgaGl0VGVzdEFy
ZWEuaW50ZXJzZWN0KHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnZpc2libGVDb250ZW50
UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CisgICAgQVNTRVJUKCFpc1JlbmRl
ckZsb3dUaHJlYWQoKSk7CisgICAgTGF5b3V0UmVjdCBoaXRUZXN0QXJlYSA9IHJlbmRlcmVyKCku
dmlldygpLmRvY3VtZW50UmVjdCgpOworICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGluZygp
KSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFi
bGVkKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVy
ZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IGxheW91dFZp
ZXdwb3J0Qm91bmRzKExheW91dFBvaW50KCksIGZyYW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3Qo
KS5zaXplKCkpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUxheW91dFZpZXdwb3J0
UmVjdCA9IExheW91dFJlY3QoZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVJlY3Qo
bGF5b3V0Vmlld3BvcnRCb3VuZHMpKTsKKyAgICAgICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2Vj
dChhYnNvbHV0ZUxheW91dFZpZXdwb3J0UmVjdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgaGl0VGVzdEFyZWEuaW50ZXJzZWN0KHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnZp
c2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CisgICAgfQog
CiAgICAgUmVuZGVyTGF5ZXIqIGluc2lkZUxheWVyID0gaGl0VGVzdExheWVyKHRoaXMsIG51bGxw
dHIsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdEFyZWEsIGhpdFRlc3RMb2NhdGlvbiwgZmFsc2Up
OwogICAgIGlmICghaW5zaWRlTGF5ZXIpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTBjN2U2M2MxNzdiMDA5YjQ1MThm
MTU1NjU0ZDVhZTAwMDI0YzMwLi5hMWY5Y2QzNTBmNzdmN2MzNDRjMWJmMWZkYjUyYjhhMTdkNTE1
ZDU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDctMTAgIEFsaSBKdW1hICA8YWp1bWFA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIGVsZW1lbnRGcm9tUG9pbnQoKSBzaG91bGQgY29uc2lk
ZXIgeCBhbmQgeSB0byBiZSBpbiBjbGllbnQgKGxheW91dCB2aWV3cG9ydCkgY29vcmRpbmF0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjAxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9k
b20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0OiBVcGRhdGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLmh0
bWw6IFVwZGF0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTctMDctMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBVc2VyIGludGVyYWN0aW9uIHNob3VsZCBhbHdh
eXMgZ28gdG8gdG9wIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9l
bGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC1leHBlY3RlZC50eHQK
aW5kZXggZjgxZmI2MzBhMzVjZDFkOTY4MzZhNzY2YTNjNDM5MDM4ZGRmNDE1MS4uZDkyOWQ0ZGNi
ZjQ3OTk2ODZmMjUwYTRmMzQ2YzhkNzlkNTkyMDYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVk
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDIwIEBACi1CMUIyQjMKLVRoaXMgdGVzdCBpcyBzdWNj
ZXNzZnVsIGlmIGVsZW1lbnRGcm9tUG9pbnQgcmV0dXJucyB0aGUgY29ycmVjdCBlbGVtZW50Lgot
QjMKK1RoaXMgdGVzdCBhcHBsaWVzIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbHMgdGhlIHBhZ2UsIGFu
ZCBjaGVja3MgdGhhdCBlbGVtZW50RnJvbVBvaW50IHJldHVybnMgdGhlIGNvcnJlY3QgZWxlbWVu
dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBv
aW50KDIyNSwgMTI1KSBpcyBiMQorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwg
NDI1KSBpcyBiMgorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSBpcyBi
MQorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSBpcyBiMgorUEFTUyBk
b2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDExNSwgMTUpIGlzIGIxCitQQVNTIGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQoNDE1LCAzMTUpIGlzIGIyCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9t
UG9pbnQoLTg1LCAxNSkgaXMgbnVsbAorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIx
NSwgMzE1KSBpcyBiMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9p
bnQtc2NhbGVkLXNjcm9sbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJv
bVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sCmluZGV4IGFhODA5ZWRmNjFjZTE5N2U2N2Y0NmFi
MjQwZWUyYTliZjFiNTQ5NzguLjIyYmEyMDc5YmZjOWQ2NjZlMTc3MmIzYzVhYzM1YjZmY2MzODMz
OWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2Nh
bGVkLXNjcm9sbGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Q
b2ludC1zY2FsZWQtc2Nyb2xsZWQuaHRtbApAQCAtMSwyNCArMSw2MCBAQAogPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7CisgICAgICAgIHdp
ZHRoOiAyMDAwcHg7CisgICAgICAgIGhlaWdodDogMjAwMHB4OworICAgIH0KKyAgICBidXR0b24g
eworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAg
ICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorICAgICNiMSB7CisgICAgICAgIGxlZnQ6IDIwMHB4
OworICAgICAgICB0b3A6IDEwMHB4OworICAgIH0KKyAgICAjYjIgeworICAgICAgICBsZWZ0OiA1
MDBweDsKKyAgICAgICAgdG9wOiA0MDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDtt
YXJnaW46MHB4O3BhZGRpbmc6MTAwcHgiPgotPGJ1dHRvbiBzdHlsZT0id2lkdGg6NTBweDtoZWln
aHQ6NTBweDsiPkIxPC9idXR0b24+PGJ1dHRvbiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6NTBw
eDsiPkIyPC9idXR0b24+PGJ1dHRvbiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6NTBweDsiPkIz
PC9idXR0b24+Ci08ZGl2PlRoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGVsZW1lbnRGcm9tUG9p
bnQgcmV0dXJucyB0aGUgY29ycmVjdCBlbGVtZW50LjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij48
L2Rpdj4KKzxidXR0b24gaWQ9ImIxIj48L2J1dHRvbj4KKzxidXR0b24gaWQ9ImIyIj48L2J1dHRv
bj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgYXBwbGllcyBwYWdlIHNjYWxlIGFuZCBz
Y3JvbGxzIHRoZSBwYWdlLCBhbmQgY2hlY2tzIHRoYXQgZWxlbWVudEZyb21Qb2ludCByZXR1cm5z
IHRoZSBjb3JyZWN0IGVsZW1lbnQuIik7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRWaXN1YWxWaWV3cG9ydEVuYWJsZWQo
dHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAs
IDApOwotICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsMTAwKTsKKyAgICB9CisgICAgd2luZG93LnNj
cm9sbFRvKDEwMCwgMTAwKTsKIAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgLy8gVGhlIGxheW91dCB2aWV3cG9ydCBoYXNu
J3QgYmVlbiBzY3JvbGxlZC4KKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2lu
dCgyMjUsIDEyNSkiLCAiYjEiKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludCg1MjUsIDQyNSkiLCAiYjIiKTsKIAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lclRleHQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDEyNSwgMjUpLmlu
bmVyVGV4dDsKKyAgICB3aW5kb3cuc2Nyb2xsVG8oMjAwLCAyMDApOworCisgICAgLy8gYjEgaXMg
bm93IG9mZnNjcmVlbiwgYnV0IHN0aWxsIHdpdGhpbiB0aGUgbGF5b3V0IHZpZXdwb3J0LgorICAg
IHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSIsICJiMSIpOwor
ICAgIHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSIsICJiMiIp
OworCisgICAgd2luZG93LnNjcm9sbFRvKDUwMCwgNDAwKTsKKyAgICBzaG91bGRCZSgiZG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludCgxMTUsIDE1KSIsICJiMSIpOworICAgIHNob3VsZEJlKCJkb2N1
bWVudC5lbGVtZW50RnJvbVBvaW50KDQxNSwgMzE1KSIsICJiMiIpOworCisgICAgd2luZG93LnNj
cm9sbFRvKDcwMCwgNDAwKTsKKyAgICBzaG91bGRCZU51bGwoImRvY3VtZW50LmVsZW1lbnRGcm9t
UG9pbnQoLTg1LCAxNSkiKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2lu
dCgyMTUsIDMxNSkiLCAiYjIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwogfQogPC9zY3JpcHQ+
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNzEyNTViYTU5MTI3M2IwYzY4OTdiMWM0NzdkZDQ1NWY2N2M1
N2NiMi4uOTMxODU5NDI1ZmFmMGNmZDVhZDIwMTNmNGIzYzkwMzI3YTVjZWU4MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3MTksNiArMjcxOSw3IEBA
IHdlYmtpdC5vcmcvYi8xNjQ1OTQgaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2Fj
aGUtcmVxdWVzdC1oZWFkZXJzLmh0bWwKIHdlYmtpdC5vcmcvYi8xNjMwNDYganMvcmVncmVzcy0x
NDEwOTguaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgVGVzdCByZWxpZXMgb24gd2luZG93LnNj
cm9sbFRvCitmYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sIFsg
U2tpcCBdCiBmYXN0L3pvb21pbmcvY2xpZW50LXJlY3QtaW4tZml4ZWQtem9vbWVkLmh0bWwgWyBT
a2lwIF0KIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3pvb21lZC1zY3JvbGwtdG8tYW5jaG9yLWluLXBv
c2l0aW9uLWZpeGVkLmh0bWwgWyBTa2lwIF0KIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3pvb21lZC1z
Y3JvbGwtaW50by12aWV3LWZpeGVkLmh0bWwgWyBTa2lwIF0KQEAgLTI4MTcsOCArMjgxOCw2IEBA
IHdlYmtpdC5vcmcvYi8xMjQ5MzMgc3ZnL2FuaW1hdGlvbnMvZ2V0Q3VycmVudFRpbWUtcGF1c2Ut
dW5wYXVzZS5odG1sIFsgUGFzcyBGYWlsCiB3ZWJraXQub3JnL2IvMTcxNzYwIGltcG9ydGVkL3cz
Yy9pMThuL2JpZGkvYmlkaS1wbGFpbnRleHQtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xNzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9ibG9jay1wbGFpbnRl
eHQtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3MjAxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzc29tLXZpZXcvZWxlbWVudEZyb21Qb2lu
dC5odG1sIFsgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzI1NDcgaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC01MG1zLWRvd25sb2FkLWRpc3BhdGNoLmh0bWwgWyBG
YWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3MjYxMCBtZWRpYS9pb3MvYXV0b3BsYXktb25seS1p
bi1tYWluLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315019</attachid>
            <date>2017-07-10 13:54:10 -0700</date>
            <delta_ts>2017-07-10 14:07:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172019-20170710165409.patch</filename>
            <type>text/plain</type>
            <size>13806</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OTBmZTI0YjAzOTVm
ODQzMzhiZTQyYTg5MzNiZTMyNDJjYmRiNy4uNmM2OGM5ZWRkNGZlMzQ0NTk3ZDFhMmU3NWRhMmY0
ODE1ODYyZmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA3LTEwICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkg
c2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQp
IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwMTkKKworICAgICAgICBXaGVuIHZpc3VhbCB2aWV3cG9ydHMgYXJlIGVuYWJsZWQs
IHRoaXMgbWFrZXMgVHJlZVNjb3BlOjpub2RlRnJvbVBvaW50IGNvbnNpZGVyIGl0cworICAgICAg
ICBpbnB1dCB0byBiZSBpbiBjbGllbnQgY29vcmRpbmF0ZXMsIGFuZCBjbGlwcyB0aGlzIGlucHV0
IHRvIHRoZSBsYXlvdXQgdmlld3BvcnQuIFRoaXMgY2hhbmdlCisgICAgICAgIGFmZmVjdHMgdGhl
IGJlaGF2aW9yIG9mIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKSBhbmQgZG9jdW1lbnQuY2Fy
ZXRSYW5nZUZyb21Qb2ludC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE1vZGlmaWVkIGFuIGV4
aXN0aW5nIHRlc3QsIGFuZCBtYWRlIGEgcHJldmlvdXNseS1mYWlsaW5nIHRlc3QgcGFzcyBvbiBp
b3MuCisKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6bm9kZUZyb21Qb2ludCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRl
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjbGllbnRUb0xheW91dFZpZXdw
b3J0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRU
ZXN0KToKKwogMjAxNy0wNy0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1NPVVBdIFNvdXBDb29raWVKYXIgaXMgbmV2ZXIgcmVsZWFzZWQg
KHJlc3VsdGluZyBpbiBzcWxpdGUgdGVtcCBmaWxlcyBseWluZyBhcm91bmQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCmluZGV4IDNhMDg1MTM5MGNlZDE4YjU1NzcwMjhmZWZhNGJjNzA0YWFkMTk4
YzkuLjI4MGRkMjA5Yzc3MzUxYTlmOTRjNTZmNDI3NTcyNDUxOWRlODI5ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUG9pbnRlckxvY2tD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMwMSwyMiArMzAy
LDMyIEBAIE5vZGUqIFRyZWVTY29wZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYg
Y2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2NhCiAgICAgaWYgKCFmcmFtZSB8fCAhdmlldykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1l
LT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICBMYXlv
dXRQb2ludCBhYnNvbHV0ZVBvaW50OworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS52aXN1YWxW
aWV3cG9ydEVuYWJsZWQoKSkgeworICAgICAgICBkb2N1bWVudFNjb3BlKCkudXBkYXRlTGF5b3V0
KCk7CisgICAgICAgIEZsb2F0UG9pbnQgbGF5b3V0Vmlld3BvcnRQb2ludCA9IHZpZXctPmNsaWVu
dFRvTGF5b3V0Vmlld3BvcnRQb2ludChjbGllbnRQb2ludCk7CisgICAgICAgIEZsb2F0UmVjdCBs
YXlvdXRWaWV3cG9ydEJvdW5kcyh7IH0sIHZpZXctPmxheW91dFZpZXdwb3J0UmVjdCgpLnNpemUo
KSk7CisgICAgICAgIGlmICghbGF5b3V0Vmlld3BvcnRCb3VuZHMuY29udGFpbnMobGF5b3V0Vmll
d3BvcnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYWJzb2x1
dGVQb2ludCA9IExheW91dFBvaW50KHZpZXctPmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVBvaW50
KGxheW91dFZpZXdwb3J0UG9pbnQpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0
b3IoKTsKIAotICAgIExheW91dFBvaW50IGNvbnRlbnRzUG9pbnQgPSBjbGllbnRQb2ludDsKLSAg
ICBjb250ZW50c1BvaW50LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBjb250ZW50c1BvaW50Lm1v
dmVCeSh2aWV3LT5jb250ZW50c1Njcm9sbFBvc2l0aW9uKCkpOworICAgICAgICBhYnNvbHV0ZVBv
aW50ID0gY2xpZW50UG9pbnQ7CisgICAgICAgIGFic29sdXRlUG9pbnQuc2NhbGUoc2NhbGVGYWN0
b3IpOworICAgICAgICBhYnNvbHV0ZVBvaW50Lm1vdmVCeSh2aWV3LT5jb250ZW50c1Njcm9sbFBv
c2l0aW9uKCkpOwogCi0gICAgTGF5b3V0UmVjdCB2aXNpYmxlUmVjdDsKKyAgICAgICAgTGF5b3V0
UmVjdCB2aXNpYmxlUmVjdDsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlzaWJsZVJlY3QgPSB2
aWV3LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKKyAgICAgICAgdmlzaWJsZVJlY3QgPSB2aWV3
LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKICNlbHNlCi0gICAgdmlzaWJsZVJlY3QgPSB2aWV3
LT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgdmlzaWJsZVJlY3QgPSB2aWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKTsKICNlbmRpZgotICAgIGlmICghdmlzaWJsZVJlY3QuY29udGFpbnMo
Y29udGVudHNQb2ludCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoIXZp
c2libGVSZWN0LmNvbnRhaW5zKGFic29sdXRlUG9pbnQpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoY29udGVudHNQb2ludCk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoYWJzb2x1dGVQb2ludCk7CiAgICAgZG9jdW1lbnRT
Y29wZSgpLnJlbmRlclZpZXcoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCgpLCByZXN1bHQpOwog
CiAgICAgaWYgKGxvY2FsUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTA5
Y2NlNjdmMzA4M2VmMjQ1NzZjMzQyMWRhMGJhOTBhMTZmYWM2Ny4uYjI5ZDg2YjQ3OTRhMDNhN2I4
MzYxNWNhZjAwNjU0ZWQxZjU1MzA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
NDkyMyw2ICs0OTIzLDI3IEBAIEZsb2F0UG9pbnQgRnJhbWVWaWV3Ojpkb2N1bWVudFRvQ2xpZW50
UG9pbnQoRmxvYXRQb2ludCBwKSBjb25zdAogICAgIHJldHVybiBwOwogfQogCitGbG9hdFJlY3Qg
RnJhbWVWaWV3OjpsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0KEZsb2F0UmVjdCByZWN0KSBj
b25zdAoreworICAgIEFTU0VSVChmcmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFi
bGVkKCkpOworICAgIHJlY3QubW92ZUJ5KGxheW91dFZpZXdwb3J0UmVjdCgpLmxvY2F0aW9uKCkp
OworICAgIHJlY3Quc2NhbGUoZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOworICAgIHJldHVy
biByZWN0OworfQorCitGbG9hdFBvaW50IEZyYW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29s
dXRlUG9pbnQoRmxvYXRQb2ludCBwKSBjb25zdAoreworICAgIEFTU0VSVChmcmFtZSgpLnNldHRp
bmdzKCkudmlzdWFsVmlld3BvcnRFbmFibGVkKCkpOworICAgIHAubW92ZUJ5KGxheW91dFZpZXdw
b3J0UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHJldHVybiBwLnNjYWxlZChmcmFtZSgpLmZyYW1l
U2NhbGVGYWN0b3IoKSk7Cit9CisKK0Zsb2F0UG9pbnQgRnJhbWVWaWV3OjpjbGllbnRUb0xheW91
dFZpZXdwb3J0UG9pbnQoRmxvYXRQb2ludCBwKSBjb25zdAoreworICAgIEFTU0VSVChmcmFtZSgp
LnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFibGVkKCkpOworICAgIHJldHVybiBwLnNjYWxl
ZChmcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpOworfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0VHJh
Y2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAgIGlmICh0cmFja1JlcGFpbnRz
ID09IG1faXNUcmFja2luZ1JlcGFpbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMWM0
NjcxNGVlMTUxN2JjOGM2NjQ3MTNiMzg2NmM3MzYxMTg1NDk2ZS4uZGNkMjY1NjNhZDE5M2U3NzUw
ZDU0NjRjZmU1NDcyMzEwZGE5YTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00NTAs
NyArNDUwLDEwIEBAIHB1YmxpYzoKICAgICAvLyAiQ2xpZW50IgogICAgIC8vICAgIFJlbGF0aXZl
IHRvIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGRvY3VtZW50IChvciwgbW9yZSBzdHJpY3RseSwg
dGhlIGxheW91dCB2aWV3cG9ydCByZWN0KSwgYW5kIHdpdGggdGhlIHNhbWUgc2NhbGluZwogICAg
IC8vICAgIGFzIERvY3VtZW50IGNvb3JkaW5hdGVzLCBpLmUuIG1hdGNoaW5nIENTUyBwaXhlbHMu
IEFmZmVjdGVkIGJ5IHNjcm9sbCBvcmlnaW4uCi0gICAgLy8gICAgCisgICAgLy8KKyAgICAvLyAi
TGF5b3V0Vmlld3BvcnQiCisgICAgLy8gICAgU2ltaWxhciB0byBjbGllbnQgY29vcmRpbmF0ZXMs
IGJ1dCBhZmZlY3RlZCBieSBwYWdlIHpvb20gKGJ1dCBub3QgcGFnZSBzY2FsZSkuCisgICAgLy8K
IAogICAgIC8vIE1ldGhvZHMgdG8gY29udmVydCBwb2ludHMgYW5kIHJlY3RzIGJldHdlZW4gdGhl
IGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIHJlbmRlcmVyLCBhbmQgdGhpcyB2aWV3LgogICAgIFdF
QkNPUkVfRVhQT1JUIEludFJlY3QgY29udmVydEZyb21SZW5kZXJlclRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKQEAgLTQ3NCw2ICs0
NzcsMTIgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBkb2N1bWVudFRvQ2xpZW50UmVjdChGbG9h
dFJlY3QpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRUb0NsaWVudFBvaW50KEZsb2F0
UG9pbnQpIGNvbnN0OwogCisgICAgRmxvYXRSZWN0IGxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVJl
Y3QoRmxvYXRSZWN0KSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxheW91dFZpZXdwb3J0VG9BYnNv
bHV0ZVBvaW50KEZsb2F0UG9pbnQpIGNvbnN0OworCisgICAgLy8gVW5saWtlIGNsaWVudCBjb29y
ZGluYXRlcywgbGF5b3V0IHZpZXdwb3J0IGNvb3JkaW5hdGVzIGFyZSBhZmZlY3RlZCBieSBwYWdl
IHpvb20uCisgICAgRmxvYXRQb2ludCBjbGllbnRUb0xheW91dFZpZXdwb3J0UG9pbnQoRmxvYXRQ
b2ludCkgY29uc3Q7CisKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKGNvbnN0IFJl
bmRlclNjcm9sbGJhclBhcnQmIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxD
b3JuZXIgPT0gJnNjcm9sbENvcm5lcjsgfQogCiAgICAgLy8gaXNTY3JvbGxhYmxlKCkgdGFrZXMg
YW4gb3B0aW9uYWwgU2Nyb2xsYWJpbGl0eSBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgdGhlIGNhbGxl
ciB0byBkZWZpbmUgd2hhdCB0aGV5IG1lYW4gYnkgJ3Njcm9sbGFibGUuJwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTZlNDhjMjIwYzE4NDM2OTljNGQ1YjEw
NmU2ZDJhZTUyNzlkYzAyNS4uOGNlYTlmNGEyNzYwNDEzMzQzYWJmZTI1YzIzMjg0YTE0MjAzY2Y5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00OTI0LDkg
KzQ5MjQsMTcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgIAogICAgIHVwZGF0ZUxheWVy
TGlzdHNJZk5lZWRlZCgpOwogCi0gICAgTGF5b3V0UmVjdCBoaXRUZXN0QXJlYSA9IGlzT3V0T2ZG
bG93UmVuZGVyRmxvd1RocmVhZCgpID8gZG93bmNhc3Q8UmVuZGVyRmxvd1RocmVhZD4ocmVuZGVy
ZXIoKSkudmlzdWFsT3ZlcmZsb3dSZWN0KCkgOiByZW5kZXJlcigpLnZpZXcoKS5kb2N1bWVudFJl
Y3QoKTsKLSAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkKLSAgICAgICAgaGl0VGVz
dEFyZWEuaW50ZXJzZWN0KHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnZpc2libGVDb250
ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CisgICAgQVNTRVJUKCFpc1Jl
bmRlckZsb3dUaHJlYWQoKSk7CisgICAgTGF5b3V0UmVjdCBoaXRUZXN0QXJlYSA9IHJlbmRlcmVy
KCkudmlldygpLmRvY3VtZW50UmVjdCgpOworICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGlu
ZygpKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRF
bmFibGVkKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmll
dygpLmZyYW1lVmlldygpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9ydEJv
dW5kcyh7IH0sIGZyYW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3QoKS5zaXplKCkpOworICAgICAg
ICAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUxheW91dFZpZXdwb3J0UmVjdCA9IExheW91dFJlY3Qo
ZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVJlY3QobGF5b3V0Vmlld3BvcnRCb3Vu
ZHMpKTsKKyAgICAgICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChhYnNvbHV0ZUxheW91dFZp
ZXdwb3J0UmVjdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaGl0VGVzdEFyZWEuaW50
ZXJzZWN0KHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnZpc2libGVDb250ZW50UmVjdChM
ZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CisgICAgfQogCiAgICAgUmVuZGVyTGF5ZXIq
IGluc2lkZUxheWVyID0gaGl0VGVzdExheWVyKHRoaXMsIG51bGxwdHIsIHJlcXVlc3QsIHJlc3Vs
dCwgaGl0VGVzdEFyZWEsIGhpdFRlc3RMb2NhdGlvbiwgZmFsc2UpOwogICAgIGlmICghaW5zaWRl
TGF5ZXIpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAxNTBjN2U2M2MxNzdiMDA5YjQ1MThmMTU1NjU0ZDVhZTAwMDI0YzMw
Li5hMWY5Y2QzNTBmNzdmN2MzNDRjMWJmMWZkYjUyYjhhMTdkNTE1ZDU2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTctMDctMTAgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIGVsZW1lbnRGcm9tUG9pbnQoKSBzaG91bGQgY29uc2lkZXIgeCBhbmQgeSB0byBiZSBp
biBjbGllbnQgKGxheW91dCB2aWV3cG9ydCkgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjAxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vZWxlbWVudEZyb21Qb2lu
dC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0OiBVcGRhdGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLmh0bWw6IFVwZGF0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDctMDggIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBT
dGF0aXN0aWNzOiBVc2VyIGludGVyYWN0aW9uIHNob3VsZCBhbHdheXMgZ28gdG8gdG9wIGRvY3Vt
ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNj
YWxlZC1zY3JvbGxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50
RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC1leHBlY3RlZC50eHQKaW5kZXggZjgxZmI2MzBhMzVj
ZDFkOTY4MzZhNzY2YTNjNDM5MDM4ZGRmNDE1MS4uZDkyOWQ0ZGNiZjQ3OTk2ODZmMjUwYTRmMzQ2
YzhkNzlkNTkyMDYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZy
b21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDIwIEBACi1CMUIyQjMKLVRoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGVsZW1lbnRG
cm9tUG9pbnQgcmV0dXJucyB0aGUgY29ycmVjdCBlbGVtZW50LgotQjMKK1RoaXMgdGVzdCBhcHBs
aWVzIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbHMgdGhlIHBhZ2UsIGFuZCBjaGVja3MgdGhhdCBlbGVt
ZW50RnJvbVBvaW50IHJldHVybnMgdGhlIGNvcnJlY3QgZWxlbWVudC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSBpcyBi
MQorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSBpcyBiMgorUEFTUyBk
b2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSBpcyBiMQorUEFTUyBkb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSBpcyBiMgorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJv
bVBvaW50KDExNSwgMTUpIGlzIGIxCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoNDE1
LCAzMTUpIGlzIGIyCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoLTg1LCAxNSkgaXMg
bnVsbAorUEFTUyBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDIxNSwgMzE1KSBpcyBiMgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3Jv
bGxlZC5odG1sCmluZGV4IGFhODA5ZWRmNjFjZTE5N2U2N2Y0NmFiMjQwZWUyYTliZjFiNTQ5Nzgu
LjIyYmEyMDc5YmZjOWQ2NjZlMTc3MmIzYzVhYzM1YjZmY2MzODMzOWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xs
ZWQuaHRtbApAQCAtMSwyNCArMSw2MCBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisgICAgYm9keSB7CisgICAgICAgIHdpZHRoOiAyMDAwcHg7CisgICAg
ICAgIGhlaWdodDogMjAwMHB4OworICAgIH0KKyAgICBidXR0b24geworICAgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAgICAgICBoZWlnaHQ6IDUwcHg7
CisgICAgfQorICAgICNiMSB7CisgICAgICAgIGxlZnQ6IDIwMHB4OworICAgICAgICB0b3A6IDEw
MHB4OworICAgIH0KKyAgICAjYjIgeworICAgICAgICBsZWZ0OiA1MDBweDsKKyAgICAgICAgdG9w
OiA0MDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KTsiIHN0eWxlPSJ3aWR0aDoyMDAwcHg7aGVpZ2h0OjIwMDBweDttYXJnaW46MHB4O3BhZGRpbmc6
MTAwcHgiPgotPGJ1dHRvbiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6NTBweDsiPkIxPC9idXR0
b24+PGJ1dHRvbiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6NTBweDsiPkIyPC9idXR0b24+PGJ1
dHRvbiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6NTBweDsiPkIzPC9idXR0b24+Ci08ZGl2PlRo
aXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGVsZW1lbnRGcm9tUG9pbnQgcmV0dXJucyB0aGUgY29y
cmVjdCBlbGVtZW50LjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxidXR0b24gaWQ9
ImIxIj48L2J1dHRvbj4KKzxidXR0b24gaWQ9ImIyIj48L2J1dHRvbj4KIDxzY3JpcHQ+CiBmdW5j
dGlvbiBydW5UZXN0KCkgewotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgYXBwbGllcyBwYWdlIHNjYWxlIGFuZCBzY3JvbGxzIHRoZSBwYWdlLCBh
bmQgY2hlY2tzIHRoYXQgZWxlbWVudEZyb21Qb2ludCByZXR1cm5zIHRoZSBjb3JyZWN0IGVsZW1l
bnQuIik7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRWaXN1YWxWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CiAgICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0UGFnZVNjYWxlRmFjdG9yKDIsIDAsIDApOwotICAgIHdpbmRvdy5z
Y3JvbGxUbygxMDAsMTAwKTsKKyAgICB9CisgICAgd2luZG93LnNjcm9sbFRvKDEwMCwgMTAwKTsK
IAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgLy8gVGhlIGxheW91dCB2aWV3cG9ydCBoYXNuJ3QgYmVlbiBzY3JvbGxlZC4K
KyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgyMjUsIDEyNSkiLCAiYjEi
KTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCg1MjUsIDQyNSkiLCAi
YjIiKTsKIAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQg
PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDEyNSwgMjUpLmlubmVyVGV4dDsKKyAgICB3aW5k
b3cuc2Nyb2xsVG8oMjAwLCAyMDApOworCisgICAgLy8gYjEgaXMgbm93IG9mZnNjcmVlbiwgYnV0
IHN0aWxsIHdpdGhpbiB0aGUgbGF5b3V0IHZpZXdwb3J0LgorICAgIHNob3VsZEJlKCJkb2N1bWVu
dC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSIsICJiMSIpOworICAgIHNob3VsZEJlKCJkb2N1
bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSIsICJiMiIpOworCisgICAgd2luZG93LnNj
cm9sbFRvKDUwMCwgNDAwKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2lu
dCgxMTUsIDE1KSIsICJiMSIpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBv
aW50KDQxNSwgMzE1KSIsICJiMiIpOworCisgICAgd2luZG93LnNjcm9sbFRvKDcwMCwgNDAwKTsK
KyAgICBzaG91bGRCZU51bGwoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoLTg1LCAxNSkiKTsK
KyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgyMTUsIDMxNSkiLCAiYjIi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwogfQogPC9zY3JpcHQ+Ci08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNzEyNTViYTU5MTI3M2IwYzY4OTdiMWM0NzdkZDQ1NWY2N2M1N2NiMi4uOTMxODU5NDI1ZmFm
MGNmZDVhZDIwMTNmNGIzYzkwMzI3YTVjZWU4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3MTksNiArMjcxOSw3IEBAIHdlYmtpdC5vcmcvYi8xNjQ1
OTQgaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVxdWVzdC1oZWFkZXJz
Lmh0bWwKIHdlYmtpdC5vcmcvYi8xNjMwNDYganMvcmVncmVzcy0xNDEwOTguaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKICMgVGVzdCByZWxpZXMgb24gd2luZG93LnNjcm9sbFRvCitmYXN0L2RvbS9l
bGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sIFsgU2tpcCBdCiBmYXN0L3pvb21p
bmcvY2xpZW50LXJlY3QtaW4tZml4ZWQtem9vbWVkLmh0bWwgWyBTa2lwIF0KIGZhc3QvdmlzdWFs
LXZpZXdwb3J0L3pvb21lZC1zY3JvbGwtdG8tYW5jaG9yLWluLXBvc2l0aW9uLWZpeGVkLmh0bWwg
WyBTa2lwIF0KIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3pvb21lZC1zY3JvbGwtaW50by12aWV3LWZp
eGVkLmh0bWwgWyBTa2lwIF0KQEAgLTI4MTcsOCArMjgxOCw2IEBAIHdlYmtpdC5vcmcvYi8xMjQ5
MzMgc3ZnL2FuaW1hdGlvbnMvZ2V0Q3VycmVudFRpbWUtcGF1c2UtdW5wYXVzZS5odG1sIFsgUGFz
cyBGYWlsCiB3ZWJraXQub3JnL2IvMTcxNzYwIGltcG9ydGVkL3czYy9pMThuL2JpZGkvYmlkaS1w
bGFpbnRleHQtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNzE3
NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9ibG9jay1wbGFpbnRleHQtMDA1Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3MjAxOSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzc29tLXZpZXcvZWxlbWVudEZyb21Qb2ludC5odG1sIFsgRmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8xNzI1NDcgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC01MG1zLWRvd25sb2FkLWRpc3BhdGNoLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE3MjYxMCBtZWRpYS9pb3MvYXV0b3BsYXktb25seS1pbi1tYWluLWRvY3VtZW50Lmh0
bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315022</attachid>
            <date>2017-07-10 14:07:06 -0700</date>
            <delta_ts>2017-07-11 11:01:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172019-20170710170705.patch</filename>
            <type>text/plain</type>
            <size>13841</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OTBmZTI0YjAzOTVm
ODQzMzhiZTQyYTg5MzNiZTMyNDJjYmRiNy4uMWIxMjIxYjBkODc5NWUzNjliYzFkM2Y2ZTY5ZTI5
YTcxMDEyMjhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA3LTEwICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBvaW50KCkg
c2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmlld3BvcnQp
IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIwMTkKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgV2hlbiB2aXN1YWwgdmlld3BvcnRzIGFyZSBlbmFibGVkLCB0aGlzIG1ha2VzIFRyZWVTY29w
ZTo6bm9kZUZyb21Qb2ludCBjb25zaWRlciBpdHMKKyAgICAgICAgaW5wdXQgdG8gYmUgaW4gY2xp
ZW50IGNvb3JkaW5hdGVzLCBhbmQgY2xpcHMgdGhpcyBpbnB1dCB0byB0aGUgbGF5b3V0IHZpZXdw
b3J0LiBUaGlzIGNoYW5nZQorICAgICAgICBhZmZlY3RzIHRoZSBiZWhhdmlvciBvZiBkb2N1bWVu
dC5lbGVtZW50RnJvbVBvaW50KCkgYW5kIGRvY3VtZW50LmNhcmV0UmFuZ2VGcm9tUG9pbnQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBNb2RpZmllZCBhbiBleGlzdGluZyB0ZXN0LCBhbmQgbWFk
ZSBhIHByZXZpb3VzbHktZmFpbGluZyB0ZXN0IHBhc3Mgb24gaW9zLgorCisgICAgICAgICogZG9t
L1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6Om5vZGVGcm9tUG9p
bnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRlUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6Y2xpZW50VG9MYXlvdXRWaWV3cG9ydFBvaW50KToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6CisKIDIwMTctMDctMTAg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtT
T1VQXSBTb3VwQ29va2llSmFyIGlzIG5ldmVyIHJlbGVhc2VkIChyZXN1bHRpbmcgaW4gc3FsaXRl
IHRlbXAgZmlsZXMgbHlpbmcgYXJvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAz
YTA4NTEzOTBjZWQxOGI1NTc3MDI4ZmVmYTRiYzcwNGFhZDE5OGM5Li4yODBkZDIwOWM3NzM1MWE5
Zjk0YzU2ZjQyNzU3MjQ1MTlkZTgyOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAt
NDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zMDEsMjIgKzMwMiwzMiBAQCBOb2RlKiBUcmVlU2Nv
cGU6Om5vZGVGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQ
b2ludCogbG9jYQogICAgIGlmICghZnJhbWUgfHwgIXZpZXcpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAq
IGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVQb2lu
dDsKKyAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFibGVkKCkpIHsK
KyAgICAgICAgZG9jdW1lbnRTY29wZSgpLnVwZGF0ZUxheW91dCgpOworICAgICAgICBGbG9hdFBv
aW50IGxheW91dFZpZXdwb3J0UG9pbnQgPSB2aWV3LT5jbGllbnRUb0xheW91dFZpZXdwb3J0UG9p
bnQoY2xpZW50UG9pbnQpOworICAgICAgICBGbG9hdFJlY3QgbGF5b3V0Vmlld3BvcnRCb3VuZHMo
eyB9LCB2aWV3LT5sYXlvdXRWaWV3cG9ydFJlY3QoKS5zaXplKCkpOworICAgICAgICBpZiAoIWxh
eW91dFZpZXdwb3J0Qm91bmRzLmNvbnRhaW5zKGxheW91dFZpZXdwb3J0UG9pbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGFic29sdXRlUG9pbnQgPSBMYXlvdXRQb2lu
dCh2aWV3LT5sYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVQb2ludChsYXlvdXRWaWV3cG9ydFBvaW50
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBmcmFtZS0+cGFn
ZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBMYXlvdXRQ
b2ludCBjb250ZW50c1BvaW50ID0gY2xpZW50UG9pbnQ7Ci0gICAgY29udGVudHNQb2ludC5zY2Fs
ZShzY2FsZUZhY3Rvcik7Ci0gICAgY29udGVudHNQb2ludC5tb3ZlQnkodmlldy0+Y29udGVudHNT
Y3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgYWJzb2x1dGVQb2ludCA9IGNsaWVudFBvaW50Owor
ICAgICAgICBhYnNvbHV0ZVBvaW50LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICAgICAgYWJzb2x1
dGVQb2ludC5tb3ZlQnkodmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIExh
eW91dFJlY3QgdmlzaWJsZVJlY3Q7CisgICAgICAgIExheW91dFJlY3QgdmlzaWJsZVJlY3Q7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRl
bnRSZWN0KCk7CisgICAgICAgIHZpc2libGVSZWN0ID0gdmlldy0+dW5vYnNjdXJlZENvbnRlbnRS
ZWN0KCk7CiAjZWxzZQotICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CisgICAgICAgIHZpc2libGVSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAj
ZW5kaWYKLSAgICBpZiAoIXZpc2libGVSZWN0LmNvbnRhaW5zKGNvbnRlbnRzUG9pbnQpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF2aXNpYmxlUmVjdC5jb250YWlucyhh
YnNvbHV0ZVBvaW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAotICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRzUG9pbnQpOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KGFic29sdXRlUG9pbnQpOwogICAgIGRvY3VtZW50U2NvcGUoKS5yZW5kZXJWaWV3KCkt
PmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoKSwgcmVzdWx0KTsKIAogICAgIGlmIChsb2NhbFBvaW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEwOWNjZTY3ZjMwODNlZjI0NTc2YzM0
MjFkYTBiYTkwYTE2ZmFjNjcuLmIyOWQ4NmI0Nzk0YTAzYTdiODM2MTVjYWYwMDY1NGVkMWY1NTMw
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ5MjMsNiArNDkyMywyNyBAQCBG
bG9hdFBvaW50IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0NsaWVudFBvaW50KEZsb2F0UG9pbnQgcCkg
Y29uc3QKICAgICByZXR1cm4gcDsKIH0KIAorRmxvYXRSZWN0IEZyYW1lVmlldzo6bGF5b3V0Vmll
d3BvcnRUb0Fic29sdXRlUmVjdChGbG9hdFJlY3QgcmVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
ZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKTsKKyAgICByZWN0Lm1v
dmVCeShsYXlvdXRWaWV3cG9ydFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICByZWN0LnNjYWxlKGZy
YW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gcmVjdDsKK30KKworRmxvYXRQ
b2ludCBGcmFtZVZpZXc6OmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVBvaW50KEZsb2F0UG9pbnQg
cCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0
RW5hYmxlZCgpKTsKKyAgICBwLm1vdmVCeShsYXlvdXRWaWV3cG9ydFJlY3QoKS5sb2NhdGlvbigp
KTsKKyAgICByZXR1cm4gcC5zY2FsZWQoZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOworfQor
CitGbG9hdFBvaW50IEZyYW1lVmlldzo6Y2xpZW50VG9MYXlvdXRWaWV3cG9ydFBvaW50KEZsb2F0
UG9pbnQgcCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZp
ZXdwb3J0RW5hYmxlZCgpKTsKKyAgICByZXR1cm4gcC5zY2FsZWQoZnJhbWUoKS5wYWdlWm9vbUZh
Y3RvcigpKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJh
Y2tSZXBhaW50cykKIHsKICAgICBpZiAodHJhY2tSZXBhaW50cyA9PSBtX2lzVHJhY2tpbmdSZXBh
aW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDFjNDY3MTRlZTE1MTdiYzhjNjY0NzEz
YjM4NjZjNzM2MTE4NTQ5NmUuLmRjZDI2NTYzYWQxOTNlNzc1MGQ1NDY0Y2ZlNTQ3MjMxMGRhOWEz
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDUwLDcgKzQ1MCwxMCBAQCBwdWJsaWM6
CiAgICAgLy8gIkNsaWVudCIKICAgICAvLyAgICBSZWxhdGl2ZSB0byB0aGUgdmlzaWJsZSBwYXJ0
IG9mIHRoZSBkb2N1bWVudCAob3IsIG1vcmUgc3RyaWN0bHksIHRoZSBsYXlvdXQgdmlld3BvcnQg
cmVjdCksIGFuZCB3aXRoIHRoZSBzYW1lIHNjYWxpbmcKICAgICAvLyAgICBhcyBEb2N1bWVudCBj
b29yZGluYXRlcywgaS5lLiBtYXRjaGluZyBDU1MgcGl4ZWxzLiBBZmZlY3RlZCBieSBzY3JvbGwg
b3JpZ2luLgotICAgIC8vICAgIAorICAgIC8vCisgICAgLy8gIkxheW91dFZpZXdwb3J0IgorICAg
IC8vICAgIFNpbWlsYXIgdG8gY2xpZW50IGNvb3JkaW5hdGVzLCBidXQgYWZmZWN0ZWQgYnkgcGFn
ZSB6b29tIChidXQgbm90IHBhZ2Ugc2NhbGUpLgorICAgIC8vCiAKICAgICAvLyBNZXRob2RzIHRv
IGNvbnZlcnQgcG9pbnRzIGFuZCByZWN0cyBiZXR3ZWVuIHRoZSBjb29yZGluYXRlIHNwYWNlIG9m
IHRoZSByZW5kZXJlciwgYW5kIHRoaXMgdmlldy4KICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0
IGNvbnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFJlbmRlckVsZW1lbnQq
LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CkBAIC00NzQsNiArNDc3LDEyIEBAIHB1YmxpYzoKICAg
ICBGbG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKICAgICBG
bG9hdFBvaW50IGRvY3VtZW50VG9DbGllbnRQb2ludChGbG9hdFBvaW50KSBjb25zdDsKIAorICAg
IEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVSZWN0KEZsb2F0UmVjdCkgY29uc3Q7
CisgICAgRmxvYXRQb2ludCBsYXlvdXRWaWV3cG9ydFRvQWJzb2x1dGVQb2ludChGbG9hdFBvaW50
KSBjb25zdDsKKworICAgIC8vIFVubGlrZSBjbGllbnQgY29vcmRpbmF0ZXMsIGxheW91dCB2aWV3
cG9ydCBjb29yZGluYXRlcyBhcmUgYWZmZWN0ZWQgYnkgcGFnZSB6b29tLgorICAgIEZsb2F0UG9p
bnQgY2xpZW50VG9MYXlvdXRWaWV3cG9ydFBvaW50KEZsb2F0UG9pbnQpIGNvbnN0OworCiAgICAg
Ym9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihjb25zdCBSZW5kZXJTY3JvbGxiYXJQYXJ0JiBz
Y3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09ICZzY3JvbGxDb3Ju
ZXI7IH0KIAogICAgIC8vIGlzU2Nyb2xsYWJsZSgpIHRha2VzIGFuIG9wdGlvbmFsIFNjcm9sbGFi
aWxpdHkgcGFyYW1ldGVyIHRoYXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gZGVmaW5lIHdoYXQgdGhl
eSBtZWFuIGJ5ICdzY3JvbGxhYmxlLicKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDk2ZTQ4YzIyMGMxODQzNjk5YzRkNWIxMDZlNmQyYWU1Mjc5ZGMwMjUuLjhj
ZWE5ZjRhMjc2MDQxMzM0M2FiZmUyNWMyMzI4NGExNDIwM2NmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDkyNCw5ICs0OTI0LDE3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYKICAgICAKICAgICB1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKIAot
ICAgIExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQo
KSA/IGRvd25jYXN0PFJlbmRlckZsb3dUaHJlYWQ+KHJlbmRlcmVyKCkpLnZpc3VhbE92ZXJmbG93
UmVjdCgpIDogcmVuZGVyZXIoKS52aWV3KCkuZG9jdW1lbnRSZWN0KCk7Ci0gICAgaWYgKCFyZXF1
ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5k
ZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkpOworICAgIEFTU0VSVCghaXNSZW5kZXJGbG93VGhyZWFkKCkpOwor
ICAgIExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLnZpZXcoKS5kb2N1bWVudFJl
Y3QoKTsKKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkgeworICAgICAgICBpZiAo
cmVuZGVyZXIoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7CisgICAgICAg
ICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKKyAg
ICAgICAgICAgIExheW91dFJlY3QgbGF5b3V0Vmlld3BvcnRCb3VuZHMoeyB9LCBmcmFtZVZpZXcu
bGF5b3V0Vmlld3BvcnRSZWN0KCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIExheW91dFJlY3QgYWJz
b2x1dGVMYXlvdXRWaWV3cG9ydFJlY3QgPSBMYXlvdXRSZWN0KGZyYW1lVmlldy5sYXlvdXRWaWV3
cG9ydFRvQWJzb2x1dGVSZWN0KGxheW91dFZpZXdwb3J0Qm91bmRzKSk7CisgICAgICAgICAgICBo
aXRUZXN0QXJlYS5pbnRlcnNlY3QoYWJzb2x1dGVMYXlvdXRWaWV3cG9ydFJlY3QpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChyZW5kZXJlcigpLnZp
ZXcoKS5mcmFtZVZpZXcoKS52aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNp
YmxlUmVjdCkpOworICAgIH0KIAogICAgIFJlbmRlckxheWVyKiBpbnNpZGVMYXllciA9IGhpdFRl
c3RMYXllcih0aGlzLCBudWxscHRyLCByZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RBcmVhLCBoaXRU
ZXN0TG9jYXRpb24sIGZhbHNlKTsKICAgICBpZiAoIWluc2lkZUxheWVyKSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTUw
YzdlNjNjMTc3YjAwOWI0NTE4ZjE1NTY1NGQ1YWUwMDAyNGMzMC4uZjRhMmZjNWY2N2M2Y2FmYzVh
ZTdhZDk1YTQ3NmUyYzQxNzkwNzVjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA3LTEw
ICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBlbGVtZW50RnJvbVBv
aW50KCkgc2hvdWxkIGNvbnNpZGVyIHggYW5kIHkgdG8gYmUgaW4gY2xpZW50IChsYXlvdXQgdmll
d3BvcnQpIGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzIwMTkKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC1leHBl
Y3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1z
Y2FsZWQtc2Nyb2xsZWQuaHRtbDogVXBkYXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAxNy0wNy0wOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IFVzZXIgaW50ZXJh
Y3Rpb24gc2hvdWxkIGFsd2F5cyBnbyB0byB0b3AgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9s
bGVkLWV4cGVjdGVkLnR4dAppbmRleCBmODFmYjYzMGEzNWNkMWQ5NjgzNmE3NjZhM2M0MzkwMzhk
ZGY0MTUxLi5kOTI5ZDRkY2JmNDc5OTY4NmYyNTBhNGYzNDZjOGQ3OWQ1OTIwNjBkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxl
ZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2lu
dC1zY2FsZWQtc2Nyb2xsZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMjAgQEAKLUIxQjJCMwot
VGhpcyB0ZXN0IGlzIHN1Y2Nlc3NmdWwgaWYgZWxlbWVudEZyb21Qb2ludCByZXR1cm5zIHRoZSBj
b3JyZWN0IGVsZW1lbnQuCi1CMworVGhpcyB0ZXN0IGFwcGxpZXMgcGFnZSBzY2FsZSBhbmQgc2Ny
b2xscyB0aGUgcGFnZSwgYW5kIGNoZWNrcyB0aGF0IGVsZW1lbnRGcm9tUG9pbnQgcmV0dXJucyB0
aGUgY29ycmVjdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGRvY3Vt
ZW50LmVsZW1lbnRGcm9tUG9pbnQoMjI1LCAxMjUpIGlzIGIxCitQQVNTIGRvY3VtZW50LmVsZW1l
bnRGcm9tUG9pbnQoNTI1LCA0MjUpIGlzIGIyCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9p
bnQoMjI1LCAxMjUpIGlzIGIxCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoNTI1LCA0
MjUpIGlzIGIyCitQQVNTIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMTE1LCAxNSkgaXMgYjEK
K1BBU1MgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCg0MTUsIDMxNSkgaXMgYjIKK1BBU1MgZG9j
dW1lbnQuZWxlbWVudEZyb21Qb2ludCgtODUsIDE1KSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQoMjE1LCAzMTUpIGlzIGIyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vZWxlbWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVkLXNjcm9sbGVkLmh0bWwKaW5kZXggYWE4MDll
ZGY2MWNlMTk3ZTY3ZjQ2YWIyNDBlZTJhOWJmMWI1NDk3OC4uMjJiYTIwNzliZmM5ZDY2NmUxNzcy
YjNjNWFjMzViNmZjYzM4MzM5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxl
bWVudEZyb21Qb2ludC1zY2FsZWQtc2Nyb2xsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9lbGVtZW50RnJvbVBvaW50LXNjYWxlZC1zY3JvbGxlZC5odG1sCkBAIC0xLDI0ICsxLDYw
IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBi
b2R5IHsKKyAgICAgICAgd2lkdGg6IDIwMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDAwcHg7Cisg
ICAgfQorICAgIGJ1dHRvbiB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
d2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisgICAgI2IxIHsKKyAg
ICAgICAgbGVmdDogMjAwcHg7CisgICAgICAgIHRvcDogMTAwcHg7CisgICAgfQorICAgICNiMiB7
CisgICAgICAgIGxlZnQ6IDUwMHB4OworICAgICAgICB0b3A6IDQwMHB4OworICAgIH0KKzwvc3R5
bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgc3R5bGU9IndpZHRoOjIwMDBw
eDtoZWlnaHQ6MjAwMHB4O21hcmdpbjowcHg7cGFkZGluZzoxMDBweCI+Ci08YnV0dG9uIHN0eWxl
PSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4OyI+QjE8L2J1dHRvbj48YnV0dG9uIHN0eWxlPSJ3aWR0
aDo1MHB4O2hlaWdodDo1MHB4OyI+QjI8L2J1dHRvbj48YnV0dG9uIHN0eWxlPSJ3aWR0aDo1MHB4
O2hlaWdodDo1MHB4OyI+QjM8L2J1dHRvbj4KLTxkaXY+VGhpcyB0ZXN0IGlzIHN1Y2Nlc3NmdWwg
aWYgZWxlbWVudEZyb21Qb2ludCByZXR1cm5zIHRoZSBjb3JyZWN0IGVsZW1lbnQuPC9kaXY+Ci08
ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGJ1dHRvbiBpZD0iYjEiPjwvYnV0dG9uPgorPGJ1dHRv
biBpZD0iYjIiPjwvYnV0dG9uPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBhcHBsaWVz
IHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbHMgdGhlIHBhZ2UsIGFuZCBjaGVja3MgdGhhdCBlbGVtZW50
RnJvbVBvaW50IHJldHVybnMgdGhlIGNvcnJlY3QgZWxlbWVudC4iKTsKKyAgICBpZiAod2luZG93
LmludGVybmFscykgeworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFZpc3Vh
bFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRQYWdl
U2NhbGVGYWN0b3IoMiwgMCwgMCk7Ci0gICAgd2luZG93LnNjcm9sbFRvKDEwMCwxMDApOworICAg
IH0KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwLCAxMDApOwogCi0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAvLyBUaGUgbGF5
b3V0IHZpZXdwb3J0IGhhc24ndCBiZWVuIHNjcm9sbGVkLgorICAgIHNob3VsZEJlKCJkb2N1bWVu
dC5lbGVtZW50RnJvbVBvaW50KDIyNSwgMTI1KSIsICJiMSIpOworICAgIHNob3VsZEJlKCJkb2N1
bWVudC5lbGVtZW50RnJvbVBvaW50KDUyNSwgNDI1KSIsICJiMiIpOwogCi0gICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IGRvY3VtZW50LmVsZW1lbnRGcm9t
UG9pbnQoMTI1LCAyNSkuaW5uZXJUZXh0OworICAgIHdpbmRvdy5zY3JvbGxUbygyMDAsIDIwMCk7
CisKKyAgICAvLyBiMSBpcyBub3cgb2Zmc2NyZWVuLCBidXQgc3RpbGwgd2l0aGluIHRoZSBsYXlv
dXQgdmlld3BvcnQuCisgICAgc2hvdWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMjI1
LCAxMjUpIiwgImIxIik7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQo
NTI1LCA0MjUpIiwgImIyIik7CisKKyAgICB3aW5kb3cuc2Nyb2xsVG8oNTAwLCA0MDApOworICAg
IHNob3VsZEJlKCJkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDExNSwgMTUpIiwgImIxIik7Cisg
ICAgc2hvdWxkQmUoImRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoNDE1LCAzMTUpIiwgImIyIik7
CisKKyAgICB3aW5kb3cuc2Nyb2xsVG8oNzAwLCA0MDApOworICAgIHNob3VsZEJlTnVsbCgiZG9j
dW1lbnQuZWxlbWVudEZyb21Qb2ludCgtODUsIDE1KSIpOworICAgIHNob3VsZEJlKCJkb2N1bWVu
dC5lbGVtZW50RnJvbVBvaW50KDIxNSwgMzE1KSIsICJiMiIpOworCisgICAgZmluaXNoSlNUZXN0
KCk7CiB9CiA8L3NjcmlwdD4KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MTI1NWJhNTkxMjczYjBjNjg5
N2IxYzQ3N2RkNDU1ZjY3YzU3Y2IyLi45MzE4NTk0MjVmYWYwY2ZkNWFkMjAxM2Y0YjNjOTAzMjdh
NWNlZTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjcxOSw2ICsyNzE5LDcgQEAgd2Via2l0Lm9yZy9iLzE2NDU5NCBodHRwL3Rlc3RzL2NhY2hlL2Rp
c2stY2FjaGUvZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMuaHRtbAogd2Via2l0Lm9yZy9iLzE2
MzA0NiBqcy9yZWdyZXNzLTE0MTA5OC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUZXN0IHJl
bGllcyBvbiB3aW5kb3cuc2Nyb2xsVG8KK2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtc2NhbGVk
LXNjcm9sbGVkLmh0bWwgWyBTa2lwIF0KIGZhc3Qvem9vbWluZy9jbGllbnQtcmVjdC1pbi1maXhl
ZC16b29tZWQuaHRtbCBbIFNraXAgXQogZmFzdC92aXN1YWwtdmlld3BvcnQvem9vbWVkLXNjcm9s
bC10by1hbmNob3ItaW4tcG9zaXRpb24tZml4ZWQuaHRtbCBbIFNraXAgXQogZmFzdC92aXN1YWwt
dmlld3BvcnQvem9vbWVkLXNjcm9sbC1pbnRvLXZpZXctZml4ZWQuaHRtbCBbIFNraXAgXQpAQCAt
MjgxNyw4ICsyODE4LDYgQEAgd2Via2l0Lm9yZy9iLzEyNDkzMyBzdmcvYW5pbWF0aW9ucy9nZXRD
dXJyZW50VGltZS1wYXVzZS11bnBhdXNlLmh0bWwgWyBQYXNzIEZhaWwKIHdlYmtpdC5vcmcvYi8x
NzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4dC0wMTEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE3MTc2MCBpbXBvcnRlZC93M2MvaTE4bi9i
aWRpL2Jsb2NrLXBsYWludGV4dC0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJr
aXQub3JnL2IvMTcyMDE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nzb20tdmll
dy9lbGVtZW50RnJvbVBvaW50Lmh0bWwgWyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MjU0
NyBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LTUwbXMtZG93bmxvYWQt
ZGlzcGF0Y2guaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTcyNjEwIG1lZGlhL2lv
cy9hdXRvcGxheS1vbmx5LWluLW1haW4tZG9jdW1lbnQuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>