<?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>150838</bug_id>
          
          <creation_ts>2015-11-03 07:51:33 -0800</creation_ts>
          <short_desc>SVG: hit testing region for &lt;text&gt; elements is incorrect</short_desc>
          <delta_ts>2015-11-04 02:41:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://codepen.io/TobiReif/pen/ghELn</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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>jonlee</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>tobi</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138930</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-03 07:51:33 -0800</bug_when>
    <thetext>During hit testing, we treat SVG &lt;text&gt; elements much like we would a CSS block. However, SVG &lt;text&gt; elements should not follow the same results as only the painted content, i.e. the bounding box of each glyph, should hit test rather than the union of all the glyph bounding boxes as it does now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138931</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-03 07:51:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/19471778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138932</commentid>
    <comment_count>2</comment_count>
      <attachid>264692</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-03 08:03:20 -0800</bug_when>
    <thetext>Created attachment 264692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139000</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-03 11:39:23 -0800</bug_when>
    <thetext>1. What exactly are you trying to fix? Can you please attach a test case which shows a real life bug that you want to fix?

2. You consider the current SVG &lt;text&gt; element hit testing is wrong. What specs did you follow for fixing this bug?

3. What is exactly the definition of the painted contents of a SVG &lt;text&gt; element? Do you mean it the area which is not covered by text fragments? Where can I get the definition?

4. I think this fix is not following the standard hit testing. Every element has a rectangular bounds. When running the hit testing we scan the tree from top to bottom as long as the element bounds contain the hit point. In your patch, you are bypassing the text element itself as if it does not exist. So if non of the text fragments matches the hit point, the parent of the &lt;text&gt; element will be the matched element.

5. How about this example: 

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
    &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
    &lt;text id=&quot;text&quot; font-family=&quot;Verdana&quot; font-size=&quot;42.5&quot;&gt;
        &lt;tspan x=&quot;10&quot; dy=&quot;1em&quot;&gt;Foo&lt;/tspan&gt;
        &lt;tspan x=&quot;10&quot; dy=&quot;1em&quot;&gt;Foo bar baz&lt;/tspan&gt;
    &lt;/text&gt;
    &lt;script&gt;
        var text = document.getElementById(&quot;text&quot;);
        var rect = text.getBoundingClientRect();
        alert(&quot;width =&quot; + rect.width + &quot;, &quot; + &quot;height =&quot; + rect.height);
    &lt;/script&gt;    
&lt;/svg&gt;

If I run it, it alerts the width and the height of the &lt;text&gt; element bounding box including the non painted contents area. So why if I call elementFromPoint() with a point inside text.getBoundingClientRect() but not covered by a text fragment I get the red &lt;rect&gt; element?

6. You mentioned that SVG hit testing for SVG &lt;text&gt; element is using the same code as hit testing for CSS-rendered elements. How about &lt; foreignObject&gt;? Why does this example behalf different from your tests?

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
    &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
    &lt;foreignObject width=&quot;100%&quot; height=&quot;100%&quot; requiredExtensions=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
        &lt;body xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
            &lt;p style=&quot;font-family:Verdana; font-size:42.5px;&quot;&gt;Foo&lt;/p&gt;
            &lt;p style=&quot;font-family:Verdana; font-size:42.5px;&quot;&gt;Foo bar baz&lt;/p&gt;
        &lt;/body&gt;
    &lt;/foreignObject&gt;
&lt;/svg&gt;

7. How about the &lt;text&gt; element position list? In this example:

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;300&quot; height=&quot;150&quot; viewBox=&quot;0 0 300 150&quot;&gt;
    &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
    &lt;text id=&quot;text&quot; font-family=&quot;Verdana&quot; font-size=&quot;24&quot;&gt;
        &lt;tspan x=&quot;10 50 100&quot; y=&quot;1em&quot;&gt;Foo&lt;/tspan&gt;
    &lt;/text&gt;
&lt;/svg&gt;

Three InlineTextBoxes will be created; one box for each character. Why if I ask for a point between two characters , I get the red &lt;rect&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139014</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-03 12:17:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 1. What exactly are you trying to fix? Can you please attach a test case
&gt; which shows a real life bug that you want to fix?

This bug originated from an internal report, where the original test case is http://codepen.io/TobiReif/pen/ghELn. I&apos;ve added this URL to this bug&apos;s URL field.

&gt; 2. You consider the current SVG &lt;text&gt; element hit testing is wrong. What
&gt; specs did you follow for fixing this bug?

SVG spec section 16.6 (http://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty) which starts with &quot;For text elements, hit-testing is performed on a character cell basis&quot; and goes on to explain how different values of pointer-events will affect hit-testing.
 
&gt; 3. What is exactly the definition of the painted contents of a SVG &lt;text&gt;
&gt; element? Do you mean it the area which is not covered by text fragments?
&gt; Where can I get the definition?

See above.
 
&gt; 4. I think this fix is not following the standard hit testing. Every element
&gt; has a rectangular bounds. When running the hit testing we scan the tree from
&gt; top to bottom as long as the element bounds contain the hit point. In your
&gt; patch, you are bypassing the text element itself as if it does not exist. So
&gt; if non of the text fragments matches the hit point, the parent of the &lt;text&gt;
&gt; element will be the matched element.

I haven&apos;t tested &lt;text&gt; element without a &lt;tspan&gt; or &lt;textPath&gt;, I&apos;ll have to get back to you tomorrow about the behaviour in this case. But at any rate, your comment that &quot;this fix is not following the standard hit testing&quot; is correct, I believe SVG &lt;text&gt; and its descendants break from the CSS / box model norm.

&gt; 5. How about this example: 
&gt; 
&gt; &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
&gt;     &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
&gt;     &lt;text id=&quot;text&quot; font-family=&quot;Verdana&quot; font-size=&quot;42.5&quot;&gt;
&gt;         &lt;tspan x=&quot;10&quot; dy=&quot;1em&quot;&gt;Foo&lt;/tspan&gt;
&gt;         &lt;tspan x=&quot;10&quot; dy=&quot;1em&quot;&gt;Foo bar baz&lt;/tspan&gt;
&gt;     &lt;/text&gt;
&gt;     &lt;script&gt;
&gt;         var text = document.getElementById(&quot;text&quot;);
&gt;         var rect = text.getBoundingClientRect();
&gt;         alert(&quot;width =&quot; + rect.width + &quot;, &quot; + &quot;height =&quot; + rect.height);
&gt;     &lt;/script&gt;    
&gt; &lt;/svg&gt;
&gt; 
&gt; If I run it, it alerts the width and the height of the &lt;text&gt; element
&gt; bounding box including the non painted contents area. So why if I call
&gt; elementFromPoint() with a point inside text.getBoundingClientRect() but not
&gt; covered by a text fragment I get the red &lt;rect&gt; element?

I&apos;d fully expect that, yes. If you hit-test anything outside of the character bounds then the &lt;text&gt; element wouldn&apos;t hit-test positively.

&gt; 6. You mentioned that SVG hit testing for SVG &lt;text&gt; element is using the
&gt; same code as hit testing for CSS-rendered elements. How about &lt;
&gt; foreignObject&gt;? Why does this example behalf different from your tests?
&gt; 
&gt; &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
&gt;     &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
&gt;     &lt;foreignObject width=&quot;100%&quot; height=&quot;100%&quot;
&gt; requiredExtensions=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&gt;         &lt;body xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&gt;             &lt;p style=&quot;font-family:Verdana; font-size:42.5px;&quot;&gt;Foo&lt;/p&gt;
&gt;             &lt;p style=&quot;font-family:Verdana; font-size:42.5px;&quot;&gt;Foo bar baz&lt;/p&gt;
&gt;         &lt;/body&gt;
&gt;     &lt;/foreignObject&gt;
&gt; &lt;/svg&gt;

That would be because none of those elements are &quot;graphics elements&quot; as defined in http://www.w3.org/TR/SVG11/intro.html#TermGraphicsElement and would thus fall under the CSS hit-testing model which would work with the element&apos;s bounds rather than the character bounds.

&gt; 7. How about the &lt;text&gt; element position list? In this example:
&gt; 
&gt; &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;300&quot; height=&quot;150&quot; viewBox=&quot;0
&gt; 0 300 150&quot;&gt;
&gt;     &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
&gt;     &lt;text id=&quot;text&quot; font-family=&quot;Verdana&quot; font-size=&quot;24&quot;&gt;
&gt;         &lt;tspan x=&quot;10 50 100&quot; y=&quot;1em&quot;&gt;Foo&lt;/tspan&gt;
&gt;     &lt;/text&gt;
&gt; &lt;/svg&gt;
&gt; 
&gt; Three InlineTextBoxes will be created; one box for each character. Why if I
&gt; ask for a point between two characters , I get the red &lt;rect&gt;?

Yes, I believe that would be the correct behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139049</commentid>
    <comment_count>5</comment_count>
      <attachid>264692</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-11-03 13:25:38 -0800</bug_when>
    <thetext>Comment on attachment 264692
Patch

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

r=me assuming more tests

&gt; Source/WebCore/ChangeLog:10
&gt; +        for CSS-rendered elements. However, in SVG, text elements should only hit
&gt; +        test based on their painted content, not the rectangular bounds of the

You might want to be more specific, in that it is the bounds of each painted character.

&gt; Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:690
&gt; +                ASSERT(scalingFactor);

I see this assertion in more places in this file. I wonder if it is useful.

It seems it is  initialized to 1: m_scalingFactor(1)

&gt; Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:697
&gt; +                unsigned textFragmentsSize = m_textFragments.size();
&gt; +                for (unsigned i = 0; i &lt; textFragmentsSize; ++i) {
&gt; +                    const SVGTextFragment&amp; fragment = m_textFragments.at(i);

Since you only use i to access the array, you can make this a modern for loop.

for (auto&amp; fragment : m_textFragments) {

&gt; Source/WebCore/rendering/svg/SVGRootInlineBox.cpp:214
&gt; +    for (InlineBox* leaf = firstLeafChild(); leaf; leaf = leaf-&gt;nextLeafChild()) {

I wish we had an iterator for this, so we could use a modern loop.

&gt; LayoutTests/ChangeLog:11
&gt; +        * svg/hittest/text-with-multiple-tspans-expected.svg: Added.
&gt; +        * svg/hittest/text-with-multiple-tspans.svg: Added.
&gt; +
&gt; +        Testing the hit testing region of an SVG &lt;text&gt; element with two &lt;tspan&gt; children.

As Said mentioned, there probably should be tests for a bare &lt;text&gt;

&gt; LayoutTests/svg/hittest/text-with-multiple-tspans.svg:10
&gt; +        // The point at 125,30 is contained within the text&apos;s bounding box
&gt; +        // but not in a painted part so the element should be the background.

Is this guaranteed even if the font is missing?

&gt; LayoutTests/svg/hittest/text-with-text-path.svg:16
&gt; +        // The point at 150,75 is contained within the text&apos;s bounding box
&gt; +        // but not in a painted part so the element should be the background.

Ditto. I wonder if Verdana is always available.

Maybe you should use the Ahem font via a @font-face?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139092</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-03 14:37:31 -0800</bug_when>
    <thetext>*** Bug 150274 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139289</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-04 01:03:48 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; 4. I think this fix is not following the standard hit testing. Every element
&gt; &gt; has a rectangular bounds. When running the hit testing we scan the tree from
&gt; &gt; top to bottom as long as the element bounds contain the hit point. In your
&gt; &gt; patch, you are bypassing the text element itself as if it does not exist. So
&gt; &gt; if non of the text fragments matches the hit point, the parent of the &lt;text&gt;
&gt; &gt; element will be the matched element.
&gt; 
&gt; I haven&apos;t tested &lt;text&gt; element without a &lt;tspan&gt; or &lt;textPath&gt;, I&apos;ll have
&gt; to get back to you tomorrow about the behaviour in this case. But at any
&gt; rate, your comment that &quot;this fix is not following the standard hit testing&quot;
&gt; is correct, I believe SVG &lt;text&gt; and its descendants break from the CSS /
&gt; box model norm.

I&apos;ve tested this and the patch correctly handles &lt;text&gt; elements with only text nodes as content, or mixing text nodes and content elements. I&apos;ll add tests for that purpose.

&gt; &gt; 7. How about the &lt;text&gt; element position list? In this example:
&gt; &gt; 
&gt; &gt; &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;300&quot; height=&quot;150&quot; viewBox=&quot;0
&gt; &gt; 0 300 150&quot;&gt;
&gt; &gt;     &lt;rect id=&quot;background&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;red&quot; /&gt;
&gt; &gt;     &lt;text id=&quot;text&quot; font-family=&quot;Verdana&quot; font-size=&quot;24&quot;&gt;
&gt; &gt;         &lt;tspan x=&quot;10 50 100&quot; y=&quot;1em&quot;&gt;Foo&lt;/tspan&gt;
&gt; &gt;     &lt;/text&gt;
&gt; &gt; &lt;/svg&gt;
&gt; &gt; 
&gt; &gt; Three InlineTextBoxes will be created; one box for each character. Why if I
&gt; &gt; ask for a point between two characters , I get the red &lt;rect&gt;?
&gt; 
&gt; Yes, I believe that would be the correct behaviour.

I also tested this case and the patch makes it work as you outlined, clicking outside of the character cells hit the background &lt;rect&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139296</commentid>
    <comment_count>8</comment_count>
      <attachid>264781</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-04 01:53:57 -0800</bug_when>
    <thetext>Created attachment 264781
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139297</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2015-11-04 02:00:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 264692 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264692&amp;action=review
&gt; 
&gt; r=me assuming more tests
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        for CSS-rendered elements. However, in SVG, text elements should only hit
&gt; &gt; +        test based on their painted content, not the rectangular bounds of the
&gt; 
&gt; You might want to be more specific, in that it is the bounds of each painted
&gt; character.

I&apos;ve updated the ChangeLog when landing, with reference to the SVG 1.1 spec.

&gt; &gt; Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:690
&gt; &gt; +                ASSERT(scalingFactor);
&gt; 
&gt; I see this assertion in more places in this file. I wonder if it is useful.
&gt; 
&gt; It seems it is  initialized to 1: m_scalingFactor(1)

In doubt, I left it in.

&gt; &gt; Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:697
&gt; &gt; +                unsigned textFragmentsSize = m_textFragments.size();
&gt; &gt; +                for (unsigned i = 0; i &lt; textFragmentsSize; ++i) {
&gt; &gt; +                    const SVGTextFragment&amp; fragment = m_textFragments.at(i);
&gt; 
&gt; Since you only use i to access the array, you can make this a modern for
&gt; loop.
&gt; 
&gt; for (auto&amp; fragment : m_textFragments) {

Changed in landing patch.

&gt; &gt; LayoutTests/ChangeLog:11
&gt; &gt; +        * svg/hittest/text-with-multiple-tspans-expected.svg: Added.
&gt; &gt; +        * svg/hittest/text-with-multiple-tspans.svg: Added.
&gt; &gt; +
&gt; &gt; +        Testing the hit testing region of an SVG &lt;text&gt; element with two &lt;tspan&gt; children.
&gt; 
&gt; As Said mentioned, there probably should be tests for a bare &lt;text&gt;

I&apos;ve added tests for the cases where we have a &lt;text&gt; element with a single text node, one with a single text node and dominant-baseline=&quot;hanging&quot;, one with a text node, a &lt;tspan&gt; and another text node, and one with multiple &quot;dx&quot; values.

&gt; &gt; LayoutTests/svg/hittest/text-with-multiple-tspans.svg:10
&gt; &gt; +        // The point at 125,30 is contained within the text&apos;s bounding box
&gt; &gt; +        // but not in a painted part so the element should be the background.
&gt; 
&gt; Is this guaranteed even if the font is missing?

I updated to use the Ahem font for all new tests.

&gt; &gt; LayoutTests/svg/hittest/text-with-text-path.svg:16
&gt; &gt; +        // The point at 150,75 is contained within the text&apos;s bounding box
&gt; &gt; +        // but not in a painted part so the element should be the background.
&gt; 
&gt; Ditto. I wonder if Verdana is always available.

In that case it would have worked regardless of the font since the text is laid out on a path that should simply not draw text in that location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139305</commentid>
    <comment_count>10</comment_count>
      <attachid>264781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-04 02:41:11 -0800</bug_when>
    <thetext>Comment on attachment 264781
Patch for landing

Clearing flags on attachment: 264781

Committed r192020: &lt;http://trac.webkit.org/changeset/192020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139306</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-04 02:41:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264692</attachid>
            <date>2015-11-03 08:03:20 -0800</date>
            <delta_ts>2015-11-04 01:53:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150838-20151103170222.patch</filename>
            <type>text/plain</type>
            <size>11479</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3MTA0YmUyYWYzOTAy
YmY4ZDFlMjA3NzE4MWNkZWY1NDQxODE3Yy4uZDlkNDgzOWJlNjAxNzk4ZWQ5NTQ4MjVhY2M0ZGY0
N2FkYzQyYzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE1LTExLTAzICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHOiBoaXQgdGVzdGlu
ZyByZWdpb24gZm9yIDx0ZXh0PiBlbGVtZW50cyBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDgzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhpdCB0ZXN0aW5nIGZvciBTVkcgPHRl
eHQ+IGVsZW1lbnRzIHdhcyB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIGhpdCB0ZXN0aW5nCisgICAg
ICAgIGZvciBDU1MtcmVuZGVyZWQgZWxlbWVudHMuIEhvd2V2ZXIsIGluIFNWRywgdGV4dCBlbGVt
ZW50cyBzaG91bGQgb25seSBoaXQKKyAgICAgICAgdGVzdCBiYXNlZCBvbiB0aGVpciBwYWludGVk
IGNvbnRlbnQsIG5vdCB0aGUgcmVjdGFuZ3VsYXIgYm91bmRzIG9mIHRoZQorICAgICAgICBlbGVt
ZW50LCBzbyB3ZSBub3cgaGl0IHRlc3QgZWFjaCBTVkdUZXh0RnJhZ21lbnQgb2YgZWFjaCBTVkdJ
bmxpbmVUZXh0Qm94CisgICAgICAgIHRoYXQgaXMgYSBjaGlsZCBvZiBhbiBTVkdSb290SW5saW5l
Qm94IHRvIGNvcnJlY3RseSBmaW5kIHdoZXRoZXIgdGhlCisgICAgICAgIHByb3ZpZGVkIEhpdFRl
c3RMb2NhdGlvbiBpcyBjb250YWluZWQgd2l0aGluIGEgcGFpbnRlZCBnbHlwaC4gCisKKyAgICAg
ICAgVGVzdHM6IHN2Zy9oaXR0ZXN0L3RleHQtd2l0aC1tdWx0aXBsZS10c3BhbnMuc3ZnCisgICAg
ICAgICAgICAgICBzdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLnN2ZworCisgICAgICAg
ICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAgICAgUmVtb3ZlIHRoZSBmaW5hbCBr
ZXl3b3JkIHNpbmNlIG5vZGVBdFBvaW50KCkgbWF5IG5vdyBiZSBzdWJjbGFzc2VkIGFzCisgICAg
ICAgIGltcGxlbWVudGVkIGluIFNWR1Jvb3RJbmxpbmVCb3guCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5l
VGV4dEJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICBJdGVyYXRlIG92ZXIgdGhlIFNWR1RleHRG
cmFnbWVudHMgdG8gbG9vayBmb3IgYSBmcmFnbWVudCBjb250YWluaW5nIHRoZQorICAgICAgICBw
cm92aWRlZCBIaXRUZXN0TG9jYXRpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jv
b3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6bm9k
ZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5oOgor
ICAgICAgICBPdmVycmlkZSBSb290SW5saW5lQm94Ojpub2RlQXRQb2ludCgpIHRvIGRlbGVnYXRl
IGhpdCB0ZXN0aW5nIHRvIHRoZQorICAgICAgICBjaGlsZHJlbiBpbmxpbmUgYm94ZXMuCisKIDIw
MTUtMTAtMjkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0NTUyBHcmlkIExheW91dF0gbWluLWNvbnRlbnQgcm93IGRvZXMgbm90IGFsd2F5cyBz
aHJpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDUyYTNk
NTEyNTFkYWRkNmQ1YzAxNTEzNzA3ZmU0MjE4ZmU5NDZkYWUuLjk4NjhiMDA2YzcwNTljZGZmYmI0
YzBjOGZlOWE3ZmQxMDhmODk4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgbGluZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9w
LCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20s
IEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhp
dFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgSW5saW5lQm94OjpoYXNTZWxlY3Rl
ZENoaWxkcmVuOwogICAgIHVzaW5nIElubGluZUJveDo6c2V0SGFzU2VsZWN0ZWRDaGlsZHJlbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
CmluZGV4IGVmOGYxOGVlY2VjYWJhOTE2MjU0YmI3M2YyMTY0MDM3MzJmYTVkMzQuLjU0NjliMzEz
ZThjNmI2Yzg1MDBiMzMyM2IyZDU1ZjVhMjhlYTNmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtNjg1LDkgKzY4NSwyNyBA
QCBib29sIFNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JgogICAgICAgICAgICAgYm94T3JpZ2luLm1vdmVCeShh
Y2N1bXVsYXRlZE9mZnNldCk7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChib3hPcmlnaW4s
IHNpemUoKSk7CiAgICAgICAgICAgICBpZiAobG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3Rz
KHJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS51cGRhdGVIaXRUZXN0UmVzdWx0
KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3Vt
dWxhdGVkT2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVj
dEJhc2VkVGVzdFJlc3VsdCgmcmVuZGVyZXIoKS50ZXh0Tm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlv
bkluQ29udGFpbmVyLCByZWN0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgICAgICAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcmVuZGVyZXIoKS5zY2FsaW5n
RmFjdG9yKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZsb2F0IGJhc2VsaW5lID0gcmVuZGVyZXIoKS5z
Y2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpIC8gc2NhbGluZ0ZhY3RvcjsK
KworICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBmcmFnbWVudFRyYW5zZm9ybTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0RnJhZ21lbnRzU2l6ZSA9IG1fdGV4dEZyYWdtZW50
cy5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRleHRG
cmFnbWVudHNTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JiBmcmFnbWVudCA9IG1fdGV4dEZyYWdtZW50cy5hdChpKTsKKyAgICAgICAgICAgICAg
ICAgICAgRmxvYXRRdWFkIGZyYWdtZW50UXVhZChGbG9hdFJlY3QoZnJhZ21lbnQueCwgZnJhZ21l
bnQueSAtIGJhc2VsaW5lLCBmcmFnbWVudC53aWR0aCwgZnJhZ21lbnQuaGVpZ2h0KSk7CisgICAg
ICAgICAgICAgICAgICAgIGZyYWdtZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRU
cmFuc2Zvcm0pOworICAgICAgICAgICAgICAgICAgICBpZiAoIWZyYWdtZW50VHJhbnNmb3JtLmlz
SWRlbnRpdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50UXVhZCA9IGZyYWdt
ZW50VHJhbnNmb3JtLm1hcFF1YWQoZnJhZ21lbnRRdWFkKTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudFF1YWQuY29udGFpbnNQb2ludChsb2Nh
dGlvbkluQ29udGFpbmVyLnBvaW50KCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZW5k
ZXJlcigpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoJnJlbmRl
cmVyKCkudGV4dE5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5l
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5j
cHAKaW5kZXggNDliYWI2NGYwMzBhOWVlZmNmYWVjY2MyZWEyN2U5MDhlYjE4Yzc1ZC4uYmU2N2Q3
NDg0MTU3OGQyZjQwMWI1YTIyMzg0OTJiMTg3ZmEyMDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0yMDksNiArMjA5LDE4
IEBAIElubGluZUJveCogU1ZHUm9vdElubGluZUJveDo6Y2xvc2VzdExlYWZDaGlsZEZvclBvc2l0
aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2luCiAgICAgcmV0dXJuIGNsb3Nlc3RMZWFmID8gY2xv
c2VzdExlYWYgOiBsYXN0TGVhZjsKIH0KIAorYm9vbCBTVkdSb290SW5saW5lQm94Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKK3sKKyAgICBmb3IgKElu
bGluZUJveCogbGVhZiA9IGZpcnN0TGVhZkNoaWxkKCk7IGxlYWY7IGxlYWYgPSBsZWFmLT5uZXh0
TGVhZkNoaWxkKCkpIHsKKyAgICAgICAgaWYgKCFsZWFmLT5pc1NWR0lubGluZVRleHRCb3goKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobGVhZi0+bm9kZUF0UG9pbnQocmVx
dWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgbGlu
ZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBz
d2FwSXRlbXNJbkxheW91dEF0dHJpYnV0ZXMoU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqIGZpcnN0
QXR0cmlidXRlcywgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqIGxhc3RBdHRyaWJ1dGVzLCB1bnNp
Z25lZCBmaXJzdFBvc2l0aW9uLCB1bnNpZ25lZCBsYXN0UG9zaXRpb24pCiB7CiAgICAgU1ZHQ2hh
cmFjdGVyRGF0YU1hcDo6aXRlcmF0b3IgaXRGaXJzdCA9IGZpcnN0QXR0cmlidXRlcy0+Y2hhcmFj
dGVyRGF0YU1hcCgpLmZpbmQoZmlyc3RQb3NpdGlvbiArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBiY2E5ZmZkZjI1NDc0ZDFm
MDc0MjQ5MjQ5NjUyMWFlMGQ4NDNlODFkLi44NTExNjQ4YmZjYmE5YzFlZDlkNzNjZDJmNmFmYzY1
NTI5Mzk3OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jv
b3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAKICAgICBJbmxpbmVCb3gqIGNs
b3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYpOwogCisgICAgdmly
dHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVu
aXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CisKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdElubGluZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHJlb3JkZXJWYWx1ZUxpc3RzKFZlY3RvcjxTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcyo+Jik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTI2N2RiNjYxNGRkY2I5YzA2NDIyOGFmZWQx
MjdmNjUzNTdmZmUxNy4uNjlhMmZlNjE3ZTU2MjVlMTgwNWFjYTAzMmY0NzMzODA1ODU1NTNhNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTExLTAzICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0BhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHOiBoaXQgdGVzdGluZyByZWdpb24gZm9yIDx0ZXh0
PiBlbGVtZW50cyBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC13aXRoLW11bHRpcGxlLXRzcGFucy1l
eHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9oaXR0ZXN0L3RleHQtd2l0aC1tdWx0
aXBsZS10c3BhbnMuc3ZnOiBBZGRlZC4KKworICAgICAgICBUZXN0aW5nIHRoZSBoaXQgdGVzdGlu
ZyByZWdpb24gb2YgYW4gU1ZHIDx0ZXh0PiBlbGVtZW50IHdpdGggdHdvIDx0c3Bhbj4gY2hpbGRy
ZW4uCisKKyAgICAgICAgKiBzdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQtcGF0aC5z
dmc6IEFkZGVkLgorCisgICAgICAgIFRlc3RpbmcgdGhlIGhpdCB0ZXN0aW5nIHJlZ2lvbiBvZiBh
biBTVkcgPHRleHQ+IGVsZW1lbnQgd2l0aCBhIDx0ZXh0UGF0aD4gY2hpbGQuCisKIDIwMTUtMTAt
MjkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0NTUyBHcmlkIExheW91dF0gbWluLWNvbnRlbnQgcm93IGRvZXMgbm90IGFsd2F5cyBzaHJpbmsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC1tdWx0aXBsZS10
c3BhbnMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLW11
bHRpcGxlLXRzcGFucy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FiNDY3NDU3NDdkYmFkMzZh
OGJkMWE0Y2FmYmMzNzdkMTVjMjY1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9oaXR0ZXN0L3RleHQtd2l0aC1tdWx0aXBsZS10c3BhbnMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMyBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIz
MDAiIGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMzAwIDE1MCI+CisgICAgPHJlY3QgaWQ9ImJh
Y2tncm91bmQiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImdyZWVuIiAvPgorPC9z
dmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2hpdHRlc3QvdGV4dC13aXRoLW11bHRpcGxlLXRzcGFucy5zdmcgYi9MYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC90ZXh0LXdpdGgtbXVsdGlwbGUtdHNwYW5zLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZi
NGRhOTFkNWRiZjQxMDk2YmZmNmJmZDk3MGQyNWM2OTVmNzMwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLW11bHRpcGxlLXRzcGFucy5zdmcKQEAg
LTAsMCArMSwxNSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdp
ZHRoPSIzMDAiIGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMzAwIDE1MCI+CisgICAgPHJlY3Qg
aWQ9ImJhY2tncm91bmQiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InJlZCIgLz4K
KyAgICA8dGV4dCBpZD0idGV4dCIgZm9udC1mYW1pbHk9IlZlcmRhbmEiIGZvbnQtc2l6ZT0iNDIu
NSI+CisgICAgICAgIDx0c3BhbiB4PSIxMCIgZHk9IjFlbSI+Rm9vPC90c3Bhbj4KKyAgICAgICAg
PHRzcGFuIHg9IjEwIiBkeT0iMWVtIj5Gb28gYmFyIGJhejwvdHNwYW4+CisgICAgPC90ZXh0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICA8IVtDREFUQVsKKyAgICAg
ICAgLy8gVGhlIHBvaW50IGF0IDEyNSwzMCBpcyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXh0J3Mg
Ym91bmRpbmcgYm94CisgICAgICAgIC8vIGJ1dCBub3QgaW4gYSBwYWludGVkIHBhcnQgc28gdGhl
IGVsZW1lbnQgc2hvdWxkIGJlIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBkb2N1bWVudC5lbGVt
ZW50RnJvbVBvaW50KDEyNSwgMzApLnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpLnJlbW92ZSgpOworICAgIF1dPgor
ICAgIDwvc2NyaXB0PgorPC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQtcGF0aC1leHBlY3Rl
ZC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLWV4cGVj
dGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZjdlNjM0ZmY1YjA5NmU0YjhkYTBhNTc1M2YyNzM2MDhkMjQz
ODU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRo
LXRleHQtcGF0aC1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwzIEBACis8c3ZnIHdpZHRoPSI1MDAi
IGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMTAwMCAzMDAiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3QgaWQ9ImJhY2tncm91bmQiIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiIGZpbGw9ImdyZWVuIiAvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLnN2ZyBiL0xheW91dFRlc3RzL3N2
Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LXBhdGguc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2M2IyY2JkMWY0
NzM4NmZjYzE0YmIxYTliMDA2YzlhMjg0Y2YxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLnN2ZwpAQCAtMCwwICsxLDIxIEBA
Cis8c3ZnIHdpZHRoPSI1MDAiIGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMTAwMCAzMDAiIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiPgorICAgIDxkZWZzPgorICAgICAgPHBhdGggaWQ9InBhdGgiCisg
ICAgICAgICAgICBkPSJNIDEwMCAyMDAgCisgICAgICAgICAgICAgICBDIDIwMCAxMDAgMzAwICAg
MCA0MDAgMTAwCisgICAgICAgICAgICAgICBDIDUwMCAyMDAgNjAwIDMwMCA3MDAgMjAwCisgICAg
ICAgICAgICAgICBDIDgwMCAxMDAgOTAwIDEwMCA5MDAgMTAwIiAvPgorICAgIDwvZGVmcz4KKyAg
ICA8cmVjdCBpZD0iYmFja2dyb3VuZCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0i
cmVkIiAvPgorICAgIDx0ZXh0IGlkPSJ0ZXh0IiBmb250LWZhbWlseT0iVmVyZGFuYSIgZm9udC1z
aXplPSI0Mi41Ij4KKyAgICAgIDx0ZXh0UGF0aCB4bGluazpocmVmPSIjcGF0aCI+V2UgZ28gdXAs
IHRoZW4gd2UgZ28gZG93biwgdGhlbiB1cCBhZ2FpbjwvdGV4dFBhdGg+CisgICAgPC90ZXh0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICA8IVtDREFUQVsKKyAgICAg
ICAgLy8gVGhlIHBvaW50IGF0IDE1MCw3NSBpcyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXh0J3Mg
Ym91bmRpbmcgYm94CisgICAgICAgIC8vIGJ1dCBub3QgaW4gYSBwYWludGVkIHBhcnQgc28gdGhl
IGVsZW1lbnQgc2hvdWxkIGJlIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBkb2N1bWVudC5lbGVt
ZW50RnJvbVBvaW50KDE1MCwgNzUpLnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpLnJlbW92ZSgpOworICAgIF1dPgor
ICAgIDwvc2NyaXB0PgorPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264781</attachid>
            <date>2015-11-04 01:53:57 -0800</date>
            <delta_ts>2015-11-04 02:41:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-150838-20151104105259.patch</filename>
            <type>text/plain</type>
            <size>21030</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3MTA0YmUyYWYzOTAy
YmY4ZDFlMjA3NzE4MWNkZWY1NDQxODE3Yy4uNWY4ZTVjNWU2YTI1OGU3MWEyYjI5YjUwMzFkNGJi
ODg2MmZhMzViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE1LTExLTA0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHOiBoaXQgdGVzdGlu
ZyByZWdpb24gZm9yIDx0ZXh0PiBlbGVtZW50cyBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDgzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBIaXQgdGVzdGluZyBmb3IgU1ZHIDx0ZXh0
PiBlbGVtZW50cyB3YXMgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyBoaXQgdGVzdGluZworICAgICAg
ICBmb3IgQ1NTLXJlbmRlcmVkIGVsZW1lbnRzLiBIb3dldmVyLCBpbiBTVkcsIHRleHQgZWxlbWVu
dHMgc2hvdWxkIG9ubHkgaGl0CisgICAgICAgIHRlc3QgYmFzZWQgb24gdGhlaXIgY2hhcmFjdGVy
IGNlbGxzLCBub3QgdGhlIHJlY3Rhbmd1bGFyIGJvdW5kcyBvZiB0aGUKKyAgICAgICAgZWxlbWVu
dCwgc2VlIHNlY3Rpb24gMTYuNiBvZiB0aGUgU1ZHIDEuMSBzcGVjaWZpY2F0aW9uOgorICAgICAg
ICAKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvaW50ZXJhY3QuaHRtbCNQb2lu
dGVyRXZlbnRzUHJvcGVydHkKKyAgICAgICAgCisgICAgICAgIFNvIHdlIG5vdyBoaXQgdGVzdCBl
YWNoIFNWR1RleHRGcmFnbWVudCBvZiBlYWNoIFNWR0lubGluZVRleHRCb3gKKyAgICAgICAgdGhh
dCBpcyBhIGNoaWxkIG9mIGFuIFNWR1Jvb3RJbmxpbmVCb3ggdG8gY29ycmVjdGx5IGZpbmQgd2hl
dGhlciB0aGUKKyAgICAgICAgcHJvdmlkZWQgSGl0VGVzdExvY2F0aW9uIGlzIGNvbnRhaW5lZCB3
aXRoaW4gYSBjaGFyYWN0ZXIgY2VsbC4gCisKKyAgICAgICAgVGVzdHM6IHN2Zy9oaXR0ZXN0L3Rl
eHQtZG9taW5hbnQtYmFzZWxpbmUtaGFuZ2luZy5zdmcKKyAgICAgICAgICAgICAgIHN2Zy9oaXR0
ZXN0L3RleHQtbXVsdGlwbGUtZHgtdmFsdWVzLnN2ZworICAgICAgICAgICAgICAgc3ZnL2hpdHRl
c3QvdGV4dC13aXRoLW11bHRpcGxlLXRzcGFucy5zdmcKKyAgICAgICAgICAgICAgIHN2Zy9oaXR0
ZXN0L3RleHQtd2l0aC10ZXh0LW5vZGUtYW5kLWNvbnRlbnQtZWxlbWVudHMuc3ZnCisgICAgICAg
ICAgICAgICBzdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1ub2RlLW9ubHkuc3ZnCisgICAgICAg
ICAgICAgICBzdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLnN2ZworCisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAgICAgUmVtb3ZlIHRoZSBmaW5hbCBrZXl3
b3JkIHNpbmNlIG5vZGVBdFBvaW50KCkgbWF5IG5vdyBiZSBzdWJjbGFzc2VkIGFzCisgICAgICAg
IGltcGxlbWVudGVkIGluIFNWR1Jvb3RJbmxpbmVCb3guCisgCisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgSXRlcmF0ZSBvdmVyIHRoZSBTVkdUZXh0RnJh
Z21lbnRzIHRvIGxvb2sgZm9yIGEgZnJhZ21lbnQgY29udGFpbmluZyB0aGUKKyAgICAgICAgcHJv
dmlkZWQgSGl0VGVzdExvY2F0aW9uLgorIAorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94Ojpub2Rl
QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94Lmg6Cisg
ICAgICAgIE92ZXJyaWRlIFJvb3RJbmxpbmVCb3g6Om5vZGVBdFBvaW50KCkgdG8gZGVsZWdhdGUg
aGl0IHRlc3RpbmcgdG8gdGhlCisgICAgICAgIGNoaWxkcmVuIGlubGluZSBib3hlcy4KKwogMjAx
NS0xMC0yOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBtaW4tY29udGVudCByb3cgZG9lcyBub3QgYWx3YXlzIHNo
cmluawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKaW5kZXggNTJhM2Q1
MTI1MWRhZGQ2ZDVjMDE1MTM3MDdmZTQyMThmZTk0NmRhZS4uOTg2OGIwMDZjNzA1OWNkZmZiYjRj
MGM4ZmU5YTdmZDEwOGY4OTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBsaW5lSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0
VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBJbmxpbmVCb3g6Omhhc1NlbGVjdGVk
Q2hpbGRyZW47CiAgICAgdXNpbmcgSW5saW5lQm94OjpzZXRIYXNTZWxlY3RlZENoaWxkcmVuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAK
aW5kZXggZWY4ZjE4ZWVjZWNhYmE5MTYyNTRiYjczZjIxNjQwMzczMmZhNWQzNC4uNjlmMjk2MDZj
NmNjZjEwNDBkNWEwOWEzNWZkM2IyNDNjODk2NmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC02ODUsOSArNjg1LDI1IEBA
IGJvb2wgU1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmCiAgICAgICAgICAgICBib3hPcmlnaW4ubW92ZUJ5KGFj
Y3VtdWxhdGVkT2Zmc2V0KTsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGJveE9yaWdpbiwg
c2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMo
cmVjdCkpIHsKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLnVwZGF0ZUhpdFRlc3RSZXN1bHQo
cmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11
bGF0ZWRPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0
QmFzZWRUZXN0UmVzdWx0KCZyZW5kZXJlcigpLnRleHROb2RlKCksIHJlcXVlc3QsIGxvY2F0aW9u
SW5Db250YWluZXIsIHJlY3QpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigpLnNjYWxpbmdG
YWN0b3IoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgZmxvYXQgYmFzZWxpbmUgPSByZW5kZXJlcigpLnNj
YWxlZEZvbnQoKS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOwor
CisgICAgICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGZyYWdtZW50VHJhbnNmb3JtOworICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgZnJhZ21lbnQgOiBtX3RleHRGcmFnbWVudHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgRmxvYXRRdWFkIGZyYWdtZW50UXVhZChGbG9hdFJlY3QoZnJhZ21l
bnQueCwgZnJhZ21lbnQueSAtIGJhc2VsaW5lLCBmcmFnbWVudC53aWR0aCwgZnJhZ21lbnQuaGVp
Z2h0KSk7CisgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zv
cm0oZnJhZ21lbnRUcmFuc2Zvcm0pOworICAgICAgICAgICAgICAgICAgICBpZiAoIWZyYWdtZW50
VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50
UXVhZCA9IGZyYWdtZW50VHJhbnNmb3JtLm1hcFF1YWQoZnJhZ21lbnRRdWFkKTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudFF1YWQuY29udGFp
bnNQb2ludChsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZW5kZXJlcigpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbklu
Q29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RS
ZXN1bHQoJnJlbmRlcmVyKCkudGV4dE5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgcmVjdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5jcHAKaW5kZXggNDliYWI2NGYwMzBhOWVlZmNmYWVjY2MyZWEyN2U5MDhlYjE4
Yzc1ZC4uYmU2N2Q3NDg0MTU3OGQyZjQwMWI1YTIyMzg0OTJiMTg3ZmEyMDk3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0y
MDksNiArMjA5LDE4IEBAIElubGluZUJveCogU1ZHUm9vdElubGluZUJveDo6Y2xvc2VzdExlYWZD
aGlsZEZvclBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2luCiAgICAgcmV0dXJuIGNsb3Nl
c3RMZWFmID8gY2xvc2VzdExlYWYgOiBsYXN0TGVhZjsKIH0KIAorYm9vbCBTVkdSb290SW5saW5l
Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9w
LCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKK3sK
KyAgICBmb3IgKElubGluZUJveCogbGVhZiA9IGZpcnN0TGVhZkNoaWxkKCk7IGxlYWY7IGxlYWYg
PSBsZWFmLT5uZXh0TGVhZkNoaWxkKCkpIHsKKyAgICAgICAgaWYgKCFsZWFmLT5pc1NWR0lubGlu
ZVRleHRCb3goKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobGVhZi0+bm9k
ZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRl
ZE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSwgaGl0VGVzdEFjdGlvbikpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBp
bmxpbmUgdm9pZCBzd2FwSXRlbXNJbkxheW91dEF0dHJpYnV0ZXMoU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXMqIGZpcnN0QXR0cmlidXRlcywgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqIGxhc3RBdHRy
aWJ1dGVzLCB1bnNpZ25lZCBmaXJzdFBvc2l0aW9uLCB1bnNpZ25lZCBsYXN0UG9zaXRpb24pCiB7
CiAgICAgU1ZHQ2hhcmFjdGVyRGF0YU1hcDo6aXRlcmF0b3IgaXRGaXJzdCA9IGZpcnN0QXR0cmli
dXRlcy0+Y2hhcmFjdGVyRGF0YU1hcCgpLmZpbmQoZmlyc3RQb3NpdGlvbiArIDEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBiY2E5
ZmZkZjI1NDc0ZDFmMDc0MjQ5MjQ5NjUyMWFlMGQ4NDNlODFkLi44NTExNjQ4YmZjYmE5YzFlZDlk
NzNjZDJmNmFmYzY1NTI5Mzk3OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAKICAgICBJ
bmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYp
OwogCisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVU
b3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7
CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdElubGluZUJveCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHJlb3JkZXJWYWx1ZUxpc3RzKFZl
Y3RvcjxTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyo+Jik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTI2N2RiNjYxNGRkY2I5
YzA2NDIyOGFmZWQxMjdmNjUzNTdmZmUxNy4uNGQ4ZDQ3ZGYzMjY2MzgwMTFkZDE3N2ZlNmY5ZjA5
NjkzNDIyYjViOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTExLTA0ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHOiBoaXQgdGVzdGluZyByZWdp
b24gZm9yIDx0ZXh0PiBlbGVtZW50cyBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IERlYW4gSmFja3Nvbi4KKworICAgICAgICAqIHN2Zy9oaXR0ZXN0L3RleHQtZG9taW5hbnQtYmFz
ZWxpbmUtaGFuZ2luZy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9oaXR0ZXN0
L3RleHQtZG9taW5hbnQtYmFzZWxpbmUtaGFuZ2luZy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9oaXR0ZXN0L3RleHQtbXVsdGlwbGUtZHgtdmFsdWVzLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC1tdWx0aXBsZS1keC12YWx1ZXMuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvaGl0dGVzdC90ZXh0LXdpdGgtbXVsdGlwbGUtdHNwYW5zLWV4cGVjdGVk
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC13aXRoLW11bHRpcGxlLXRz
cGFucy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LW5v
ZGUtYW5kLWNvbnRlbnQtZWxlbWVudHMtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1ub2RlLWFuZC1jb250ZW50LWVsZW1lbnRzLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQtbm9kZS1vbmx5LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQt
bm9kZS1vbmx5LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRl
eHQtcGF0aC1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9oaXR0ZXN0L3RleHQt
d2l0aC10ZXh0LXBhdGguc3ZnOiBBZGRlZC4KKwogMjAxNS0xMC0yOSAgU2VyZ2lvIFZpbGxhciBT
ZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBt
aW4tY29udGVudCByb3cgZG9lcyBub3QgYWx3YXlzIHNocmluawpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC1kb21pbmFudC1iYXNlbGluZS1oYW5naW5nLWV4cGVjdGVk
LnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtZG9taW5hbnQtYmFzZWxpbmUtaGFu
Z2luZy1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIzMmM0ZGQyNDNiYjU1MTY0OTk3ZDdmNjU3
ODMyYzQwMmRlYjgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0
L3RleHQtZG9taW5hbnQtYmFzZWxpbmUtaGFuZ2luZy1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwz
IEBACis8c3ZnIHdpZHRoPSI1MDAiIGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMTAwMCAzMDAi
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3Qgd2lkdGg9IjEw
MCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtZG9taW5hbnQtYmFzZWxpbmUtaGFuZ2luZy5zdmcg
Yi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0LWRvbWluYW50LWJhc2VsaW5lLWhhbmdpbmcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI3ZGYzMTJiOWY1MGU2MjYzZDMxNzg2N2UwY2Y1ODYxMDI5ZDRmNDUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0LWRvbWluYW50
LWJhc2VsaW5lLWhhbmdpbmcuc3ZnCkBAIC0wLDAgKzEsMjggQEAKKzxzdmcgd2lkdGg9IjUwMCIg
aGVpZ2h0PSIxNTAiIHZpZXdCb3g9IjAgMCAxMDAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCBpZD0iYmFja2dyb3VuZCIgd2lkdGg9IjEwMCUiIGhl
aWdodD0iMTAwJSIgZmlsbD0icmVkIiAvPgorICAgIDx0ZXh0IGlkPSJ0ZXh0IiBkb21pbmFudC1i
YXNlbGluZT0iaGFuZ2luZyIgeD0iMTAiIHk9IjEwIj5Gb288L3RleHQ+CisgICAgPGRlZnM+Cisg
ICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAg
ICAgICAgQGZvbnQtZmFjZSB7CisgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW07Cisg
ICAgICAgICAgICAgICAgc3JjOiB1cmwoLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHRleHQgeworICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5
OiBBaGVtOworICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNDBweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIF1dPgorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy8gVGhl
IHBvaW50IGF0IDE1LDE1IGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRleHQncyBib3VuZGluZyBi
b3guCisgICAgICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0
Iik7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgxNSwgMTUpID09
PSB0ZXh0KSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhY2tn
cm91bmQiKS5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKKyAgICAgICAgICAgICAgICB0
ZXh0LnJlbW92ZSgpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9kZWZzPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvaGl0
dGVzdC90ZXh0LW11bHRpcGxlLWR4LXZhbHVlcy1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC90ZXh0LW11bHRpcGxlLWR4LXZhbHVlcy1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzIzMmM0ZGQyNDNiYjU1MTY0OTk3ZDdmNjU3ODMyYzQwMmRlYjgxNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtbXVsdGlwbGUtZHgtdmFsdWVzLWV4
cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDMgQEAKKzxzdmcgd2lkdGg9IjUwMCIgaGVpZ2h0PSIxNTAi
IHZpZXdCb3g9IjAgMCAxMDAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
Ij4KKyAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIgLz4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC1tdWx0aXBs
ZS1keC12YWx1ZXMuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC1tdWx0aXBsZS1k
eC12YWx1ZXMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZGQ2YTdlNmU0YzgzYTExOWYzOWZiZDFhMzVjZTRh
MzVjM2YyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0
LW11bHRpcGxlLWR4LXZhbHVlcy5zdmcKQEAgLTAsMCArMSwzMSBAQAorPHN2ZyB3aWR0aD0iNTAw
IiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDEwMDAgMzAwIiB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IGlkPSJiYWNrZ3JvdW5kIiB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIiBmaWxsPSJyZWQiIC8+CisgICAgPHRleHQgaWQ9InRleHQiIHg9IjEwIiB5
PSIxZW0iIGR4PSIwIDUwIDEwMCI+Rm9vPC90ZXh0PgorICAgIDxkZWZzPgorICAgICAgICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIEBmb250
LWZhY2UgeworICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtOworICAgICAgICAgICAg
ICAgIHNyYzogdXJsKC4uLy4uL3Jlc291cmNlcy9BaGVtLnR0Zik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB0ZXh0IHsKKyAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbTsKKyAg
ICAgICAgICAgICAgICBmb250LXNpemU6IDQwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBdXT4KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vIFRoZSBwb2ludCBhdCAx
NSwxNSBpcyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXh0J3MgYm91bmRpbmcgYm94LgorICAgICAg
ICAgICAgLy8gVGhlIHBvaW50IGF0IDMwLDE1IGlzIGNvbnRhaW5lZCBpbiBiZXR3ZWVuIHRoZSB0
ZXh0J3MgY2hhcmFjdGVyIGNlbGxzCisgICAgICAgICAgICAvLyBhbmQgdGh1cyBzaG91bGQgcmV0
dXJuIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGV4dCIpOworICAgICAgICAgICAgdmFyIGJhY2tncm91bmQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYmFja2dyb3VuZCIpOworICAgICAgICAgICAgaWYgKGRvY3VtZW50
LmVsZW1lbnRGcm9tUG9pbnQoMTUsIDE1KSA9PT0gdGV4dCAmJiBkb2N1bWVudC5lbGVtZW50RnJv
bVBvaW50KDM1LCAxNSkgPT09IGJhY2tncm91bmQpIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3Jv
dW5kLnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworICAgICAgICAgICAgICAgIHRleHQu
cmVtb3ZlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2RlZnM+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0
L3RleHQtd2l0aC1tdWx0aXBsZS10c3BhbnMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3Zn
L2hpdHRlc3QvdGV4dC13aXRoLW11bHRpcGxlLXRzcGFucy1leHBlY3RlZC5zdmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGJlOTJkNjJiYzM1MzgyYzJjYzJhOGQ2NWZiN2IyMDM5NTkzMmYzOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC1tdWx0aXBsZS10c3BhbnMt
ZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMyBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMzAwIDE1
MCI+CisgICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iIC8+
Cis8L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtbXVsdGlwbGUtdHNwYW5zLnN2ZyBiL0xheW91dFRl
c3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC1tdWx0aXBsZS10c3BhbnMuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg1ZTBhMmI5MTNhNzVlOGU4YWYxMGY1MWY5ZDRmZTNkNTcwMzEzNDYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtbXVsdGlwbGUtdHNwYW5zLnN2
ZwpAQCAtMCwwICsxLDM2IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIxNTAiIHZpZXdCb3g9IjAgMCAzMDAgMTUwIj4KKyAgICA8
cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJyZWQiIC8+CisgICAgPHRleHQg
aWQ9InRleHQiPgorICAgICAgICA8dHNwYW4geD0iMTAiIGR5PSIxZW0iPkZvbzwvdHNwYW4+Cisg
ICAgICAgIDx0c3BhbiB4PSIxMCIgZHk9IjEuMmVtIj5Gb28gYmFyIGJhejwvdHNwYW4+CisgICAg
PC90ZXh0PgorICAgIDxkZWZzPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAg
ICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIEBmb250LWZhY2UgeworICAgICAgICAgICAgICAg
IGZvbnQtZmFtaWx5OiBBaGVtOworICAgICAgICAgICAgICAgIHNyYzogdXJsKC4uLy4uL3Jlc291
cmNlcy9BaGVtLnR0Zik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXh0IHsKKyAgICAg
ICAgICAgICAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6
IDQwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICA8IVtDREFU
QVsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgcG9pbnQgYXQgMTcwLDMwIGlzIGNvbnRh
aW5lZCB3aXRoaW4gdGhlIHRleHQncyBib3VuZGluZyBib3gKKyAgICAgICAgICAgICAgICAvLyBi
dXQgbm90IGluIGEgcGFpbnRlZCBwYXJ0IHNvIHRoZSBlbGVtZW50IHNob3VsZCBiZSB0aGUgYmFj
a2dyb3VuZC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDE3MCwg
MzApLnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0IikucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgXV0+CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvZGVmcz4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LW5vZGUtYW5k
LWNvbnRlbnQtZWxlbWVudHMtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qv
dGV4dC13aXRoLXRleHQtbm9kZS1hbmQtY29udGVudC1lbGVtZW50cy1leHBlY3RlZC5zdmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzIzMmM0ZGQyNDNiYjU1MTY0OTk3ZDdmNjU3ODMyYzQwMmRlYjgxNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LW5vZGUt
YW5kLWNvbnRlbnQtZWxlbWVudHMtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsMyBAQAorPHN2ZyB3
aWR0aD0iNTAwIiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDEwMDAgMzAwIiB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9
IjEwMCUiIGZpbGw9ImdyZWVuIiAvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1ub2RlLWFuZC1jb250ZW50LWVsZW1lbnRzLnN2ZyBi
L0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LW5vZGUtYW5kLWNvbnRlbnQt
ZWxlbWVudHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkOTU2YTcxODQ2ODBjMmJiNDZjNDQ2NWZmMzM1MTgz
NDY2YzJlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0
LXdpdGgtdGV4dC1ub2RlLWFuZC1jb250ZW50LWVsZW1lbnRzLnN2ZwpAQCAtMCwwICsxLDM2IEBA
Cis8c3ZnIHdpZHRoPSI1MDAiIGhlaWdodD0iMTUwIiB2aWV3Qm94PSIwIDAgMTAwMCAzMDAiIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgb25jbGljaz0iY2xpY2soZXZ0KSI+Cisg
ICAgPHJlY3QgaWQ9ImJhY2tncm91bmQiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9
InJlZCIgLz4KKyAgICA8dGV4dCBpZD0idGV4dCIgeD0iMTAiIHk9IjFlbSI+Rm9vIDx0c3BhbiBp
ZD0idHNwYW4iPkJhcjwvdHNwYW4+IEJhejwvdGV4dD4KKyAgICA8ZGVmcz4KKyAgICAgICAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBAZm9u
dC1mYWNlIHsKKyAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICAgICAgICAg
ICAgICBzcmM6IHVybCguLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgdGV4dCB7CisgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW07Cisg
ICAgICAgICAgICAgICAgZm9udC1zaXplOiA0MHB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgXV0+CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAg
ICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKTsKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gVGhl
IHBvaW50IGF0IDE1LDE1IGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHdvcmQgIkZvbyIsIGEgdGV4
dCBub2RlLgorICAgICAgICAgICAgICAgIC8vIFRoZSBwb2ludCBhdCAxMjAsMTUgaXMgY29udGFp
bmVkIHdpdGhpbiB0aGUgd29yZCAiQmFyIiwgYSA8dHNwYW4+LgorICAgICAgICAgICAgICAgIGlm
IChkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDE1LCAxNSkgPT09IHRleHQgJiYgZG9jdW1lbnQu
ZWxlbWVudEZyb21Qb2ludCgxMTAsIDE1KSA9PT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRz
cGFuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJh
Y2tncm91bmQiKS5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgNTApOworICAgICAgICBdXT4KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9kZWZzPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1ub2RlLW9ubHktZXhwZWN0ZWQuc3ZnIGIv
TGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQtbm9kZS1vbmx5LWV4cGVjdGVk
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MjMyYzRkZDI0M2JiNTUxNjQ5OTdkN2Y2NTc4MzJjNDAyZGViODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRl
eHQtbm9kZS1vbmx5LWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDMgQEAKKzxzdmcgd2lkdGg9IjUw
MCIgaGVpZ2h0PSIxNTAiIHZpZXdCb3g9IjAgMCAxMDAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBm
aWxsPSJncmVlbiIgLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRl
c3QvdGV4dC13aXRoLXRleHQtbm9kZS1vbmx5LnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0
L3RleHQtd2l0aC10ZXh0LW5vZGUtb25seS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJhOWNiZTg2NzM5YTA4
YWM4ODA5NDE5N2U1YjRiZjk0N2YyZTgwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LW5vZGUtb25seS5zdmcKQEAgLTAsMCArMSwyOCBA
QAorPHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDEwMDAgMzAwIiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IGlkPSJiYWNrZ3Jv
dW5kIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJyZWQiIC8+CisgICAgPHRleHQg
aWQ9InRleHQiIHg9IjEwIiB5PSIxZW0iPkZvbzwvdGV4dD4KKyAgICA8ZGVmcz4KKyAgICAgICAg
PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBA
Zm9udC1mYWNlIHsKKyAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbTsKKyAgICAgICAg
ICAgICAgICBzcmM6IHVybCguLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdGV4dCB7CisgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW07
CisgICAgICAgICAgICAgICAgZm9udC1zaXplOiA0MHB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgXV0+CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvLyBUaGUgcG9pbnQg
YXQgMTUsMTUgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgdGV4dCdzIGJvdW5kaW5nIGJveC4KKyAg
ICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKTsKKyAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KDE1LCAxNSkgPT09IHRleHQp
IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmFja2dyb3VuZCIp
LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworICAgICAgICAgICAgICAgIHRleHQucmVt
b3ZlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2RlZnM+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3Rl
eHQtd2l0aC10ZXh0LXBhdGgtZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qv
dGV4dC13aXRoLXRleHQtcGF0aC1leHBlY3RlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y3ZTYzNGZmNWIw
OTZlNGI4ZGEwYTU3NTNmMjczNjA4ZDI0Mzg1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9oaXR0ZXN0L3RleHQtd2l0aC10ZXh0LXBhdGgtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAg
KzEsMyBAQAorPHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDEwMDAg
MzAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IGlkPSJi
YWNrZ3JvdW5kIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIgLz4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQt
cGF0aC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC90ZXh0LXdpdGgtdGV4dC1wYXRoLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NTkyMGZlYzM5ZTI4NjJkNzg3NmQ1ZGNlZjhhMzk2NTc3MjJmMTNmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3QvdGV4dC13aXRoLXRleHQt
cGF0aC5zdmcKQEAgLTAsMCArMSwzMyBAQAorPHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjE1MCIg
dmlld0JveD0iMCAwIDEwMDAgMzAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgICA8cmVjdCBp
ZD0iYmFja2dyb3VuZCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmVkIiAvPgor
ICAgIDx0ZXh0IGlkPSJ0ZXh0Ij4KKyAgICAgICAgPHRleHRQYXRoIHhsaW5rOmhyZWY9IiNwYXRo
Ij5UaGlzIGlzIHRleHQgb24gYSBwYXRoPC90ZXh0UGF0aD4KKyAgICA8L3RleHQ+CisgICAgPGRl
ZnM+CisgICAgICAgIDxwYXRoIGlkPSJwYXRoIgorICAgICAgICAgICAgICBkPSJNIDEwMCAyMDAg
CisgICAgICAgICAgICAgIEMgMjAwIDEwMCAzMDAgICAwIDQwMCAxMDAKKyAgICAgICAgICAgICAg
QyA1MDAgMjAwIDYwMCAzMDAgNzAwIDIwMAorICAgICAgICAgICAgICBDIDgwMCAxMDAgOTAwIDEw
MCA5MDAgMTAwIiAvPgorICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICA8
IVtDREFUQVsKKyAgICAgICAgICAgIEBmb250LWZhY2UgeworICAgICAgICAgICAgICAgZm9udC1m
YW1pbHk6IEFoZW07CisgICAgICAgICAgICAgICBzcmM6IHVybCguLi8uLi9yZXNvdXJjZXMvQWhl
bS50dGYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGV4dCB7CisgICAgICAgICAgICAg
ICBmb250LWZhbWlseTogQWhlbTsKKyAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNDBweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAg
ICAvLyBUaGUgcG9pbnQgYXQgMTUwLDc1IGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRleHQncyBi
b3VuZGluZyBib3gKKyAgICAgICAgICAgIC8vIGJ1dCBub3QgaW4gYSBwYWludGVkIHBhcnQgc28g
dGhlIGVsZW1lbnQgc2hvdWxkIGJlIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICAgICAgZG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludCgxNTAsIDc1KS5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4i
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0IikucmVtb3ZlKCk7
CisgICAgICAgIF1dPgorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2RlZnM+Cis8L3N2Zz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>