<?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>174122</bug_id>
          
          <creation_ts>2017-07-04 02:58:12 -0700</creation_ts>
          <short_desc>HTMLVideoElement with a broken poster image will take square dimension</short_desc>
          <delta_ts>2019-09-19 12:19:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Safari 10</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Virgil Spruit">firstklash</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325397</commentid>
    <comment_count>0</comment_count>
    <who name="Virgil Spruit">firstklash</who>
    <bug_when>2017-07-04 02:58:12 -0700</bug_when>
    <thetext>If the image of a poster can&apos;t be found the video will take a square dimension. 

Right click &gt; Show Controls will place it back to it&apos;s true dimensions.

Tested on
El Capitan 10.11.6 - Safari 9.1.2 (11601.7.7)
Sierra 10.12.5 - Safari 10.1.1 (12603.2.4)


example:
http://www.klash.nl/labs/video-poster.html

mirror:
https://jsfiddle.net/y7v2wf6o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325409</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-04 04:13:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/33121806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565568</commentid>
    <comment_count>2</comment_count>
      <attachid>377399</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-08-27 16:19:27 -0700</bug_when>
    <thetext>Created attachment 377399
A fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565626</commentid>
    <comment_count>3</comment_count>
      <attachid>377399</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-08-27 20:11:54 -0700</bug_when>
    <thetext>Comment on attachment 377399
A fix

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

This is a good attempt. This is not the solution I expected to see because:

1. I did not expect to see the use of renderName() or strcmp() in the solution because:
     a. renderName() is a human-readable name for the renderer whose primary purpose it to produce human-readable dumps of the render tree
     b. Because of (a) renderName() is an indirect and fragile way of testing for the type of renderer.

2. I did not expect the fix to affect all non-video RenderImage derived classes beca

&gt; LayoutTests/media/video-poster-not-found.html:1
&gt; +&lt;html&gt;

This is ok as-is. This file would benefit by adding &lt;!DOCTYPE html&gt; to the top of this file so that it:

1. Doesn’t inadvertently make use of quirks mode
2. Actually test two things because of (1): a quirk mode quirk and the fix for this bug.

&gt; LayoutTests/media/video-poster-not-found.html:11
&gt; +                // When only the width (no height) attribute of a video element is given,
&gt; +                // the aspect ratio of the video element should not be 1, which is the default behavior of WebKit
&gt; +                // to paint a broken image.

For thought, this kinda of comment would also be great to put in the LayoutTests ChangeLog in my opinion.

&gt; LayoutTests/media/video-poster-not-found.html:13
&gt; +                testExpected(&quot;video.clientHeight&quot;, 100);

Haven’t read the code...where does the 100 come from?

&gt; LayoutTests/media/video-poster-not-found.html:14
&gt; +                endTest();

I think this test is ok because I think the DOM load event for the document (&lt;body&gt;) is delayed until all ImageLoaders have loaded or errored out, but I would have expected the ChangeLog to confirm this or explain what other mechanism ensures that a missing poster image is guaranteed to fall before the DOM load event is fired.

&gt; LayoutTests/media/video-poster-not-found.html:21
&gt; +        &lt;p&gt;Test &amp;lt;video&amp;gt; element with only width attribute and the poster is invalid.&lt;/p&gt;

This is ok-as is. I think the more technically correct way to explain this is to use the word “missing” instead of “invalid” to describe what this test is doing because:

1. What is an “invalid” poster image requires a person to read the spec. That definition could turn out to include a missing image resource, but more likely “invalid” probably includes malformed data (e.g. poster image is an HTML document not an image), bad MIME type, unhandled MIME type, etc etc.
2. Seems like it better matches with the test &lt;title&gt; and filename.
3. At least to me, the word “missing” is less ambiguous because of the cases for (1).

&gt; Source/WebCore/ChangeLog:12
&gt; +Â Â Â Â     an invalid poster image will make its aspect ratio to be 1, which is the historical WebKit behavior
&gt; +Â Â Â Â     if we&apos;re painting alt text and/or a broken image.
&gt; +Â Â Â Â     This fix prevents that behavior to impact video elements.

There seems to be some fancy characters  used to indent these lines. Please remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565630</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-08-27 20:15:36 -0700</bug_when>
    <thetext>RenderImageControls is also a RenderImage derived class that would be effected by this change. Is that Okay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565653</commentid>
    <comment_count>5</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-08-27 23:10:46 -0700</bug_when>
    <thetext>Thanks a lot for your comments! I will revise the patch accordingly.
By the way, could you confirm that RenderImageControls is a RenderImage derived class? I did some search and found that only RenderMedia and RenderVideo are its derived classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565661</commentid>
    <comment_count>6</comment_count>
      <attachid>377399</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-08-27 23:58:17 -0700</bug_when>
    <thetext>Comment on attachment 377399
A fix

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

&gt;&gt; LayoutTests/media/video-poster-not-found.html:1
&gt;&gt; +&lt;html&gt;
&gt; 
&gt; This is ok as-is. This file would benefit by adding &lt;!DOCTYPE html&gt; to the top of this file so that it:
&gt; 
&gt; 1. Doesn’t inadvertently make use of quirks mode
&gt; 2. Actually test two things because of (1): a quirk mode quirk and the fix for this bug.

Good point!

&gt;&gt; LayoutTests/media/video-poster-not-found.html:11
&gt;&gt; +                // to paint a broken image.
&gt; 
&gt; For thought, this kinda of comment would also be great to put in the LayoutTests ChangeLog in my opinion.

Right. I will change the ChangeLog.

&gt;&gt; LayoutTests/media/video-poster-not-found.html:13
&gt;&gt; +                testExpected(&quot;video.clientHeight&quot;, 100);
&gt; 
&gt; Haven’t read the code...where does the 100 come from?

It is from the default behavior of a video element when its source is not given. The default aspect ratio is 2, so the height will be 200 / 2 = 100.
I will modify the test case to use a video source, so that the height will be decided by the content.

&gt;&gt; LayoutTests/media/video-poster-not-found.html:14
&gt;&gt; +                endTest();
&gt; 
&gt; I think this test is ok because I think the DOM load event for the document (&lt;body&gt;) is delayed until all ImageLoaders have loaded or errored out, but I would have expected the ChangeLog to confirm this or explain what other mechanism ensures that a missing poster image is guaranteed to fall before the DOM load event is fired.

I will modify the test case by providing a source to the video element. Then the size of the video element is verify in the handler for &quot;canplaythrough&quot; event. I think that can guarantee the failure regarding the missing poster image will happen before we check the element size.

&gt;&gt; LayoutTests/media/video-poster-not-found.html:21
&gt;&gt; +        &lt;p&gt;Test &amp;lt;video&amp;gt; element with only width attribute and the poster is invalid.&lt;/p&gt;
&gt; 
&gt; This is ok-as is. I think the more technically correct way to explain this is to use the word “missing” instead of “invalid” to describe what this test is doing because:
&gt; 
&gt; 1. What is an “invalid” poster image requires a person to read the spec. That definition could turn out to include a missing image resource, but more likely “invalid” probably includes malformed data (e.g. poster image is an HTML document not an image), bad MIME type, unhandled MIME type, etc etc.
&gt; 2. Seems like it better matches with the test &lt;title&gt; and filename.
&gt; 3. At least to me, the word “missing” is less ambiguous because of the cases for (1).

Right.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +Â Â Â Â     This fix prevents that behavior to impact video elements.
&gt; 
&gt; There seems to be some fancy characters  used to indent these lines. Please remove them.

They were introduced by the editor. I will remove them.

&gt; Source/WebCore/rendering/RenderImage.cpp:824
&gt; +    if (imageResource().errorOccurred() &amp;&amp; !strcmp(renderName(), &quot;RenderImage&quot;)) {

I will replace the strcmp() with isImage().
RenderMedia overrides isImage() function and it returns false. RenderVideo inherits that behavior.
Other derived class of RenderImage can choose to inherit RenderImage&apos;s behavior to avoid the potential issue of this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565662</commentid>
    <comment_count>7</comment_count>
      <attachid>377433</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-08-28 00:03:14 -0700</bug_when>
    <thetext>Created attachment 377433
An updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565776</commentid>
    <comment_count>8</comment_count>
      <attachid>377433</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-08-28 10:23:20 -0700</bug_when>
    <thetext>Comment on attachment 377433
An updated patch

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

&gt; Source/WebCore/rendering/RenderImage.cpp:824
&gt; +    if (imageResource().errorOccurred() &amp;&amp; isImage()) {

This looks better. Even with this change I (just me) still would not expect to see a isImage() check in the solution or I would expect to see an explanation in the ChangeLog why this check is correct and why it is correct to use in this function. The reasons why I feel this check is unexpected is because:

1. This bug is about video. So, I expected a solution-specific to just &lt;video&gt; or an explanation in the ChangeLog why the fix is applicable to other non-video image things.

2. I would have expected isImage() to be used from non-derived renderer classes. Here&apos;s another way of expressing this: RenderImage is an image so to an to unfamiliar developer isImage() would be expected to vacuously return true - it doesn&apos;t.

3. RenderImage is a **base** class for all current and future Image renderers, including &lt;img&gt;, &lt;audio&gt;, &lt;video&gt;, generated images, etc etc.... this gets me back to point (1).

4. RenderImage::computeIntrinsicRatioInformation() is a virtual function and RenderMedia is a derived class. Falling out from (1) and (3) I would have expected a derived class to override this function as a means of changing behavior as opposed to the base class &quot;looking into itself&quot; &lt;-- not sure if I am conveying this correctly, trying to convey the weirdness of point (2)

5. By (1) and (4) I would have expected the solution to be overriding computeIntrinsicRatioInformation() in RenderVideo or an explanation in the ChangeLog why this is not the correct solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566058</commentid>
    <comment_count>9</comment_count>
      <attachid>377540</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-08-28 19:54:42 -0700</bug_when>
    <thetext>Created attachment 377540
A new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566267</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-08-29 09:27:34 -0700</bug_when>
    <thetext>The patch looks good. I was expecting the virtual function to also be used when deciding to paint the broken image icon from our in person conversation, yesterday, and possibly any other applicable code we missed yesterday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570011</commentid>
    <comment_count>11</comment_count>
      <attachid>378581</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-09-11 15:35:25 -0700</bug_when>
    <thetext>Created attachment 378581
A updated patch after discussion with Daniel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570722</commentid>
    <comment_count>12</comment_count>
      <attachid>378581</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-13 15:33:23 -0700</bug_when>
    <thetext>Comment on attachment 378581
A updated patch after discussion with Daniel

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

Your change log message is very descriptive. I like it.

&gt; Source/WebCore/rendering/RenderImage.cpp:463
&gt; +                RefPtr&lt;Image&gt; image = brokenImageAndImageScaleFactor.first;

It would be slightly more optimal to use auto&amp; here instead of RefPtr&lt;&gt; (you&apos;ll need to * the right-hand side) because brokenImageAndImageScaleFactor.first is the broken image, which is guaranteed never be nullptr and exist for the entire program lifetime. So, no need to ref it.

Optional: This doesn&apos;t need to be done in this patch callers of CachedImage::brokenImage() would benefit if it returned a std::pair&lt;std::reference_wrapper&lt;const Image&gt;, float&gt; instead of std::pair&lt;Image*, float&gt;. If std::pair&lt;std::reference_wrapper&lt;const Image&gt;, float&gt; doesn&apos;t work, then std::pair&lt;std::reference_wrapper&lt;Image&gt;, float&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570729</commentid>
    <comment_count>13</comment_count>
      <attachid>378581</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-13 16:01:52 -0700</bug_when>
    <thetext>Comment on attachment 378581
A updated patch after discussion with Daniel

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

&gt; Source/WebCore/rendering/RenderImage.cpp:460
&gt; -            if (imageResource().errorOccurred() &amp;&amp; !image-&gt;isNull() &amp;&amp; usableSize.width() &gt;= image-&gt;width() &amp;&amp; usableSize.height() &gt;= image-&gt;height()) {
&gt; +            if (shouldDisplayBrokenImageIcon()) {

This introduces another behavioral change that seems unrelated to this bug. It seems like it could be a good change. Making the change now introduces risk. It may be more beneficial to factor out this change and the change in lines 467-479 into another patch and just replace the first conjunct  (or first and second conjunct - can&apos;t remember what we talked about) with shouldDisplayBrokenImageIcon().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571277</commentid>
    <comment_count>14</comment_count>
      <attachid>378896</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-09-16 14:44:17 -0700</bug_when>
    <thetext>Created attachment 378896
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572043</commentid>
    <comment_count>15</comment_count>
      <attachid>378896</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-18 13:15:33 -0700</bug_when>
    <thetext>Comment on attachment 378896
Patch for landing

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572045</commentid>
    <comment_count>16</comment_count>
      <attachid>378896</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-18 13:17:30 -0700</bug_when>
    <thetext>Comment on attachment 378896
Patch for landing

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

&gt; Source/WebCore/rendering/RenderImage.cpp:482
&gt; +                // Make sure we have enough space to display the broken image icon
&gt; +                if (usableSize.width() &gt;= imageSize.width() &amp;&amp; usableSize.height() &gt;= imageSize.height()) {
&gt; +                    // Center the error image, accounting for border and padding.
&gt; +                    LayoutUnit centerX { (usableSize.width() - imageSize.width()) / 2 };
&gt; +                    if (centerX &lt; 0)
&gt; +                        centerX = 0;
&gt; +                    LayoutUnit centerY { (usableSize.height() - imageSize.height()) / 2 };
&gt; +                    if (centerY &lt; 0)
&gt; +                        centerY = 0;
&gt; +                    imageOffset = LayoutSize(leftBorder + leftPad + centerX + missingImageBorderWidth, topBorder + topPad + centerY + missingImageBorderWidth);
&gt; +
&gt; +                    context.drawImage(*image, snapRectToDevicePixels(LayoutRect(paintOffset + imageOffset, imageSize), deviceScaleFactor), { imageOrientation() });
&gt; +                    errorPictureDrawn = true;
&gt; +                }

This introduces another behavioral change that seems unrelated to this bug. It seems like it could be a good change. Making the change now introduces risk. It may be more beneficial to factor out this change into another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572062</commentid>
    <comment_count>17</comment_count>
      <attachid>379070</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-09-18 13:57:21 -0700</bug_when>
    <thetext>Created attachment 379070
The patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572398</commentid>
    <comment_count>18</comment_count>
      <attachid>379070</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-19 10:08:16 -0700</bug_when>
    <thetext>Comment on attachment 379070
The patch for landing

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

&gt; Source/WebCore/rendering/RenderImage.cpp:468
&gt; +

OK as-is. Added a empty line here ^^^.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572399</commentid>
    <comment_count>19</comment_count>
      <attachid>379070</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-19 10:08:31 -0700</bug_when>
    <thetext>Comment on attachment 379070
The patch for landing

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

&gt; Source/WebCore/rendering/RenderImage.cpp:832
&gt; +

Ok as-is. Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572428</commentid>
    <comment_count>20</comment_count>
      <attachid>379070</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-19 12:19:43 -0700</bug_when>
    <thetext>Comment on attachment 379070
The patch for landing

Clearing flags on attachment: 379070

Committed r250100: &lt;https://trac.webkit.org/changeset/250100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572429</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-19 12:19:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377399</attachid>
            <date>2019-08-27 16:19:27 -0700</date>
            <delta_ts>2019-08-28 00:03:14 -0700</delta_ts>
            <desc>A fix</desc>
            <filename>174122.patch</filename>
            <type>text/plain</type>
            <size>4063</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNDNmNmM4N2I4Yi4uMzE1MTdmYTRkOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOS0wOC0yNyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFy
ZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1wb3N0
ZXItbm90LWZvdW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8t
cG9zdGVyLW5vdC1mb3VuZC5odG1sOiBBZGRlZC4KKwogMjAxOS0wOC0yNyAgUGVuZyBMaXUgIDxw
ZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFu
Z2VkIGlzIGZpcmVkIHR3aWNlIHdoZW4gZXhpdGluZyBwaWN0dXJlIGluIHBpY3R1cmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwMzg0Y2IzN2JlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3Vu
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1Rlc3QgPHZpZGVvPiBlbGVtZW50IHdp
dGggb25seSB3aWR0aCBhdHRyaWJ1dGUgYW5kIHRoZSBwb3N0ZXIgaXMgaW52YWxpZC4KKworRVhQ
RUNURUQgKHZpZGVvLmNsaWVudFdpZHRoID09ICcyMDAnKSBPSworRVhQRUNURUQgKHZpZGVvLmNs
aWVudEhlaWdodCA9PSAnMTAwJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uZGMzY2I0MTlmZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1wb3N0ZXItbm90LWZvdW5kLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT52aWRlby1wb3N0ZXItbm90LWZvdW5kPC90
aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgLy8gV2hl
biBvbmx5IHRoZSB3aWR0aCAobm8gaGVpZ2h0KSBhdHRyaWJ1dGUgb2YgYSB2aWRlbyBlbGVtZW50
IGlzIGdpdmVuLAorICAgICAgICAgICAgICAgIC8vIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHZp
ZGVvIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlv
ciBvZiBXZWJLaXQKKyAgICAgICAgICAgICAgICAvLyB0byBwYWludCBhIGJyb2tlbiBpbWFnZS4K
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmNsaWVudFdpZHRoIiwgMjAwKTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmNsaWVudEhlaWdodCIsIDEwMCk7
CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9ImdvKCkiPgorICAgICAgICA8
dmlkZW8gd2lkdGg9MjAwIHBvc3Rlcj0ibm90Zm91bmQuanBnIj48L3ZpZGVvPgorICAgICAgICA8
cD5UZXN0ICZsdDt2aWRlbyZndDsgZWxlbWVudCB3aXRoIG9ubHkgd2lkdGggYXR0cmlidXRlIGFu
ZCB0aGUgcG9zdGVyIGlzIGludmFsaWQuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1Njc3NjZiY2NhMi4uNTgwNDBlZGIzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxOS0wOC0yNyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAg
ICAgIEhUTUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtl
IHNxdWFyZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIGEgdmlkZW8g
ZWxlbWVudCwgaWYgb25seSB0aGUgd2lkdGggYXR0cmlidXRlIGlzIGdpdmVuIGFuZCB0aGUgaGVp
Z2h0IGF0dHJpYnV0ZSBpcyBtaXNzaW5nLAorwqDCoMKgwqAgICAgYW4gaW52YWxpZCBwb3N0ZXIg
aW1hZ2Ugd2lsbCBtYWtlIGl0cyBhc3BlY3QgcmF0aW8gdG8gYmUgMSwgd2hpY2ggaXMgdGhlIGhp
c3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yCivCoMKgwqDCoCAgICBpZiB3ZSdyZSBwYWludGluZyBh
bHQgdGV4dCBhbmQvb3IgYSBicm9rZW4gaW1hZ2UuCivCoMKgwqDCoCAgICBUaGlzIGZpeCBwcmV2
ZW50cyB0aGF0IGJlaGF2aW9yIHRvIGltcGFjdCB2aWRlbyBlbGVtZW50cy4KKworICAgICAgICBU
ZXN0OiBtZWRpYS92aWRlby1wb3N0ZXItbm90LWZvdW5kLmh0bWwKKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29t
cHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24gY29uc3QpOgorCiAyMDE5LTA4LTI3ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHJlc2VudGF0aW9u
bW9kZWNoYW5nZWQgaXMgZmlyZWQgdHdpY2Ugd2hlbiBleGl0aW5nIHBpY3R1cmUgaW4gcGljdHVy
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjUxZTJmZWIz
N2UuLjdjZWM5NzYzNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKQEAgLTgxOSw4ICs4MTksOSBAQCB2b2lkIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2lj
UmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdQogICAgICAgICAg
ICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQoYm94LmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoSW5j
bHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKICAgICAgICAgfQogICAgIH0KKwogICAgIC8vIERv
bid0IGNvbXB1dGUgYW4gaW50cmluc2ljIHJhdGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2Vi
S2l0IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBp
bWFnZS4KLSAgICBpZiAoaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSkgeworICAgIGlm
IChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpICYmICFzdHJjbXAocmVuZGVyTmFtZSgp
LCAiUmVuZGVySW1hZ2UiKSkgewogICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IDE7CiAgICAgICAg
IHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377433</attachid>
            <date>2019-08-28 00:03:14 -0700</date>
            <delta_ts>2019-08-28 19:54:42 -0700</delta_ts>
            <desc>An updated patch</desc>
            <filename>174122_update.patch</filename>
            <type>text/plain</type>
            <size>4923</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNDNmNmM4N2I4Yi4uYmFiNWE2MDgxZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxOS0wOC0yNyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFy
ZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBvbmx5IHRoZSB3aWR0
aCAobm8gaGVpZ2h0KSBhdHRyaWJ1dGUgb2YgYSB2aWRlbyBlbGVtZW50IGlzIGdpdmVuCisgICAg
ICAgIGFuZCB0aGUgdGhlIHBvc3RlciBpbWFnZSBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCksCisgICAgICAgIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHZpZGVvIGVsZW1lbnQgc2hv
dWxkIG5vdCBiZSAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBvZiBX
ZWJLaXQgdG8gcGFpbnQgYSBicm9rZW4gaW1hZ2UuIEluc3RlYWQsIGl0IHNob3VsZCBiZSB0aGUg
YXNwZWN0IHJhdGlvIG9mIHRoZSB2aWRlbyBjb250ZW50LgorCisgICAgICAgICogbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbDogQWRkZWQuCisKIDIwMTktMDgtMjcgIFBlbmcg
TGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRwcmVzZW50YXRpb25t
b2RlY2hhbmdlZCBpcyBmaXJlZCB0d2ljZSB3aGVuIGV4aXRpbmcgcGljdHVyZSBpbiBwaWN0dXJl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wb3N0ZXItbm90LWZvdW5kLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mZTAzNzRl
YTI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1u
b3QtZm91bmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorCitUZXN0IDx2aWRlbz4gZWxl
bWVudCB3aXRoIG9ubHkgd2lkdGggYXR0cmlidXRlIGFuZCB0aGUgcG9zdGVyIGlzIG1pc3Npbmcg
KGNhbm5vdCBiZSBkb3dubG9hZGVkKS4KKworUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUo
InZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RF
RCAodmlkZW8uY2xpZW50V2lkdGggPT0gJzMyMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50
SGVpZ2h0ID09ICcyNDAnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3VuZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tcG9zdGVyLW5vdC1mb3VuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi43ZWM0NTE5YjAyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKworPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT52aWRlby1wb3N0
ZXItbm90LWZvdW5kPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0Pgor
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBnbygpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAg
IHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iikn
KTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKCdjYW5wbGF5dGhyb3VnaCcsIGNh
bnBsYXl0aHJvdWdoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2Fu
cGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFdoZW4gb25s
eSB0aGUgd2lkdGggKG5vIGhlaWdodCkgYXR0cmlidXRlIG9mIGEgdmlkZW8gZWxlbWVudCBpcyBn
aXZlbgorICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgdGhlIHBvc3RlciBpbWFnZSBpcyBtaXNz
aW5nIChjYW5ub3QgYmUgZG93bmxvYWRlZCksCisgICAgICAgICAgICAgICAgLy8gdGhlIGFzcGVj
dCByYXRpbyBvZiB0aGUgdmlkZW8gZWxlbWVudCBzaG91bGQgbm90IGJlIDEsIHdoaWNoIGlzIHRo
ZSBkZWZhdWx0IGJlaGF2aW9yCisgICAgICAgICAgICAgICAgLy8gb2YgV2ViS2l0IHRvIHBhaW50
IGEgYnJva2VuIGltYWdlLiBJbnN0ZWFkLCBpdCBzaG91bGQgYmUgdGhlIGFzcGVjdCByYXRpbyBv
ZiB0aGUgdmlkZW8gY29udGVudC4KKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LmNsaWVudFdpZHRoIiwgMzIwKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LmNsaWVudEhlaWdodCIsIDI0MCk7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxv
YWQ9ImdvKCkiPgorICAgICAgICA8dmlkZW8gd2lkdGg9MzIwIHBvc3Rlcj0ibm90Zm91bmQuanBn
Ij48L3ZpZGVvPgorICAgICAgICA8cD5UZXN0ICZsdDt2aWRlbyZndDsgZWxlbWVudCB3aXRoIG9u
bHkgd2lkdGggYXR0cmlidXRlIGFuZCB0aGUgcG9zdGVyIGlzIG1pc3NpbmcgKGNhbm5vdCBiZSBk
b3dubG9hZGVkKS48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU2Nzc2
NmJjY2EyLi4yNGNhMTM2NzliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA4
LTI3ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgSFRNTFZpZGVv
RWxlbWVudCB3aXRoIGEgYnJva2VuIHBvc3RlciBpbWFnZSB3aWxsIHRha2Ugc3F1YXJlIGRpbWVu
c2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
MTIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzEyMTgwNj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgYSB2aWRlbyBlbGVtZW50LCBpZiBv
bmx5IHRoZSB3aWR0aCBhdHRyaWJ1dGUgaXMgZ2l2ZW4gYW5kIHRoZSBoZWlnaHQgYXR0cmlidXRl
IGlzIG1pc3NpbmcsCisgICAgICAgIGFuIGludmFsaWQgcG9zdGVyIGltYWdlIHdpbGwgbWFrZSBp
dHMgYXNwZWN0IHJhdGlvIHRvIGJlIDEsIHdoaWNoIGlzIHRoZSBoaXN0b3JpY2FsIFdlYktpdCBi
ZWhhdmlvcgorICAgICAgICBpZiB3ZSdyZSBwYWludGluZyBhbHQgdGV4dCBhbmQvb3IgYSBicm9r
ZW4gaW1hZ2UuCisgICAgICAgIFRoaXMgZml4IHByZXZlbnRzIHRoYXQgYmVoYXZpb3IgdG8gaW1w
YWN0IHZpZGVvIGVsZW1lbnRzLgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3ZpZGVvLXBvc3Rlci1u
b3QtZm91bmQuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1h
dGlvbiBjb25zdCk6CisKIDIwMTktMDgtMjcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNv
bT4KIAogICAgICAgICB3ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZCBpcyBmaXJlZCB0d2lj
ZSB3aGVuIGV4aXRpbmcgcGljdHVyZSBpbiBwaWN0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCBmNTFlMmZlYjM3ZS4uZmJhYTkxZGFkOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtODE5LDggKzgxOSw5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6
ZSYgaW50cmluc2ljU2l6ZSwgZG91CiAgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdo
dChib3guYXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZykp
OwogICAgICAgICB9CiAgICAgfQorCiAgICAgLy8gRG9uJ3QgY29tcHV0ZSBhbiBpbnRyaW5zaWMg
cmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZpb3IgaWYgd2UncmUgcGFp
bnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGltYWdlLgotICAgIGlmIChpbWFnZVJlc291
cmNlKCkuZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9j
Y3VycmVkKCkgJiYgaXNJbWFnZSgpKSB7CiAgICAgICAgIGludHJpbnNpY1JhdGlvID0gMTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377540</attachid>
            <date>2019-08-28 19:54:42 -0700</date>
            <delta_ts>2019-09-11 15:35:25 -0700</delta_ts>
            <desc>A new patch</desc>
            <filename>174122_new.patch</filename>
            <type>text/plain</type>
            <size>8208</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNDNmNmM4N2I4Yi4uYmY1Y2Y5MzE4MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxOS0wOC0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFy
ZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBvbmx5IHRoZSB3aWR0
aCAobm8gaGVpZ2h0KSBhdHRyaWJ1dGUgb2YgYSB2aWRlbyBlbGVtZW50IGlzIGdpdmVuCisgICAg
ICAgIGFuZCB0aGUgdGhlIHBvc3RlciBpbWFnZSBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCksCisgICAgICAgIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHZpZGVvIGVsZW1lbnQgc2hv
dWxkIG5vdCBiZSAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBvZiBX
ZWJLaXQgdG8gcGFpbnQgYSBicm9rZW4gaW1hZ2UuIEluc3RlYWQsIGl0IHNob3VsZCBiZSB0aGUg
YXNwZWN0IHJhdGlvIG9mIHRoZSB2aWRlbyBjb250ZW50LgorCisgICAgICAgICogbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbDogQWRkZWQuCisKIDIwMTktMDgtMjcgIFBlbmcg
TGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRwcmVzZW50YXRpb25t
b2RlY2hhbmdlZCBpcyBmaXJlZCB0d2ljZSB3aGVuIGV4aXRpbmcgcGljdHVyZSBpbiBwaWN0dXJl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wb3N0ZXItbm90LWZvdW5kLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mZTAzNzRl
YTI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1u
b3QtZm91bmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorCitUZXN0IDx2aWRlbz4gZWxl
bWVudCB3aXRoIG9ubHkgd2lkdGggYXR0cmlidXRlIGFuZCB0aGUgcG9zdGVyIGlzIG1pc3Npbmcg
KGNhbm5vdCBiZSBkb3dubG9hZGVkKS4KKworUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUo
InZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RF
RCAodmlkZW8uY2xpZW50V2lkdGggPT0gJzMyMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50
SGVpZ2h0ID09ICcyNDAnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3VuZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tcG9zdGVyLW5vdC1mb3VuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5iOTJjOWY5OTRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKworPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT52aWRlby1wb3N0
ZXItbm90LWZvdW5kPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0Pgor
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBnbygpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAg
IHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iikn
KTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKCdjYW5wbGF5dGhyb3VnaCcsIGNh
bnBsYXl0aHJvdWdoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2Fu
cGxheXRocm91Z2goKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFdoZW4gb25s
eSB0aGUgd2lkdGggYXR0cmlidXRlIGlzIGdpdmVuIGFuZCB0aGUgaGVpZ2h0IGF0dHJpYnV0ZSBp
cyBtaXNzaW5nLAorICAgICAgICAgICAgICAgIC8vIGZvciBhbiBpbWFnZSBlbGVtZW50LCBpZiBp
dCBjYW5ub3QgZG93bmxvYWQgdGhlIGltYWdlIChhIGJyb2tlbiB1cmw/KSwKKyAgICAgICAgICAg
ICAgICAvLyB0aGUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZpb3IgaXMgdG8gc2V0IHRoZSBhc3Bl
Y3QgcmF0aW8gb2YgdGhlIGVsZW1lbnQgdG8gMS4KKyAgICAgICAgICAgICAgICAvLyBIb3dldmVy
LCBmb3IgYSB2aWRlbyBlbGVtZW50LCBpZiB0aGUgcG9zdGVyIGltYWdlIGNhbm5vdCBiZSBkb3du
bG9hZGVkLAorICAgICAgICAgICAgICAgIC8vIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGVsZW1l
bnQgc2hvdWxkIG5vdCBiZSBoYXJkY29kZWQgMSwgaW5zdGVhZCwgaXQgbXVzdCBiZSBkZWNpZGVk
IGJ5IHRoZSB2aWRlbyBjb250ZW50LgorICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8uY2xpZW50V2lkdGgiLCAzMjApOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8uY2xpZW50SGVpZ2h0IiwgMjQwKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9u
bG9hZD0iZ28oKSI+CisgICAgICAgIDx2aWRlbyB3aWR0aD0zMjAgcG9zdGVyPSJub3Rmb3VuZC5q
cGciPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3QgJmx0O3ZpZGVvJmd0OyBlbGVtZW50IHdpdGgg
b25seSB3aWR0aCBhdHRyaWJ1dGUgYW5kIHRoZSBwb3N0ZXIgaXMgbWlzc2luZyAoY2Fubm90IGJl
IGRvd25sb2FkZWQpLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3
NzY2YmNjYTIuLjI3YzE1M2NmMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTkt
MDgtMjggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MVmlk
ZW9FbGVtZW50IHdpdGggYSBicm9rZW4gcG9zdGVyIGltYWdlIHdpbGwgdGFrZSBzcXVhcmUgZGlt
ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzQxMjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzMTIxODA2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBhIHZpZGVvIGVsZW1lbnQsIGlm
IG9ubHkgdGhlIHdpZHRoIGF0dHJpYnV0ZSBpcyBnaXZlbiBhbmQgdGhlIGhlaWdodCBhdHRyaWJ1
dGUgaXMgbWlzc2luZywKKyAgICAgICAgYW4gaW52YWxpZCBwb3N0ZXIgaW1hZ2Ugd2lsbCBtYWtl
IGl0cyBhc3BlY3QgcmF0aW8gdG8gYmUgMSwgd2hpY2ggaXMgdGhlIGhpc3RvcmljYWwgV2ViS2l0
IGJlaGF2aW9yCisgICAgICAgIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJy
b2tlbiBpbWFnZS4KKyAgICAgICAgVGhpcyBmaXggcHJldmVudHMgdGhhdCBiZWhhdmlvciB0byBp
bXBhY3QgdmlkZW8gZWxlbWVudHMuCisKKyAgICAgICAgV2UgYWRkIGEgdmlydHVhbCBmdW5jdGlv
biBzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgdG8gUmVuZGVySW1hZ2UgYW5kIGl0IHdp
bGwgcmV0dXJuIHRydWUKKyAgICAgICAgb25seSBpZiB0aGUgaW1hZ2Ugc291cmNlIGlzIGdpdmVu
IGJ1dCBjYW5ub3QgYmUgZG93bmxvYWRlZC4KKyAgICAgICAgUmVuZGVyTWVkaWEgb3ZlcnJpZGVz
IHRoaXMgdmlydHVhbCBmdW5jdGlvbiBhbmQgYWx3YXlzIHJldHVybiBmYWxzZQorICAgICAgICBi
ZWNhdXNlIGl0IG5ldmVyIHNob3dzIHRoZSBicm9rZW4gaW1hZ2UgaWNvbi4gUmVuZGVyVmlkZW8g
aW5oZXJpdHMgdGhhdCBiZWhhdmlvciBmcm9tIFJlbmRlck1lZGlhLgorCisgICAgICAgIFRoZW4s
IGluIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbigpLCB3ZSBv
bmx5IHNldCB0aGUgYXNwZWN0IHJhdGlvIHRvIDEKKyAgICAgICAgd2hlbiB3ZSBuZWVkIHRvIHNo
b3cgdGhlIGJyb2tlbiBpbWFnZSBpY29uLiBJdCBpcyB0aGUgaGlzdG9yaWNhbCBXZWJLaXQgYmVo
YXZpb3IgdGhhdCB3ZSB3YW50IHRvIGtlZXAKKyAgICAgICAgZm9yIGltYWdlIGVsZW1lbnQsIGJ1
dCB3ZSBhbHNvIHdhbnQgdG8gYXZvaWQgaXRzIGltcGFjdCAodGhpcyBidWcpIG9uIHZpZGVvIGVs
ZW1lbnRzLgorCisgICAgICAgIFdlIGFsc28gcmVwbGFjZSB0aGUgaW1hZ2VSZXNvdXJjZSgpLmVy
cm9yT2NjdXJyZWQoKSB3aXRoIHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24oKSBpbgorICAg
ICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KCkgZm9yIHRoZSBzYW1lIHJlYXNvbi4K
KworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1wb3N0ZXItbm90LWZvdW5kLmh0bWwKKworICAg
ICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbiBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lZGlhLmg6CisKIDIwMTktMDgtMjcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxl
LmNvbT4KIAogICAgICAgICB3ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZCBpcyBmaXJlZCB0
d2ljZSB3aGVuIGV4aXRpbmcgcGljdHVyZSBpbiBwaWN0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggNzU2
NzYwNTUwMzEuLjkwZTA3ZDVkYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBS
ZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBs
YWNlZCgpLT5zZXRJbnRyaW5zaWNTaXplKGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJl
cikuaW50cmluc2ljU2l6ZSgpKTsKICAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPihyZW5kZXJl
cikpIHsKICAgICAgICAgICAgIGF1dG8mIGltYWdlUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIpOwotICAgICAgICAgICAgaWYgKGltYWdlUmVuZGVyZXIuaW1hZ2VSZXNv
dXJjZSgpLmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGlmIChpbWFnZVJlbmRlcmVyLnNo
b3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24oKSkKICAgICAgICAgICAgICAgICBjaGlsZExheW91
dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljUmF0aW8oMSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjUx
ZTJmZWIzN2UuLmM3OWI2NDdlMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKQEAgLTM5MCw2ICszOTAsMTEgQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNTaG93aW5n
QWx0VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzU2hvd2luZ01pc3NpbmdPckltYWdlRXJyb3Io
KSAmJiAhbV9hbHRUZXh0LmlzRW1wdHkoKTsKIH0KIAorYm9vbCBSZW5kZXJJbWFnZTo6c2hvdWxk
RGlzcGxheUJyb2tlbkltYWdlSWNvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGltYWdlUmVzb3Vy
Y2UoKS5lcnJvck9jY3VycmVkKCk7Cit9CisKIGJvb2wgUmVuZGVySW1hZ2U6Omhhc05vbkJpdG1h
cEltYWdlKCkgY29uc3QKIHsKICAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgp
KQpAQCAtODE5LDggKzgyNCw5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNS
YXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91CiAgICAgICAgICAg
ICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChib3guYXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNs
dWRlTWFyZ2luQm9yZGVyUGFkZGluZykpOwogICAgICAgICB9CiAgICAgfQorCiAgICAgLy8gRG9u
J3QgY29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNhbCBXZWJL
aXQgYmVoYXZpb3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGlt
YWdlLgotICAgIGlmIChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgaWYg
KHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24oKSkgewogICAgICAgICBpbnRyaW5zaWNSYXRp
byA9IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IGUyY2E5MTkyYTcwLi5lY2Q1ZmM3MzIxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNTaG93aW5nTWlzc2luZ09ySW1hZ2VFcnJvcigpIGNvbnN0OwogICAgIGJvb2wgaXNTaG93
aW5nQWx0VGV4dCgpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHNob3VsZERpc3BsYXlCcm9r
ZW5JbWFnZUljb24oKSBjb25zdDsKKwogICAgIGJvb2wgaGFzTm9uQml0bWFwSW1hZ2UoKSBjb25z
dDsKIAogICAgIGJvb2wgaXNFZGl0YWJsZUltYWdlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYS5oCmluZGV4IDUwNGM1NzIyMDhiLi42NmUwNjQyN2MxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGlj
OgogCiAgICAgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCisg
ICAgYm9vbCBzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378581</attachid>
            <date>2019-09-11 15:35:25 -0700</date>
            <delta_ts>2019-09-16 14:44:17 -0700</delta_ts>
            <desc>A updated patch after discussion with Daniel</desc>
            <filename>174122_updated.patch</filename>
            <type>text/plain</type>
            <size>12173</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTQ1NjRlMTk2Zi4uNGRmNWJjNjg0ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxOS0wOS0xMSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFy
ZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBvbmx5IHRoZSB3aWR0
aCAobm8gaGVpZ2h0KSBhdHRyaWJ1dGUgb2YgYSB2aWRlbyBlbGVtZW50IGlzIGdpdmVuCisgICAg
ICAgIGFuZCB0aGUgdGhlIHBvc3RlciBpbWFnZSBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCksCisgICAgICAgIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHZpZGVvIGVsZW1lbnQgc2hv
dWxkIG5vdCBiZSAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBvZiBX
ZWJLaXQgdG8gcGFpbnQgYSBicm9rZW4gaW1hZ2UuIEluc3RlYWQsIGl0IHNob3VsZCBiZSB0aGUg
YXNwZWN0IHJhdGlvIG9mIHRoZSB2aWRlbyBjb250ZW50LgorCisgICAgICAgICogbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbDogQWRkZWQuCisKIDIwMTktMDktMTAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1bnNraXAg
LyByZWJhc2VsaW5lIGEgZmV3IHNlcnZpY2Ugd29ya2VyIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1wb3N0ZXItbm90LWZvdW5kLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mZTAzNzRlYTI2YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorCitUZXN0IDx2aWRlbz4gZWxlbWVudCB3aXRoIG9ubHkgd2lk
dGggYXR0cmlidXRlIGFuZCB0aGUgcG9zdGVyIGlzIG1pc3NpbmcgKGNhbm5vdCBiZSBkb3dubG9h
ZGVkKS4KKworUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQv
dGVzdCIpKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50V2lk
dGggPT0gJzMyMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50SGVpZ2h0ID09ICcyNDAnKSBP
SworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9z
dGVyLW5vdC1mb3VuZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1m
b3VuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iOTJjOWY5
OTRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1u
b3QtZm91bmQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT52aWRlby1wb3N0ZXItbm90LWZvdW5kPC90aXRs
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorCisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICBmdW5jdGlvbiBnbygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHJ1bigndmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKyAgICAgICAgICAgICAg
ICB3YWl0Rm9yRXZlbnRPbmNlKCdjYW5wbGF5dGhyb3VnaCcsIGNhbnBsYXl0aHJvdWdoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFdoZW4gb25seSB0aGUgd2lkdGggYXR0cmli
dXRlIGlzIGdpdmVuIGFuZCB0aGUgaGVpZ2h0IGF0dHJpYnV0ZSBpcyBtaXNzaW5nLAorICAgICAg
ICAgICAgICAgIC8vIGZvciBhbiBpbWFnZSBlbGVtZW50LCBpZiBpdCBjYW5ub3QgZG93bmxvYWQg
dGhlIGltYWdlIChhIGJyb2tlbiB1cmw/KSwKKyAgICAgICAgICAgICAgICAvLyB0aGUgaGlzdG9y
aWNhbCBXZWJLaXQgYmVoYXZpb3IgaXMgdG8gc2V0IHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGVs
ZW1lbnQgdG8gMS4KKyAgICAgICAgICAgICAgICAvLyBIb3dldmVyLCBmb3IgYSB2aWRlbyBlbGVt
ZW50LCBpZiB0aGUgcG9zdGVyIGltYWdlIGNhbm5vdCBiZSBkb3dubG9hZGVkLAorICAgICAgICAg
ICAgICAgIC8vIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBo
YXJkY29kZWQgMSwgaW5zdGVhZCwgaXQgbXVzdCBiZSBkZWNpZGVkIGJ5IHRoZSB2aWRlbyBjb250
ZW50LgorICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY2xpZW50V2lkdGgiLCAz
MjApOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY2xpZW50SGVpZ2h0Iiwg
MjQwKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0iZ28oKSI+CisgICAg
ICAgIDx2aWRlbyB3aWR0aD0zMjAgcG9zdGVyPSJub3Rmb3VuZC5qcGciPjwvdmlkZW8+CisgICAg
ICAgIDxwPlRlc3QgJmx0O3ZpZGVvJmd0OyBlbGVtZW50IHdpdGggb25seSB3aWR0aCBhdHRyaWJ1
dGUgYW5kIHRoZSBwb3N0ZXIgaXMgbWlzc2luZyAoY2Fubm90IGJlIGRvd25sb2FkZWQpLjwvcD4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0ZjEwZTJiMmUuLjE1NzIyYzcw
MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDktMTEgIFBlbmcgTGl1ICA8
cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MVmlkZW9FbGVtZW50IHdpdGggYSBi
cm9rZW4gcG9zdGVyIGltYWdlIHdpbGwgdGFrZSBzcXVhcmUgZGltZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQxMjIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMzMTIxODA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZvciBhIHZpZGVvIGVsZW1lbnQsIGlmIG9ubHkgdGhlIHdpZHRoIGF0
dHJpYnV0ZSBpcyBnaXZlbiBhbmQgdGhlIGhlaWdodCBhdHRyaWJ1dGUgaXMgbWlzc2luZywKKyAg
ICAgICAgYW4gaW52YWxpZCBwb3N0ZXIgaW1hZ2Ugd2lsbCBtYWtlIGl0cyBhc3BlY3QgcmF0aW8g
dG8gYmUgMSwgd2hpY2ggaXMgdGhlIGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yCisgICAgICAg
IGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFnZS4gVGhpcyBm
aXggcHJldmVudHMgdGhhdCBiZWhhdmlvciB0byBpbXBhY3QgdmlkZW8gZWxlbWVudHMuCisKKyAg
ICAgICAgV2UgYWRkIGEgdmlydHVhbCBmdW5jdGlvbiBzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJ
Y29uKCkgdG8gUmVuZGVySW1hZ2UgYW5kIGl0IHdpbGwgcmV0dXJuIHRydWUKKyAgICAgICAgb25s
eSB3aGVuIHRoZSBpbWFnZSBzb3VyY2UgaXMgZ2l2ZW4gYnV0IGNhbm5vdCBiZSBkb3dubG9hZGVk
LiBSZW5kZXJNZWRpYSBvdmVycmlkZXMgdGhpcyB2aXJ0dWFsIGZ1bmN0aW9uCisgICAgICAgIGFu
ZCBhbHdheXMgcmV0dXJuIGZhbHNlIGJlY2F1c2UgaXQgbmV2ZXIgc2hvd3MgdGhlIGJyb2tlbiBp
bWFnZSBpY29uLiBSZW5kZXJWaWRlbyBpbmhlcml0cworICAgICAgICB0aGF0IGJlaGF2aW9yIGZy
b20gUmVuZGVyTWVkaWEuCisKKyAgICAgICAgVGhlbiwgaW4gUmVuZGVySW1hZ2U6OmNvbXB1dGVJ
bnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKCksIHdlIG9ubHkgc2V0IHRoZSBhc3BlY3QgcmF0aW8g
dG8gMQorICAgICAgICB3aGVuIHdlIG5lZWQgdG8gc2hvdyB0aGUgYnJva2VuIGltYWdlIGljb24u
IEl0IGlzIHRoZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciB0aGF0IHdlIHdhbnQgdG8ga2Vl
cAorICAgICAgICBmb3IgaW1hZ2UgZWxlbWVudCwgYnV0IHdlIGFsc28gd2FudCB0byBhdm9pZCBp
dHMgaW1wYWN0ICh0aGlzIGJ1Zykgb24gdmlkZW8gZWxlbWVudHMuCisKKyAgICAgICAgV2UgYWxz
byByZXBsYWNlIHRoZSBpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpIHdpdGggc2hvdWxk
RGlzcGxheUJyb2tlbkltYWdlSWNvbigpIGluCisgICAgICAgIFRyZWVCdWlsZGVyOjpjcmVhdGVM
YXlvdXRCb3goKSBmb3IgdGhlIHNhbWUgcmVhc29uLgorCisgICAgICAgIFRoZSBsb2dpYyB0byBk
aXNwbGF5IHRoZSBicm9rZW4gaW1hZ2UgaWNvbiBpbiBSZW5kZXJJbWFnZTo6cmVuZGVyUmVwbGFj
ZWQoKSBpcyBhbHNvIGNsZWFuZWQgdXAuCisgICAgICAgIFdoZW4gd2UgY2hlY2sgd2hldGhlciB0
aGUgYXZhaWxhYmxlIHNwYWNlIGlzIGJpZyBlbm91Z2ggdG8gZGlzcGxheSB0aGUgYnJva2VuIGlt
YWdlIGljb24sIHdlIG5lZWQgdG8gY29tcGFyZQorICAgICAgICB0aGUgdXNhYmxlIHNpemUgd2l0
aCB0aGUgc2l6ZSBvZiB0aGUgYnJva2VuIGltYWdlIGljb24sIG5vdCB0aGUgaW1hZ2UgaW4gdGhl
IG1faW1hZ2VSZXNvdXJjZSAodGhleSBjb3VsZCBiZQorICAgICAgICB0aGUgc2FtZSB0aG91Z2gp
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbAorCisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OnNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWVkaWEuaDoKKwogMjAxOS0wOS0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgQXVkaW8gc29tZXRpbWVzIGZhaWwgdG8gY2FwdHVyZSBpbiBXZWJSVEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcAppbmRleCA0MDZlOGZjODA1NC4uY2FkNjc0MDVmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRl
TGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVuZGVy
UmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwogICAgICAgICBpZiAoaXM8UmVu
ZGVySW1hZ2U+KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYgaW1hZ2VSZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcik7Ci0gICAgICAgICAgICBpZiAoaW1hZ2VS
ZW5kZXJlci5pbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgaWYg
KGltYWdlUmVuZGVyZXIuc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKQogICAgICAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNSYXRpbygxKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAppbmRleCAyNmFhYTAzNzJlMy4uOGU0OGZlNmY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzkwLDYgKzM5MCwxMSBAQCBib29sIFJlbmRl
ckltYWdlOjppc1Nob3dpbmdBbHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gaXNTaG93aW5nTWlz
c2luZ09ySW1hZ2VFcnJvcigpICYmICFtX2FsdFRleHQuaXNFbXB0eSgpOwogfQogCitib29sIFJl
bmRlckltYWdlOjpzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKTsKK30KKwogYm9vbCBSZW5kZXJJ
bWFnZTo6aGFzTm9uQml0bWFwSW1hZ2UoKSBjb25zdAogewogICAgIGlmICghaW1hZ2VSZXNvdXJj
ZSgpLmNhY2hlZEltYWdlKCkpCkBAIC00MzEsNyArNDM2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2YKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKICAgICBMYXlvdXRVbml0IG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKDEgLyBk
ZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFn
ZSgpIHx8IGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIWltYWdl
UmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpIHx8IHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24o
KSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlv
bikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDQ5LDI4ICs0NTQsMzAgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxz
ZTsKICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VPZmZzZXQ7CiAgICAgICAgICAgICAvLyBX
aGVuIGNhbGN1bGF0aW5nIHRoZSB1c2FibGUgZGltZW5zaW9ucywgZXhjbHVkZSB0aGUgcGl4ZWxz
IG9mCi0gICAgICAgICAgICAvLyB0aGUgb3VsaW5lIHJlY3Qgc28gdGhlIGVycm9yIGltYWdlL2Fs
dCB0ZXh0IGRvZXNuJ3QgZHJhdyBvbiBpdC4KKyAgICAgICAgICAgIC8vIHRoZSBvdXRsaW5lIHJl
Y3Qgc28gdGhlIGVycm9yIGltYWdlL2FsdCB0ZXh0IGRvZXNuJ3QgZHJhdyBvbiBpdC4KICAgICAg
ICAgICAgIExheW91dFNpemUgdXNhYmxlU2l6ZSA9IGNvbnRlbnRTaXplIC0gTGF5b3V0U2l6ZSgy
ICogbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIDIgKiBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7
CiAKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1h
Z2UoKTsKLQotICAgICAgICAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkg
JiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2FibGVTaXplLndpZHRoKCkgPj0gaW1hZ2UtPndpZHRo
KCkgJiYgdXNhYmxlU2l6ZS5oZWlnaHQoKSA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIGlmIChzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBDYWxsIGJyb2tlbkltYWdlKCkgZXhwbGljaXRseSB0byBlbnN1cmUgd2UgZ2V0IHRoZSBi
cm9rZW4gaW1hZ2UgaWNvbiBhdCB0aGUgYXBwcm9wcmlhdGUgcmVzb2x1dGlvbi4KICAgICAgICAg
ICAgICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxl
RmFjdG9yID0gY2FjaGVkSW1hZ2UoKS0+YnJva2VuSW1hZ2UoZGV2aWNlU2NhbGVGYWN0b3IpOwot
ICAgICAgICAgICAgICAgIGltYWdlID0gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yLmZp
cnN0OworICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBicm9rZW5JbWFnZUFu
ZEltYWdlU2NhbGVGYWN0b3IuZmlyc3Q7CiAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGltYWdl
U2l6ZSA9IGltYWdlLT5zaXplKCk7CiAgICAgICAgICAgICAgICAgaW1hZ2VTaXplLnNjYWxlKDEg
LyBicm9rZW5JbWFnZUFuZEltYWdlU2NhbGVGYWN0b3Iuc2Vjb25kKTsKLSAgICAgICAgICAgICAg
ICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBh
ZGRpbmcuCi0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjZW50ZXJYIHsgKHVzYWJsZVNpemUu
d2lkdGgoKSAtIGltYWdlU2l6ZS53aWR0aCgpKSAvIDIgfTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2VudGVyWCA8IDApCi0gICAgICAgICAgICAgICAgICAgIGNlbnRlclggPSAwOwotICAgICAgICAg
ICAgICAgIExheW91dFVuaXQgY2VudGVyWSB7ICh1c2FibGVTaXplLmhlaWdodCgpIC0gaW1hZ2VT
aXplLmhlaWdodCgpKSAvIDIgfTsKLSAgICAgICAgICAgICAgICBpZiAoY2VudGVyWSA8IDApCi0g
ICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwotICAgICAgICAgICAgICAgIGltYWdlT2Zm
c2V0ID0gTGF5b3V0U2l6ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyBtaXNzaW5n
SW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIG1pc3NpbmdJ
bWFnZUJvcmRlcldpZHRoKTsKLQotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpp
bWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1h
Z2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgeyBpbWFnZU9yaWVudGF0
aW9uKCkgfSk7Ci0gICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOworCisg
ICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIHNwYWNlIHRvIGRpc3Bs
YXkgdGhlIGJyb2tlbiBpbWFnZSBpY29uCisgICAgICAgICAgICAgICAgaWYgKHVzYWJsZVNpemUu
d2lkdGgoKSA+PSBpbWFnZVNpemUud2lkdGgoKSAmJiB1c2FibGVTaXplLmhlaWdodCgpID49IGlt
YWdlU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVy
cm9yIGltYWdlLCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCisgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgY2VudGVyWCB7ICh1c2FibGVTaXplLndpZHRoKCkgLSBpbWFn
ZVNpemUud2lkdGgoKSkgLyAyIH07CisgICAgICAgICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwg
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclggPSAwOworICAgICAgICAgICAgICAg
ICAgICBMYXlvdXRVbml0IGNlbnRlclkgeyAodXNhYmxlU2l6ZS5oZWlnaHQoKSAtIGltYWdlU2l6
ZS5oZWlnaHQoKSkgLyAyIH07CisgICAgICAgICAgICAgICAgICAgIGlmIChjZW50ZXJZIDwgMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOworICAgICAgICAgICAgICAgICAg
ICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBjZW50ZXJY
ICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkg
KyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFp
bnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCB7
IGltYWdlT3JpZW50YXRpb24oKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJl
RHJhd24gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7CkBAIC04MjMsOCArODMwLDkgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXpl
JiBpbnRyaW5zaWNTaXplLCBkb3UKICAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0SGVpZ2h0
KGJveC5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKSk7
CiAgICAgICAgIH0KICAgICB9CisKICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGludHJpbnNpYyBy
YXRpbyB0byBwcmVzZXJ2ZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3ZSdyZSBwYWlu
dGluZyBhbHQgdGV4dCBhbmQvb3IgYSBicm9rZW4gaW1hZ2UuCi0gICAgaWYgKGltYWdlUmVzb3Vy
Y2UoKS5lcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoc2hvdWxkRGlzcGxheUJyb2tlbkltYWdl
SWNvbigpKSB7CiAgICAgICAgIGludHJpbnNpY1JhdGlvID0gMTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggZTJjYTkxOTJh
NzAuLmVjZDVmYzczMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApA
QCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Nob3dpbmdNaXNzaW5nT3JJbWFn
ZUVycm9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nob3dpbmdBbHRUZXh0KCkgY29uc3Q7CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpIGNvbnN0OworCiAg
ICAgYm9vbCBoYXNOb25CaXRtYXBJbWFnZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VkaXRhYmxl
SW1hZ2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5kZXgg
NTA0YzU3MjIwOGIuLjY2ZTA2NDI3YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVkaWEuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50
Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKKyAgICBib29sIHNob3VsZERpc3BsYXlCcm9r
ZW5JbWFnZUljb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAo=
</data>
<flag name="review"
          id="394273"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378896</attachid>
            <date>2019-09-16 14:44:17 -0700</date>
            <delta_ts>2019-09-18 13:57:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>174122_r1.patch</filename>
            <type>text/plain</type>
            <size>12075</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODY5MzQyZjUxYy4uZjFkOGQ1YjE5ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxOS0wOS0xMSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFy
ZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBvbmx5IHRoZSB3aWR0
aCAobm8gaGVpZ2h0KSBhdHRyaWJ1dGUgb2YgYSB2aWRlbyBlbGVtZW50IGlzIGdpdmVuCisgICAg
ICAgIGFuZCB0aGUgdGhlIHBvc3RlciBpbWFnZSBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCksCisgICAgICAgIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHZpZGVvIGVsZW1lbnQgc2hv
dWxkIG5vdCBiZSAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBvZiBX
ZWJLaXQgdG8gcGFpbnQgYSBicm9rZW4gaW1hZ2UuIEluc3RlYWQsIGl0IHNob3VsZCBiZSB0aGUg
YXNwZWN0IHJhdGlvIG9mIHRoZSB2aWRlbyBjb250ZW50LgorCisgICAgICAgICogbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbDogQWRkZWQuCisKIDIwMTktMDktMTEgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBFbnN1cmUgc3Ry
dWN0cy9hcnJheXMgd2l0aCBwb2ludGVycyBhcyBmaWVsZHMgYXJlIGRpc2FsbG93ZWQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlMDM3NGVhMjZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3Vu
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1Rlc3QgPHZpZGVvPiBlbGVtZW50IHdp
dGggb25seSB3aWR0aCBhdHRyaWJ1dGUgYW5kIHRoZSBwb3N0ZXIgaXMgbWlzc2luZyAoY2Fubm90
IGJlIGRvd25sb2FkZWQpLgorCitSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8i
LCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VYUEVDVEVEICh2aWRl
by5jbGllbnRXaWR0aCA9PSAnMzIwJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQg
PT0gJzI0MCcpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1wb3N0ZXItbm90LWZvdW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1w
b3N0ZXItbm90LWZvdW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmI5MmM5Zjk5NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPnZpZGVvLXBvc3Rlci1ub3Qt
Zm91bmQ8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisKKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgcnVuKCd2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworICAg
ICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRo
cm91Z2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhy
b3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gV2hlbiBvbmx5IHRoZSB3
aWR0aCBhdHRyaWJ1dGUgaXMgZ2l2ZW4gYW5kIHRoZSBoZWlnaHQgYXR0cmlidXRlIGlzIG1pc3Np
bmcsCisgICAgICAgICAgICAgICAgLy8gZm9yIGFuIGltYWdlIGVsZW1lbnQsIGlmIGl0IGNhbm5v
dCBkb3dubG9hZCB0aGUgaW1hZ2UgKGEgYnJva2VuIHVybD8pLAorICAgICAgICAgICAgICAgIC8v
IHRoZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpcyB0byBzZXQgdGhlIGFzcGVjdCByYXRp
byBvZiB0aGUgZWxlbWVudCB0byAxLgorICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGZvciBh
IHZpZGVvIGVsZW1lbnQsIGlmIHRoZSBwb3N0ZXIgaW1hZ2UgY2Fubm90IGJlIGRvd25sb2FkZWQs
CisgICAgICAgICAgICAgICAgLy8gdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgZWxlbWVudCBzaG91
bGQgbm90IGJlIGhhcmRjb2RlZCAxLCBpbnN0ZWFkLCBpdCBtdXN0IGJlIGRlY2lkZWQgYnkgdGhl
IHZpZGVvIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jbGll
bnRXaWR0aCIsIDMyMCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jbGll
bnRIZWlnaHQiLCAyNDApOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJn
bygpIj4KKyAgICAgICAgPHZpZGVvIHdpZHRoPTMyMCBwb3N0ZXI9Im5vdGZvdW5kLmpwZyI+PC92
aWRlbz4KKyAgICAgICAgPHA+VGVzdCAmbHQ7dmlkZW8mZ3Q7IGVsZW1lbnQgd2l0aCBvbmx5IHdp
ZHRoIGF0dHJpYnV0ZSBhbmQgdGhlIHBvc3RlciBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCkuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxODY5MmMyZjRj
Zi4uNWNjOTM1YjIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxOS0wOS0xMSAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhUTUxWaWRlb0VsZW1l
bnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFyZSBkaW1lbnNpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDEyMgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIGEgdmlkZW8gZWxlbWVudCwgaWYgb25seSB0
aGUgd2lkdGggYXR0cmlidXRlIGlzIGdpdmVuIGFuZCB0aGUgaGVpZ2h0IGF0dHJpYnV0ZSBpcyBt
aXNzaW5nLAorICAgICAgICBhbiBpbnZhbGlkIHBvc3RlciBpbWFnZSB3aWxsIG1ha2UgaXRzIGFz
cGVjdCByYXRpbyB0byBiZSAxLCB3aGljaCBpcyB0aGUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZp
b3IKKyAgICAgICAgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGlt
YWdlLiBUaGlzIGZpeCBwcmV2ZW50cyB0aGF0IGJlaGF2aW9yIHRvIGltcGFjdCB2aWRlbyBlbGVt
ZW50cy4KKworICAgICAgICBXZSBhZGQgYSB2aXJ0dWFsIGZ1bmN0aW9uIHNob3VsZERpc3BsYXlC
cm9rZW5JbWFnZUljb24oKSB0byBSZW5kZXJJbWFnZSBhbmQgaXQgd2lsbCByZXR1cm4gdHJ1ZQor
ICAgICAgICBvbmx5IHdoZW4gdGhlIGltYWdlIHNvdXJjZSBpcyBnaXZlbiBidXQgY2Fubm90IGJl
IGRvd25sb2FkZWQuIFJlbmRlck1lZGlhIG92ZXJyaWRlcyB0aGlzIHZpcnR1YWwgZnVuY3Rpb24K
KyAgICAgICAgYW5kIGFsd2F5cyByZXR1cm4gZmFsc2UgYmVjYXVzZSBpdCBuZXZlciBzaG93cyB0
aGUgYnJva2VuIGltYWdlIGljb24uIFJlbmRlclZpZGVvIGluaGVyaXRzCisgICAgICAgIHRoYXQg
YmVoYXZpb3IgZnJvbSBSZW5kZXJNZWRpYS4KKworICAgICAgICBUaGVuLCBpbiBSZW5kZXJJbWFn
ZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oKSwgd2Ugb25seSBzZXQgdGhlIGFz
cGVjdCByYXRpbyB0byAxCisgICAgICAgIHdoZW4gd2UgbmVlZCB0byBzaG93IHRoZSBicm9rZW4g
aW1hZ2UgaWNvbi4gSXQgaXMgdGhlIGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yIHRoYXQgd2Ug
d2FudCB0byBrZWVwCisgICAgICAgIGZvciBpbWFnZSBlbGVtZW50LCBidXQgd2UgYWxzbyB3YW50
IHRvIGF2b2lkIGl0cyBpbXBhY3QgKHRoaXMgYnVnKSBvbiB2aWRlbyBlbGVtZW50cy4KKworICAg
ICAgICBXZSBhbHNvIHJlcGxhY2UgdGhlIGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkg
d2l0aCBzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgaW4KKyAgICAgICAgVHJlZUJ1aWxk
ZXI6OmNyZWF0ZUxheW91dEJveCgpIGZvciB0aGUgc2FtZSByZWFzb24uCisKKyAgICAgICAgVGhl
IGxvZ2ljIHRvIGRpc3BsYXkgdGhlIGJyb2tlbiBpbWFnZSBpY29uIGluIFJlbmRlckltYWdlOjpy
ZW5kZXJSZXBsYWNlZCgpIGlzIGFsc28gY2xlYW5lZCB1cC4KKyAgICAgICAgV2UgbmVlZCB0byBj
aGVjayB3aGV0aGVyIHRoZSBhdmFpbGFibGUgc3BhY2UgaXMgYmlnIGVub3VnaCB0byBkaXNwbGF5
IHRoZSBicm9rZW4gaW1hZ2UgaWNvbi4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1wb3N0
ZXItbm90LWZvdW5kLmh0bWwKKworICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNy
ZWF0ZUxheW91dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZv
cm1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6CisKIDIwMTktMDktMTEgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBFbnN1cmUgc3RydWN0cy9h
cnJheXMgd2l0aCBwb2ludGVycyBhcyBmaWVsZHMgYXJlIGRpc2FsbG93ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApp
bmRleCA0MDZlOGZjODA1NC4uY2FkNjc0MDVmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTE1NCw3ICsx
NTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+
KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwogICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+
KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYgaW1hZ2VSZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlckltYWdlPihyZW5kZXJlcik7Ci0gICAgICAgICAgICBpZiAoaW1hZ2VSZW5kZXJlci5p
bWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgaWYgKGltYWdlUmVu
ZGVyZXIuc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKQogICAgICAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNSYXRpbygxKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApp
bmRleCAyNmFhYTAzNzJlMy4uMDc4ZjEwZjAyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcApAQCAtMzkwLDYgKzM5MCwxMSBAQCBib29sIFJlbmRlckltYWdlOjpp
c1Nob3dpbmdBbHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gaXNTaG93aW5nTWlzc2luZ09ySW1h
Z2VFcnJvcigpICYmICFtX2FsdFRleHQuaXNFbXB0eSgpOwogfQogCitib29sIFJlbmRlckltYWdl
OjpzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW1h
Z2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKTsKK30KKwogYm9vbCBSZW5kZXJJbWFnZTo6aGFz
Tm9uQml0bWFwSW1hZ2UoKSBjb25zdAogewogICAgIGlmICghaW1hZ2VSZXNvdXJjZSgpLmNhY2hl
ZEltYWdlKCkpCkBAIC00MzEsNyArNDM2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICBMYXlvdXRVbml0IG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKDEgLyBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CiAKLSAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpIHx8IGlt
YWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIWltYWdlUmVzb3VyY2Uo
KS5jYWNoZWRJbWFnZSgpIHx8IHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24oKSkgewogICAg
ICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbikKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtNDQ5LDI4ICs0NTQsMzIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2YKICAgICAgICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAg
ICAgICAgIExheW91dFNpemUgaW1hZ2VPZmZzZXQ7CiAgICAgICAgICAgICAvLyBXaGVuIGNhbGN1
bGF0aW5nIHRoZSB1c2FibGUgZGltZW5zaW9ucywgZXhjbHVkZSB0aGUgcGl4ZWxzIG9mCi0gICAg
ICAgICAgICAvLyB0aGUgb3VsaW5lIHJlY3Qgc28gdGhlIGVycm9yIGltYWdlL2FsdCB0ZXh0IGRv
ZXNuJ3QgZHJhdyBvbiBpdC4KKyAgICAgICAgICAgIC8vIHRoZSBvdXRsaW5lIHJlY3Qgc28gdGhl
IGVycm9yIGltYWdlL2FsdCB0ZXh0IGRvZXNuJ3QgZHJhdyBvbiBpdC4KICAgICAgICAgICAgIExh
eW91dFNpemUgdXNhYmxlU2l6ZSA9IGNvbnRlbnRTaXplIC0gTGF5b3V0U2l6ZSgyICogbWlzc2lu
Z0ltYWdlQm9yZGVyV2lkdGgsIDIgKiBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKICAgICAg
ICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKTsKIAot
ICAgICAgICAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkgJiYgIWltYWdl
LT5pc051bGwoKSAmJiB1c2FibGVTaXplLndpZHRoKCkgPj0gaW1hZ2UtPndpZHRoKCkgJiYgdXNh
YmxlU2l6ZS5oZWlnaHQoKSA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIGlmIChz
aG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgJiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2Fi
bGVTaXplLndpZHRoKCkgPj0gaW1hZ2UtPndpZHRoKCkgJiYgdXNhYmxlU2l6ZS5oZWlnaHQoKSA+
PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDYWxsIGJyb2tlbkltYWdl
KCkgZXhwbGljaXRseSB0byBlbnN1cmUgd2UgZ2V0IHRoZSBicm9rZW4gaW1hZ2UgaWNvbiBhdCB0
aGUgYXBwcm9wcmlhdGUgcmVzb2x1dGlvbi4KICAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8SW1h
Z2UqLCBmbG9hdD4gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yID0gY2FjaGVkSW1hZ2Uo
KS0+YnJva2VuSW1hZ2UoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgICAgIGltYWdl
ID0gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yLmZpcnN0OwogICAgICAgICAgICAgICAg
IEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgICAgICAgICAgICAgIGlt
YWdlU2l6ZS5zY2FsZSgxIC8gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yLnNlY29uZCk7
Ci0gICAgICAgICAgICAgICAgLy8gQ2VudGVyIHRoZSBlcnJvciBpbWFnZSwgYWNjb3VudGluZyBm
b3IgYm9yZGVyIGFuZCBwYWRkaW5nLgotICAgICAgICAgICAgICAgIExheW91dFVuaXQgY2VudGVy
WCB7ICh1c2FibGVTaXplLndpZHRoKCkgLSBpbWFnZVNpemUud2lkdGgoKSkgLyAyIH07Ci0gICAg
ICAgICAgICAgICAgaWYgKGNlbnRlclggPCAwKQotICAgICAgICAgICAgICAgICAgICBjZW50ZXJY
ID0gMDsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNlbnRlclkgeyAodXNhYmxlU2l6ZS5o
ZWlnaHQoKSAtIGltYWdlU2l6ZS5oZWlnaHQoKSkgLyAyIH07Ci0gICAgICAgICAgICAgICAgaWYg
KGNlbnRlclkgPCAwKQotICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKLSAgICAgICAg
ICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBj
ZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNl
bnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7Ci0KLSAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChw
YWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3Rvciks
IHsgaW1hZ2VPcmllbnRhdGlvbigpIH0pOwotICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURy
YXduID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGVub3Vn
aCBzcGFjZSB0byBkaXNwbGF5IHRoZSBicm9rZW4gaW1hZ2UgaWNvbgorICAgICAgICAgICAgICAg
IGlmICh1c2FibGVTaXplLndpZHRoKCkgPj0gaW1hZ2VTaXplLndpZHRoKCkgJiYgdXNhYmxlU2l6
ZS5oZWlnaHQoKSA+PSBpbWFnZVNpemUuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gQ2VudGVyIHRoZSBlcnJvciBpbWFnZSwgYWNjb3VudGluZyBmb3IgYm9yZGVyIGFuZCBwYWRk
aW5nLgorICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNlbnRlclggeyAodXNhYmxlU2l6
ZS53aWR0aCgpIC0gaW1hZ2VTaXplLndpZHRoKCkpIC8gMiB9OworICAgICAgICAgICAgICAgICAg
ICBpZiAoY2VudGVyWCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJYID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjZW50ZXJZIHsgKHVzYWJsZVNpemUuaGVp
Z2h0KCkgLSBpbWFnZVNpemUuaGVpZ2h0KCkpIC8gMiB9OworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2VudGVyWSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBs
ZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoLCB0b3BCb3JkZXIgKyB0
b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOworCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVs
cyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmlj
ZVNjYWxlRmFjdG9yKSwgeyBpbWFnZU9yaWVudGF0aW9uKCkgfSk7CisgICAgICAgICAgICAgICAg
ICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewpAQCAtODIz
LDggKzgzMiw5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9y
bWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91CiAgICAgICAgICAgICBpbnRyaW5z
aWNTaXplLnNldEhlaWdodChib3guYXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2lu
Qm9yZGVyUGFkZGluZykpOwogICAgICAgICB9CiAgICAgfQorCiAgICAgLy8gRG9uJ3QgY29tcHV0
ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZp
b3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGltYWdlLgotICAg
IGlmIChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgaWYgKHNob3VsZERp
c3BsYXlCcm9rZW5JbWFnZUljb24oKSkgewogICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IDE7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CmluZGV4IGUyY2E5MTkyYTcwLi5lY2Q1ZmM3MzIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNTaG93
aW5nTWlzc2luZ09ySW1hZ2VFcnJvcigpIGNvbnN0OwogICAgIGJvb2wgaXNTaG93aW5nQWx0VGV4
dCgpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUlj
b24oKSBjb25zdDsKKwogICAgIGJvb2wgaGFzTm9uQml0bWFwSW1hZ2UoKSBjb25zdDsKIAogICAg
IGJvb2wgaXNFZGl0YWJsZUltYWdlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYS5oCmluZGV4IDUwNGM1NzIyMDhiLi42NmUwNjQyN2MxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAg
SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
SFRNTE1lZGlhRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCisgICAgYm9vbCBz
aG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAK
</data>
<flag name="review"
          id="394579"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379070</attachid>
            <date>2019-09-18 13:57:21 -0700</date>
            <delta_ts>2019-09-19 12:19:43 -0700</delta_ts>
            <desc>The patch for landing</desc>
            <filename>174122_r2.patch</filename>
            <type>text/plain</type>
            <size>10358</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODY5MzQyZjUxYy4uZjFkOGQ1YjE5ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxOS0wOS0xMSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFy
ZSBkaW1lbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBvbmx5IHRoZSB3aWR0
aCAobm8gaGVpZ2h0KSBhdHRyaWJ1dGUgb2YgYSB2aWRlbyBlbGVtZW50IGlzIGdpdmVuCisgICAg
ICAgIGFuZCB0aGUgdGhlIHBvc3RlciBpbWFnZSBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCksCisgICAgICAgIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHZpZGVvIGVsZW1lbnQgc2hv
dWxkIG5vdCBiZSAxLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcgorICAgICAgICBvZiBX
ZWJLaXQgdG8gcGFpbnQgYSBicm9rZW4gaW1hZ2UuIEluc3RlYWQsIGl0IHNob3VsZCBiZSB0aGUg
YXNwZWN0IHJhdGlvIG9mIHRoZSB2aWRlbyBjb250ZW50LgorCisgICAgICAgICogbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQuaHRtbDogQWRkZWQuCisKIDIwMTktMDktMTEgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBFbnN1cmUgc3Ry
dWN0cy9hcnJheXMgd2l0aCBwb2ludGVycyBhcyBmaWVsZHMgYXJlIGRpc2FsbG93ZWQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rlci1ub3QtZm91bmQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3VuZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlMDM3NGVhMjZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9zdGVyLW5vdC1mb3Vu
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1Rlc3QgPHZpZGVvPiBlbGVtZW50IHdp
dGggb25seSB3aWR0aCBhdHRyaWJ1dGUgYW5kIHRoZSBwb3N0ZXIgaXMgbWlzc2luZyAoY2Fubm90
IGJlIGRvd25sb2FkZWQpLgorCitSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8i
LCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VYUEVDVEVEICh2aWRl
by5jbGllbnRXaWR0aCA9PSAnMzIwJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQg
PT0gJzI0MCcpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1wb3N0ZXItbm90LWZvdW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1w
b3N0ZXItbm90LWZvdW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmI5MmM5Zjk5NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tcG9zdGVyLW5vdC1mb3VuZC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPnZpZGVvLXBvc3Rlci1ub3Qt
Zm91bmQ8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisKKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgcnVuKCd2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworICAg
ICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRo
cm91Z2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhy
b3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gV2hlbiBvbmx5IHRoZSB3
aWR0aCBhdHRyaWJ1dGUgaXMgZ2l2ZW4gYW5kIHRoZSBoZWlnaHQgYXR0cmlidXRlIGlzIG1pc3Np
bmcsCisgICAgICAgICAgICAgICAgLy8gZm9yIGFuIGltYWdlIGVsZW1lbnQsIGlmIGl0IGNhbm5v
dCBkb3dubG9hZCB0aGUgaW1hZ2UgKGEgYnJva2VuIHVybD8pLAorICAgICAgICAgICAgICAgIC8v
IHRoZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpcyB0byBzZXQgdGhlIGFzcGVjdCByYXRp
byBvZiB0aGUgZWxlbWVudCB0byAxLgorICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGZvciBh
IHZpZGVvIGVsZW1lbnQsIGlmIHRoZSBwb3N0ZXIgaW1hZ2UgY2Fubm90IGJlIGRvd25sb2FkZWQs
CisgICAgICAgICAgICAgICAgLy8gdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgZWxlbWVudCBzaG91
bGQgbm90IGJlIGhhcmRjb2RlZCAxLCBpbnN0ZWFkLCBpdCBtdXN0IGJlIGRlY2lkZWQgYnkgdGhl
IHZpZGVvIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jbGll
bnRXaWR0aCIsIDMyMCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jbGll
bnRIZWlnaHQiLCAyNDApOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJn
bygpIj4KKyAgICAgICAgPHZpZGVvIHdpZHRoPTMyMCBwb3N0ZXI9Im5vdGZvdW5kLmpwZyI+PC92
aWRlbz4KKyAgICAgICAgPHA+VGVzdCAmbHQ7dmlkZW8mZ3Q7IGVsZW1lbnQgd2l0aCBvbmx5IHdp
ZHRoIGF0dHJpYnV0ZSBhbmQgdGhlIHBvc3RlciBpcyBtaXNzaW5nIChjYW5ub3QgYmUgZG93bmxv
YWRlZCkuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxODY5MmMyZjRj
Zi4uN2ZkMzg0YTM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxOS0wOS0xMSAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIEhUTUxWaWRlb0VsZW1l
bnQgd2l0aCBhIGJyb2tlbiBwb3N0ZXIgaW1hZ2Ugd2lsbCB0YWtlIHNxdWFyZSBkaW1lbnNpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDEyMgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMxMjE4MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIGEgdmlkZW8gZWxlbWVudCwgaWYgb25seSB0
aGUgd2lkdGggYXR0cmlidXRlIGlzIGdpdmVuIGFuZCB0aGUgaGVpZ2h0IGF0dHJpYnV0ZSBpcyBt
aXNzaW5nLAorICAgICAgICBhbiBpbnZhbGlkIHBvc3RlciBpbWFnZSB3aWxsIG1ha2UgaXRzIGFz
cGVjdCByYXRpbyB0byBiZSAxLCB3aGljaCBpcyB0aGUgaGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZp
b3IKKyAgICAgICAgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGlt
YWdlLiBUaGlzIGZpeCBwcmV2ZW50cyB0aGF0IGJlaGF2aW9yIHRvIGltcGFjdCB2aWRlbyBlbGVt
ZW50cy4KKworICAgICAgICBXZSBhZGQgYSB2aXJ0dWFsIGZ1bmN0aW9uIHNob3VsZERpc3BsYXlC
cm9rZW5JbWFnZUljb24oKSB0byBSZW5kZXJJbWFnZSBhbmQgaXQgd2lsbCByZXR1cm4gdHJ1ZQor
ICAgICAgICBvbmx5IHdoZW4gdGhlIGltYWdlIHNvdXJjZSBpcyBnaXZlbiBidXQgY2Fubm90IGJl
IGRvd25sb2FkZWQuIFJlbmRlck1lZGlhIG92ZXJyaWRlcyB0aGlzIHZpcnR1YWwgZnVuY3Rpb24K
KyAgICAgICAgYW5kIGFsd2F5cyByZXR1cm4gZmFsc2UgYmVjYXVzZSBpdCBuZXZlciBzaG93cyB0
aGUgYnJva2VuIGltYWdlIGljb24uIFJlbmRlclZpZGVvIGluaGVyaXRzCisgICAgICAgIHRoYXQg
YmVoYXZpb3IgZnJvbSBSZW5kZXJNZWRpYS4KKworICAgICAgICBUaGVuLCBpbiBSZW5kZXJJbWFn
ZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oKSwgd2Ugb25seSBzZXQgdGhlIGFz
cGVjdCByYXRpbyB0byAxCisgICAgICAgIHdoZW4gd2UgbmVlZCB0byBzaG93IHRoZSBicm9rZW4g
aW1hZ2UgaWNvbi4gSXQgaXMgdGhlIGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yIHRoYXQgd2Ug
d2FudCB0byBrZWVwCisgICAgICAgIGZvciBpbWFnZSBlbGVtZW50LCBidXQgd2UgYWxzbyB3YW50
IHRvIGF2b2lkIGl0cyBpbXBhY3QgKHRoaXMgYnVnKSBvbiB2aWRlbyBlbGVtZW50cy4KKworICAg
ICAgICBXZSBhbHNvIHJlcGxhY2UgdGhlIGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkg
d2l0aCBzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgaW4KKyAgICAgICAgVHJlZUJ1aWxk
ZXI6OmNyZWF0ZUxheW91dEJveCgpIGZvciB0aGUgc2FtZSByZWFzb24uCisKKyAgICAgICAgVGhl
IGxvZ2ljIHRvIGRpc3BsYXkgdGhlIGJyb2tlbiBpbWFnZSBpY29uIGluIFJlbmRlckltYWdlOjpy
ZW5kZXJSZXBsYWNlZCgpIGlzIGFsc28gY2xlYW5lZCB1cC4KKworICAgICAgICBUZXN0OiBtZWRp
YS92aWRlby1wb3N0ZXItbm90LWZvdW5kLmh0bWwKKworICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJl
ZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGREaXNwbGF5QnJv
a2VuSW1hZ2VJY29uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmlu
c2ljUmF0aW9JbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6CisKIDIwMTktMDktMTEg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBFbnN1
cmUgc3RydWN0cy9hcnJheXMgd2l0aCBwb2ludGVycyBhcyBmaWVsZHMgYXJlIGRpc2FsbG93ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcAppbmRleCA0MDZlOGZjODA1NC4uY2FkNjc0MDVmZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
QEAgLTE1NCw3ICsxNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3Jl
YXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAg
Y2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVu
ZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwogICAgICAgICBpZiAoaXM8
UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYgaW1hZ2VSZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcik7Ci0gICAgICAgICAgICBpZiAoaW1h
Z2VSZW5kZXJlci5pbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAg
aWYgKGltYWdlUmVuZGVyZXIuc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKQogICAgICAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNSYXRpbygx
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCAyNmFhYTAzNzJlMy4uM2ZhNjRiZDgzNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzkwLDYgKzM5MCwxMSBAQCBib29sIFJl
bmRlckltYWdlOjppc1Nob3dpbmdBbHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gaXNTaG93aW5n
TWlzc2luZ09ySW1hZ2VFcnJvcigpICYmICFtX2FsdFRleHQuaXNFbXB0eSgpOwogfQogCitib29s
IFJlbmRlckltYWdlOjpzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKTsKK30KKwogYm9vbCBSZW5k
ZXJJbWFnZTo6aGFzTm9uQml0bWFwSW1hZ2UoKSBjb25zdAogewogICAgIGlmICghaW1hZ2VSZXNv
dXJjZSgpLmNhY2hlZEltYWdlKCkpCkBAIC00MzEsNyArNDM2LDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKTsKICAgICBMYXlvdXRVbml0IG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKDEg
LyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKLSAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5jYWNoZWRJ
bWFnZSgpIHx8IGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoIWlt
YWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpIHx8IHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUlj
b24oKSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVj
dGlvbikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDQ5LDE3ICs0NTQsMTggQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBm
YWxzZTsKICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VPZmZzZXQ7CiAgICAgICAgICAgICAv
LyBXaGVuIGNhbGN1bGF0aW5nIHRoZSB1c2FibGUgZGltZW5zaW9ucywgZXhjbHVkZSB0aGUgcGl4
ZWxzIG9mCi0gICAgICAgICAgICAvLyB0aGUgb3VsaW5lIHJlY3Qgc28gdGhlIGVycm9yIGltYWdl
L2FsdCB0ZXh0IGRvZXNuJ3QgZHJhdyBvbiBpdC4KKyAgICAgICAgICAgIC8vIHRoZSBvdXRsaW5l
IHJlY3Qgc28gdGhlIGVycm9yIGltYWdlL2FsdCB0ZXh0IGRvZXNuJ3QgZHJhdyBvbiBpdC4KICAg
ICAgICAgICAgIExheW91dFNpemUgdXNhYmxlU2l6ZSA9IGNvbnRlbnRTaXplIC0gTGF5b3V0U2l6
ZSgyICogbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIDIgKiBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0
aCk7CiAKICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZVJlc291cmNlKCku
aW1hZ2UoKTsKIAotICAgICAgICAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVk
KCkgJiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2FibGVTaXplLndpZHRoKCkgPj0gaW1hZ2UtPndp
ZHRoKCkgJiYgdXNhYmxlU2l6ZS5oZWlnaHQoKSA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKKyAgICAg
ICAgICAgIGlmIChzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkgJiYgIWltYWdlLT5pc051
bGwoKSAmJiB1c2FibGVTaXplLndpZHRoKCkgPj0gaW1hZ2UtPndpZHRoKCkgJiYgdXNhYmxlU2l6
ZS5oZWlnaHQoKSA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDYWxs
IGJyb2tlbkltYWdlKCkgZXhwbGljaXRseSB0byBlbnN1cmUgd2UgZ2V0IHRoZSBicm9rZW4gaW1h
Z2UgaWNvbiBhdCB0aGUgYXBwcm9wcmlhdGUgcmVzb2x1dGlvbi4KICAgICAgICAgICAgICAgICBz
dGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yID0g
Y2FjaGVkSW1hZ2UoKS0+YnJva2VuSW1hZ2UoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAg
ICAgICAgIGltYWdlID0gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFjdG9yLmZpcnN0OwogICAg
ICAgICAgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgICAg
ICAgICAgICAgIGltYWdlU2l6ZS5zY2FsZSgxIC8gYnJva2VuSW1hZ2VBbmRJbWFnZVNjYWxlRmFj
dG9yLnNlY29uZCk7CisKICAgICAgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIGVycm9yIGltYWdl
LCBhY2NvdW50aW5nIGZvciBib3JkZXIgYW5kIHBhZGRpbmcuCiAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBjZW50ZXJYIHsgKHVzYWJsZVNpemUud2lkdGgoKSAtIGltYWdlU2l6ZS53aWR0aCgp
KSAvIDIgfTsKICAgICAgICAgICAgICAgICBpZiAoY2VudGVyWCA8IDApCkBAIC04MjMsOCArODI5
LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24o
RmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3UKICAgICAgICAgICAgIGludHJpbnNpY1NpemUu
c2V0SGVpZ2h0KGJveC5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEluY2x1ZGVNYXJnaW5Cb3JkZXJQ
YWRkaW5nKSk7CiAgICAgICAgIH0KICAgICB9CisKICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGlu
dHJpbnNpYyByYXRpbyB0byBwcmVzZXJ2ZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3
ZSdyZSBwYWludGluZyBhbHQgdGV4dCBhbmQvb3IgYSBicm9rZW4gaW1hZ2UuCi0gICAgaWYgKGlt
YWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKKyAgICBpZiAoc2hvdWxkRGlzcGxheUJy
b2tlbkltYWdlSWNvbigpKSB7CiAgICAgICAgIGludHJpbnNpY1JhdGlvID0gMTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXgg
ZTJjYTkxOTJhNzAuLmVjZDVmYzczMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaApAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Nob3dpbmdNaXNz
aW5nT3JJbWFnZUVycm9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nob3dpbmdBbHRUZXh0KCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpIGNv
bnN0OworCiAgICAgYm9vbCBoYXNOb25CaXRtYXBJbWFnZSgpIGNvbnN0OwogCiAgICAgYm9vbCBp
c0VkaXRhYmxlSW1hZ2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
LmgKaW5kZXggNTA0YzU3MjIwOGIuLjY2ZTA2NDI3YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVkaWEuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBIVE1MTWVk
aWFFbGVtZW50JiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MTWVk
aWFFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKKyAgICBib29sIHNob3VsZERp
c3BsYXlCcm9rZW5JbWFnZUljb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>