<?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>97576</bug_id>
          
          <creation_ts>2012-09-25 10:41:48 -0700</creation_ts>
          <short_desc>Can&apos;t easily position the cursor on an empty line in a textarea with touch if touch adjustment is enabled</short_desc>
          <delta_ts>2012-10-25 08:41:07 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin Ellis">kevers</reporter>
          <assigned_to name="Kevin Ellis">kevers</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>rbyers</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727781</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-25 10:41:48 -0700</bug_when>
    <thetext>Steps to reproduce:
1. Enter some text into a textarea, including blank lines 
2. Tap on various lines in the text area.
3. Repeat using a mouse.

I expect tapping on a position to have essentially the same behavior as clicking on it.  Instead, touch adjustment is tweaking the position to the nearest text.  This makes it almost impossible to position the cursor on an empty line using touch gestures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727785</commentid>
    <comment_count>1</comment_count>
      <attachid>165640</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-25 10:50:11 -0700</bug_when>
    <thetext>Created attachment 165640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727834</commentid>
    <comment_count>2</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-25 11:43:23 -0700</bug_when>
    <thetext>I am confused why adjustment happens in this case. Is any of the text &apos;clickable&apos;, or are they just responding to tap because the textarea is focusable?

In any case I don&apos;t like making a special exception for textareas, because the same problem is likely to manifest in other forms or content-editable elements as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727898</commentid>
    <comment_count>3</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-25 13:10:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I am confused why adjustment happens in this case. Is any of the text &apos;clickable&apos;, or are they just responding to tap because the textarea is focusable?
&gt; 
&gt; In any case I don&apos;t like making a special exception for textareas, because the same problem is likely to manifest in other forms or content-editable elements as well.

Yes, it sees that the text area is focusable as it bubbles up through the parents of the text looking for responders.  This results in the text nodes being candidates for touch adjustment.

In most cases, we do want touch adjustment to apply to children of a form element, such as the search cancel button, media controls, date picker, etc.  Cases were we want to suppress touch adjustment on child nodes that pass the filter check may be rare.

Though not excited about adding an explicit exception in touch adjustment, I&apos;m also reluctant to generalize until we see a pattern emerge.  There is a danger of winding up with an over-designed or awkward API.

Possible that we can bail early in the parent traversal for a responder on a text nodes.  This would allow us to catch text nodes that are links and prevent adjustment on text nodes in other cases.  Effectively makes link the exception rather than textarea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728369</commentid>
    <comment_count>4</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-26 02:55:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; In most cases, we do want touch adjustment to apply to children of a form element, such as the search cancel button, media controls, date picker, etc.  Cases were we want to suppress touch adjustment on child nodes that pass the filter check may be rare.
&gt; 
Well, in those cases the children would themselves be handling a tap event. While in this case it is only their form parent handling it.

&gt; Though not excited about adding an explicit exception in touch adjustment, I&apos;m also reluctant to generalize until we see a pattern emerge.  There is a danger of winding up with an over-designed or awkward API.
&gt; 
To me this seems like an extension of the idea we now use of not adjusting the point if it is already inside the target. In this case the point is also inside the target ultimately handling the tap-event, but the touch-adjustment logic is comparing the touch point to all the subtarget areas of the text children instead of the big area of the textarea.

I will see if I can figure out a nice safe way to avoid adjusting the point if it is already inside the responder of the target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728390</commentid>
    <comment_count>5</comment_count>
      <attachid>165766</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-26 03:49:35 -0700</bug_when>
    <thetext>Created attachment 165766
Patch Proposal

This patch is a wildly different approach. It changes what targets we adjust to, by adjusting to the actual responding nodes instead of trying to adjust the best child of them. Hopefully this should help detect the cases where we do not need to adjust the point at all because it is already contained in the selected target.

A few test-cases needed to be updated though since they relied on touch adjustment to non-responding nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728391</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 03:51:05 -0700</bug_when>
    <thetext>Attachment 165766 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/touc...&quot; exit_code: 1
Source/WebCore/page/TouchAdjustment.cpp:265:  Missing space before ( in for(  [whitespace/parens] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728498</commentid>
    <comment_count>7</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-26 06:46:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; In most cases, we do want touch adjustment to apply to children of a form element, such as the search cancel button, media controls, date picker, etc.  Cases were we want to suppress touch adjustment on child nodes that pass the filter check may be rare.
&gt; &gt; 
&gt; Well, in those cases the children would themselves be handling a tap event. While in this case it is only their form parent handling it.

&gt; 
&gt; &gt; Though not excited about adding an explicit exception in touch adjustment, I&apos;m also reluctant to generalize until we see a pattern emerge.  There is a danger of winding up with an over-designed or awkward API.
&gt; &gt; 
&gt; To me this seems like an extension of the idea we now use of not adjusting the point if it is already inside the target. In this case the point is also inside the target ultimately handling the tap-event, but the touch-adjustment logic is comparing the touch point to all the subtarget areas of the text children instead of the big area of the textarea.
&gt; 
&gt; I will see if I can figure out a nice safe way to avoid adjusting the point if it is already inside the responder of the target.

Appears to be straightforward enough to implement, though the change would have farther reaching impact.  One common strategy is to consolidate mouse handlers to improve performance (notably for pages that must work with older versions of IE).  If a mouse handler is added to a toolbar rather than each of its buttons (relying on event.getTarget() to delegate to the correct button), the proposed fix would prevent touch adjustment to the toolbar buttons.  This is just one example where the current behavior of snapping to children is actually a good thing.  Overall, snapping to finer grained content seems worthwhile, and text area (or possibly non-link text content in general) seems like an exception because of the issue with blank lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728536</commentid>
    <comment_count>8</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-26 07:29:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Appears to be straightforward enough to implement, though the change would have farther reaching impact.  One common strategy is to consolidate mouse handlers to improve performance (notably for pages that must work with older versions of IE).  If a mouse handler is added to a toolbar rather than each of its buttons (relying on event.getTarget() to delegate to the correct button), the proposed fix would prevent touch adjustment to the toolbar buttons.  This is just one example where the current behavior of snapping to children is actually a good thing.  Overall, snapping to finer grained content seems worthwhile, and text area (or possibly non-link text content in general) seems like an exception because of the issue with blank lines.

That is true. I knew there had to be a reason I originally wrote the algorithm that way.

I think the issue is actually more that the blank lines does not have appropiate sub targets. Since they can be used to set the caret, they are obviously &quot;active&quot; targets, and should have corresponding sub-target areas that touch adjustment can use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728690</commentid>
    <comment_count>9</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-26 09:58:56 -0700</bug_when>
    <thetext>Allan,  I don&apos;t believe your patch proposal addresses the problem since willRespondToMouseClickEvents returns true for editable content, which in turns means that nodeRespondsToTapGesture will return true for nodes inside a text area. Updating the tap gesture filter to skip text nodes that are content editable introduces a test regression in disabled-formelements.html.  Think we are opening a can of worms trying to generalize a fix required for textarea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728711</commentid>
    <comment_count>10</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-26 10:29:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Allan,  I don&apos;t believe your patch proposal addresses the problem since willRespondToMouseClickEvents returns true for editable content, which in turns means that nodeRespondsToTapGesture will return true for nodes inside a text area. Updating the tap gesture filter to skip text nodes that are content editable introduces a test regression in disabled-formelements.html.  Think we are opening a can of worms trying to generalize a fix required for textarea.

Some regressions are caused by the tests not being perfectly constructed. If you only get one, you should investigate it and figure out of it is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728774</commentid>
    <comment_count>11</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-26 11:19:35 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Allan,  I don&apos;t believe your patch proposal addresses the problem since willRespondToMouseClickEvents returns true for editable content, which in turns means that nodeRespondsToTapGesture will return true for nodes inside a text area. Updating the tap gesture filter to skip text nodes that are content editable introduces a test regression in disabled-formelements.html.  Think we are opening a can of worms trying to generalize a fix required for textarea.
&gt; 
&gt; Some regressions are caused by the tests not being perfectly constructed. If you only get one, you should investigate it and figure out of it is important.

The one regression is symptomatic of a larger problem.  Here are the issues:

- If nodeRespondsToTapGestures returns false for editable text nodes we still the problem of finding a responder on an ancestor, which causes the candidate to be included.
- If we further block the propagation through parents (only for editable text), we don&apos;t find inputs, which is why disabled-formelements.html is failing.
- If we allow the propagation, but use the responders bounds (and make editable text a non-responder) rather than the child bounds, we reduce the usefulness of touch adjustment in cases where the mouse handler code is consolidated like in the toolbar example discussed previously.

Things get more interesting when we consider links within editable content, which probably should get touch adjustment. What about other nodes within editable divs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728831</commentid>
    <comment_count>12</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-26 12:03:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The one regression is symptomatic of a larger problem.  Here are the issues:
&gt; 
&gt; - If nodeRespondsToTapGestures returns false for editable text nodes we still the problem of finding a responder on an ancestor, which causes the candidate to be included.
&gt; - If we further block the propagation through parents (only for editable text), we don&apos;t find inputs, which is why disabled-formelements.html is failing.
&gt; - If we allow the propagation, but use the responders bounds (and make editable text a non-responder) rather than the child bounds, we reduce the usefulness of touch adjustment in cases where the mouse handler code is consolidated like in the toolbar example discussed previously.
&gt; 
&gt; Things get more interesting when we consider links within editable content, which probably should get touch adjustment. What about other nodes within editable divs?

Yeah, it is not easy. With all these issues it seems the only real solution is to make targets for editable empty lines, because that is the real cause of the problem, that empty lines does not get represented as targetable areas, when they are actually valid targets. Now actually doing that, is not so easy, and will probably require messing with absolute quads and line boxes. 

So on the short term, it looks like the original patch is the only simple solution, but it will need some comments to explain that is an specialized solution to one issue of a bigger problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728833</commentid>
    <comment_count>13</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-26 12:05:17 -0700</bug_when>
    <thetext>Will gladly add a TODO. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728925</commentid>
    <comment_count>14</comment_count>
      <attachid>165864</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-09-26 13:28:42 -0700</bug_when>
    <thetext>Created attachment 165864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732626</commentid>
    <comment_count>15</comment_count>
      <attachid>165864</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 06:57:31 -0700</bug_when>
    <thetext>Comment on attachment 165864
Patch

As per discussion, this is an acceptable work-around for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732916</commentid>
    <comment_count>16</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-02 11:57:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 165864 [details])
&gt; As per discussion, this is an acceptable work-around for now.

Tonikitoo, can you please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734666</commentid>
    <comment_count>17</comment_count>
      <attachid>165864</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-10-04 07:37:06 -0700</bug_when>
    <thetext>Comment on attachment 165864
Patch

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

&gt; Source/WebCore/page/TouchAdjustment.cpp:234
&gt; +        // Do not adjust within a &lt;textarea&gt; to enable targeting a blank line between long lines of text.

do you have the same problem with &lt;p contenteditable=&quot;true&quot;&gt;This is an editable paragraph, please manually add an empty line here&lt;/p&gt;  ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734689</commentid>
    <comment_count>18</comment_count>
      <attachid>165864</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-04 07:55:11 -0700</bug_when>
    <thetext>Comment on attachment 165864
Patch

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

&gt;&gt; Source/WebCore/page/TouchAdjustment.cpp:234
&gt;&gt; +        // Do not adjust within a &lt;textarea&gt; to enable targeting a blank line between long lines of text.
&gt; 
&gt; do you have the same problem with &lt;p contenteditable=&quot;true&quot;&gt;This is an editable paragraph, please manually add an empty line here&lt;/p&gt;  ?

Explored using content editable and determined that things are not very clear cut.  If you had a link within a content editable paragraph, should adjustment be used?  The input field for search cancel is editable, which could result in biasing toward the cancel button if we avoid all touch adjustment on editable content.  It certainly deserves a closer look, but this particular use case is quite pressing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734693</commentid>
    <comment_count>19</comment_count>
      <attachid>165864</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-04 08:01:31 -0700</bug_when>
    <thetext>Comment on attachment 165864
Patch

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

&gt;&gt;&gt; Source/WebCore/page/TouchAdjustment.cpp:234
&gt;&gt;&gt; +        // Do not adjust within a &lt;textarea&gt; to enable targeting a blank line between long lines of text.
&gt;&gt; 
&gt;&gt; do you have the same problem with &lt;p contenteditable=&quot;true&quot;&gt;This is an editable paragraph, please manually add an empty line here&lt;/p&gt;  ?
&gt; 
&gt; Explored using content editable and determined that things are not very clear cut.  If you had a link within a content editable paragraph, should adjustment be used?  The input field for search cancel is editable, which could result in biasing toward the cancel button if we avoid all touch adjustment on editable content.  It certainly deserves a closer look, but this particular use case is quite pressing.

In answer to your original question, yes any multi-line editable content is potentially problematic for touch adjustment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734712</commentid>
    <comment_count>20</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-10-04 08:28:25 -0700</bug_when>
    <thetext>
&gt; In answer to your original question, yes any multi-line editable content is potentially problematic for touch adjustment.

a multi line textarea is essentially the same as a &lt;div contentEditable=true&gt;, since the former has an &quot;made of&quot; a shadow dom div in content editable. 

That said, can not we generalize at least to all content editable? (not &apos;X&apos; in search fields or whatever else)?

ps: I read the discussion above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745156</commentid>
    <comment_count>21</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-18 04:44:30 -0700</bug_when>
    <thetext>I think it could be possible to make an alternative version of RenderBlock::absoluteQuads and use that for RenderBlocks with inline children. The current one just returns its own border-box. It could instead or additionally return the line boxes, where the lines top and bottom are read from RootInlineBox::selectionTop and RootInlineBox::selectionBottom, but the width from RenderBlock::contentWidth. Though this could potentially interfere with floats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745228</commentid>
    <comment_count>22</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-18 06:53:39 -0700</bug_when>
    <thetext>Special handling for render blocks with inline children sounds a bit risky.  Would this not break touch adjustment for multiline links?

Expect to get back to this patch soon.  Have a few options to explore.  If we want a common solution for all editable content, one possible solution is to post-process the candidate list to amalgamate children that are within a common editable ancestor.  Need to do a bit of further investigation to ensure that this doesn&apos;t break input fields that contain decorators such as cancel or speech buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745246</commentid>
    <comment_count>23</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-18 07:39:32 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Special handling for render blocks with inline children sounds a bit risky.  Would this not break touch adjustment for multiline links?
&gt; 
It shouldn&apos;t. The lines compete on equal ground with other elements, and they are only generated for editable paragraphs (blocks with inline content).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745595</commentid>
    <comment_count>24</comment_count>
      <attachid>169478</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-18 14:49:27 -0700</bug_when>
    <thetext>Created attachment 169478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746151</commentid>
    <comment_count>25</comment_count>
      <attachid>169478</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-19 02:14:12 -0700</bug_when>
    <thetext>Comment on attachment 169478
Patch

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

&gt; Source/WebCore/page/TouchAdjustment.cpp:290
&gt; +        if (candidate-&gt;isContentEditable()) {
&gt; +            Node* replacement = candidate;
&gt; +            Node* parent = candidate-&gt;parentOrHostNode();
&gt; +            while (parent &amp;&amp; parent-&gt;isContentEditable()) {
&gt; +                replacement = parent;
&gt; +                if (editableAncestors.contains(replacement)) {
&gt; +                    replacement = 0;
&gt; +                    break;
&gt; +                }
&gt; +                editableAncestors.add(replacement);
&gt; +                parent = parent-&gt;parentOrHostNode();
&gt; +            }
&gt; +            candidate = replacement;
&gt; +        }

Would it be possible to only consolidate nodes sharing the same responder? Thereby leaving links inside the editable content unchanged?

&gt; Source/WebCore/page/TouchAdjustment.cpp:342
&gt; +    float targetArea = max(rect.size().area(), 1);

Can you explain what this change achieves?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746259</commentid>
    <comment_count>26</comment_count>
      <attachid>169478</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-19 06:25:59 -0700</bug_when>
    <thetext>Comment on attachment 169478
Patch

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

&gt;&gt; Source/WebCore/page/TouchAdjustment.cpp:342
&gt;&gt; +    float targetArea = max(rect.size().area(), 1);
&gt; 
&gt; Can you explain what this change achieves?

The change guards against division by zero.  Was seeing some nan scores when clicking near the beginning of a blank line without the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746261</commentid>
    <comment_count>27</comment_count>
      <attachid>169478</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-19 06:28:33 -0700</bug_when>
    <thetext>Comment on attachment 169478
Patch

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

&gt;&gt; Source/WebCore/page/TouchAdjustment.cpp:290
&gt;&gt; +        }
&gt; 
&gt; Would it be possible to only consolidate nodes sharing the same responder? Thereby leaving links inside the editable content unchanged?

Each text segment is its own responder simply by virtue of being editable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747665</commentid>
    <comment_count>28</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-22 10:30:14 -0700</bug_when>
    <thetext>Tonikitoo, can you please take a look at the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750850</commentid>
    <comment_count>29</comment_count>
      <attachid>169478</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-10-25 08:24:48 -0700</bug_when>
    <thetext>Comment on attachment 169478
Patch

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

Looks good

&gt;&gt;&gt; Source/WebCore/page/TouchAdjustment.cpp:342
&gt;&gt;&gt; +    float targetArea = max(rect.size().area(), 1);
&gt;&gt; 
&gt;&gt; Can you explain what this change achieves?
&gt; 
&gt; The change guards against division by zero.  Was seeing some nan scores when clicking near the beginning of a blank line without the change.

was ´area´ zero or clamped to zero?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750856</commentid>
    <comment_count>30</comment_count>
      <attachid>169478</attachid>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-10-25 08:32:36 -0700</bug_when>
    <thetext>Comment on attachment 169478
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/page/TouchAdjustment.cpp:342
&gt;&gt;&gt;&gt; +    float targetArea = max(rect.size().area(), 1);
&gt;&gt;&gt; 
&gt;&gt;&gt; Can you explain what this change achieves?
&gt;&gt; 
&gt;&gt; The change guards against division by zero.  Was seeing some nan scores when clicking near the beginning of a blank line without the change.
&gt; 
&gt; was ´area´ zero or clamped to zero?

Area was zero for blank line element.  Presumably element&apos;s width was zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750864</commentid>
    <comment_count>31</comment_count>
      <attachid>169478</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 08:41:03 -0700</bug_when>
    <thetext>Comment on attachment 169478
Patch

Clearing flags on attachment: 169478

Committed r132488: &lt;http://trac.webkit.org/changeset/132488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750865</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 08:41:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165640</attachid>
            <date>2012-09-25 10:50:11 -0700</date>
            <delta_ts>2012-09-26 13:28:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97576-20120925134931.patch</filename>
            <type>text/plain</type>
            <size>7434</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVlMThiZTMzOTE2NDcw
MTNhYzkwYTc0MTQ5NjZmY2VjMmNlMmQyNC4uMDZiOWI3MjhmOGI1MTI1OWRlMWY4MTk1ODExYzMz
ZjFiMjU2NTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTI1ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FuJ3QgZWFzaWx5IHBv
c2l0aW9uIHRoZSBjdXJzb3Igb24gYW4gZW1wdHkgbGluZSBpbiBhIHRleHRhcmVhIHdpdGggdG91
Y2ggaWYgdG91Y2ggYWRqdXN0bWVudCBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgdG91Y2ggYWRqdXN0bWVudCB0byB0ZXh0
IG5vZGVzIHdpdGhpbiBhIHRleHRhcmVhLiAgVG91Y2gKKyAgICAgICAgYWRqdXN0bWVudCBpcyBz
dXBwcmVzc2VkIHdpdGhpbiB0aGUgYm91bmRzIG9mIGEgdGV4dGFyZWEgaW4gb3JkZXIKKyAgICAg
ICAgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBwb3NpdGlvbiB0aGUgdGV4dCBjYXJldCBvbiBhIGJs
YW5rIGxpbmUgdXNpbmcKKyAgICAgICAgYSB0YXAgZ2VzdHVyZS4KKworICAgICAgICBUZXN0OiB0
b3VjaGFkanVzdG1lbnQvdGV4dC1hcmVhLmh0bWwKKworICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVN1
YnRhcmdldExpc3QpOgorCiAyMDEyLTA5LTI0ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25Acmlt
LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQWRkIGNvb2tpZSBkYXRhYmFzZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCA5NjYzZjY4ZTg5MTQ1Mjk1
NDFkNzhhYTcyN2RiOTI0ODY5MzIzYzhlLi41M2ExMDMwMTUxNWUyZTk1OGIyNDcyZDczYzVlNjBl
OTdmNzBjM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1M
VGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMjMwLDYgKzIzMSw5IEBAIHZvaWQgY29tcGls
ZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdl
dEdlb21ldHJ5TGlzCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW50ZXJzZWN0ZWROb2Rlcy5sZW5n
dGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgTm9kZSogY29uc3Qgbm9kZSA9IGludGVyc2VjdGVkTm9kZXMuaXRlbShpKTsKKyAgICAgICAg
Ly8gRG8gbm90IGFkanVzdCB3aXRoaW4gYSB0ZXh0IGFyZWEgdG8gZW5hYmxlIHRhcmdldGluZyBh
IGJsYW5rIGxpbmUgYmV0d2VlbiBsb25nIGxpbmVzIG9mIHRleHQuCisgICAgICAgIGlmIChub2Rl
LT5pc1RleHROb2RlKCkgJiYgV2ViQ29yZTo6aXNIVE1MVGV4dEFyZWFFbGVtZW50KG5vZGUtPnNo
YWRvd0FuY2VzdG9yTm9kZSgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBWZWN0
b3I8Tm9kZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAgTm9kZSogcmVzcG9uZGluZ05vZGUgPSAw
OwogICAgICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZp
c2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJh
Y2E5ZDZjZjc3MmY2YjcyZGYyYmVkMWJmOWI4N2E3OWNlZTQwOGEuLmMxNjFjMDhjYWUyMTBiMzZm
ZGI0M2EyOThjMTZkZTY3NjBhYWRiOGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0y
NSAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENhbid0IGVh
c2lseSBwb3NpdGlvbiB0aGUgY3Vyc29yIG9uIGFuIGVtcHR5IGxpbmUgaW4gYSB0ZXh0YXJlYSB3
aXRoIHRvdWNoIGlmIHRvdWNoIGFkanVzdG1lbnQgaXMgZW5hYmxlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byBlbnN1cmUgY29ycmVj
dCB0b3VjaCBhZGp1c3RtZW50IGJlaGF2aW9yIG9uIGEgdGV4dGFyZWEuCisgICAgICAgIFRvdWNo
ZXMgb3ZlcmxhcHBpbmcgdGhlIGJvdW5kYXJ5IG9mIGEgdGV4dGFyZWEgc2hvdWxkIHNuYXAgdG8g
dGhlCisgICAgICAgIHRleHRhcmVhLiAgV2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIHRleHQgYXJl
YSwgdGhlIHBvc2l0aW9uIHNob3VsZAorICAgICAgICBub3QgYmUgYWRqdXN0ZWQsIGFzIHRoaXMg
d291bGQgcHJldmVudCBiZWluZyBhYmxlIHRvIHRhcCBvbiBhIGJsYW5rCisgICAgICAgIGxpbmUu
CisKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdGV4dC1hcmVhLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RleHQtYXJlYS5odG1sOiBBZGRlZC4KKwog
MjAxMi0wOS0yNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBPcGVuIHJlc291cmNlIGRpYWxvZyBoYXMgdG9vIG1hbnkgZmFs
c2UgcG9zaXRpdmUgbWF0Y2hlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC90ZXh0LWFyZWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3RleHQtYXJlYS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM0MmEyMjZkYzQyNDcwMmIxZDhm
YTQwMzYyNWMzN2FiNmJhN2QyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC90ZXh0LWFyZWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKworVGVz
dHMgdG91Y2ggYWRqdXN0bWVudCBvbiBhIHRleHQtYXJlYS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK3Rlc3QgZGlyZWN0IHRvdWNoZXMKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0
ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMAorUEFTUyBNYXRoLmZsb29yKChh
ZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAwCitQQVNTIE1hdGguZmxv
b3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQpIGlzIDAKK1BBU1MgTWF0
aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMQorUEFT
UyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAx
CitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQp
IGlzIDEKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hl
aWdodCkgaXMgMgorUEFTUyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8g
cm93SGVpZ2h0KSBpcyAyCitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdp
bikgLyByb3dIZWlnaHQpIGlzIDIKK3Rlc3QgaW5kaXJlY3QgdG91Y2hlcworUEFTUyBhZGp1c3Rl
ZCBub2RlIHdhcyBURVhUQVJFQSN0ZXh0LWFyZWEuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIFRF
WFRBUkVBI3RleHQtYXJlYS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgVEVYVEFSRUEjdGV4dC1h
cmVhLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBURVhUQVJFQSN0ZXh0LWFyZWEuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RleHQtYXJlYS5odG1sIGIvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3RleHQtYXJlYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4YmNlZjkzY2QxMWJi
NmE2ZWZkMTM3OTJjZDQ2MjU2OTg4MWQxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvdGV4dC1hcmVhLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDog
SFRNTCB0ZXh0IGFyZWEgLSBidWcgOTc1NzY8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4K
KyAgICAgICAgI3RleHQtYXJlYSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVlOworICAg
ICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OworICAg
ICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9o
ZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD1zYW5kYm94PgorICAgIDx0ZXh0YXJlYSBpZD0idGV4
dC1hcmVhIiByb3dzPSI1IiBjb2xzPSI0MCI+QSBsZW5ndGh5IGxpbmUgb2YgdGV4dC4KKworQW5v
dGhlciBsaW5lIG9mIHRleHQgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZS48L3RleHRhcmVhPgor
PC9kaXY+CisKKzxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgorPGRpdiBpZD0nY29uc29sZSc+PC9k
aXY+CisKKzxzY3JpcHQ+CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dC1hcmVhJyk7CisgICAgdmFyIHJvd0hlaWdodCA9IDE0OworICAgIHZhciB0b3VjaE9m
ZnNldCA9IDQ7CisgICAgdmFyIHRvdWNoUmFkaXVzID0gMjA7CisgICAgdmFyIG9yaWdpbjsKKyAg
ICB2YXIgYWRqdXN0ZWROb2RlOworICAgIHZhciBhZGp1c3RlZFBvaW50OworCisgICAgZnVuY3Rp
b24gdGVzdFRvdWNoT25Sb3cocm93LCBvZmZzZXQpIHsKKyAgICAgICAgdmFyIGJvdW5kcyA9IGZp
bmRBYnNvbHV0ZUJvdW5kcyhlbGVtZW50KTsKKyAgICAgICAgdmFyIG1pZFBvaW50ID0gYm91bmRz
LmxlZnQgKyAwLjUgKiBib3VuZHMud2lkdGg7CisgICAgICAgIHZhciB4ID0gYm91bmRzLmxlZnQg
KyAyICogdG91Y2hSYWRpdXM7ICAKKyAgICAgICAgdmFyIHkgPSBib3VuZHMudG9wICsgKHJvdyAr
IDAuNSkgKiByb3dIZWlnaHQgKyBvZmZzZXQ7IC8vIFZlcnRpY2FsbHkgY2VudGVyZWQgb24gcm93
IHdoZW4gb2Zmc2V0IGlzIHplcm8uCisgICAgICAgIHZhciBwb2ludCA9IHRvdWNoUG9pbnQoeCwg
eSwgdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgYWRqdXN0ZWRQb2ludCA9IGFk
anVzdFRvdWNoUG9pbnQocG9pbnQpOworICAgICAgICBvcmlnaW4gPSBib3VuZHMudG9wOworICAg
ICAgICBzaG91bGRFdmFsdWF0ZVRvKCdNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmln
aW4pIC8gcm93SGVpZ2h0KScsIHJvdyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdERpcmVj
dFRvdWNoZXMoKSB7CisgICAgICAgIGRlYnVnKCd0ZXN0IGRpcmVjdCB0b3VjaGVzJyk7CisgICAg
ICAgIC8vIFRvdWNoZXMgY2VudGVyZWQgb24gdGhlIGJsYW5rIGxpbmUgc2hvdWxkIG5vdCBiZSBh
ZGp1c3RlZCBhIG5laWdoYm9yaW5nIHRleHQgbGluZS4KKyAgICAgICAgZm9yICh2YXIgcm93ID0g
MDsgcm93IDwgMzsgcm93KyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIG9mZnNldCA9IC10b3Vj
aE9mZnNldDsgb2Zmc2V0IDw9IHRvdWNoT2Zmc2V0OyBvZmZzZXQgKz0gdG91Y2hPZmZzZXQpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0VG91Y2hPblJvdyhyb3csIG9mZnNldCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0VG91Y2hPbkJvdW5kYXJ5
KHBvc2l0aW9uKSB7CisgICAgICAgIHZhciB0b3VjaHBvaW50ID0gb2Zmc2V0VG91Y2hQb2ludChm
aW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudCksIHBvc2l0aW9uLCB0b3VjaE9mZnNldCwgdG91Y2hS
YWRpdXMsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hwb2ludCwg
ZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEluZGlyZWN0VG91Y2hlcygpIHsK
KyAgICAgIGRlYnVnKCd0ZXN0IGluZGlyZWN0IHRvdWNoZXMnKTsKKyAgICAgIHRlc3RUb3VjaE9u
Qm91bmRhcnkoJ2JvdHRvbScpOworICAgICAgdGVzdFRvdWNoT25Cb3VuZGFyeSgnbGVmdCcpOwor
ICAgICAgdGVzdFRvdWNoT25Cb3VuZGFyeSgncmlnaHQnKTsKKyAgICAgIHRlc3RUb3VjaE9uQm91
bmRhcnkoJ3RvcCcpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVy
bmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uKCdUZXN0cyB0b3VjaCBhZGp1c3RtZW50IG9uIGEgdGV4dC1hcmVhLicpOwor
ICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKKyAgICAgICAgICAgIHRlc3RJbmRpcmVj
dFRvdWNoZXMoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBydW5UZXN0cygpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165766</attachid>
            <date>2012-09-26 03:49:35 -0700</date>
            <delta_ts>2012-09-26 12:04:49 -0700</delta_ts>
            <desc>Patch Proposal</desc>
            <filename>TouchAdjustToResponders.diff</filename>
            <type>text/plain</type>
            <size>6278</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYjExNDEyLi4xZmM1YjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDkt
MjYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAg
ICAgICAgW1RvdWNoQWRqdXN0bWVudF0gQWRqdXN0IHRvIHJlc3BvbmRpbmcgbm9kZXMgaW5zdGVh
ZCBvZiB0aGVpciBjaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgYSBmZXcgdG91Y2hhZGp1c3RtZW50IHRlc3RzIHRvIGhhbmRsZSB0
aGF0IHdlIG5vdyBhZGp1c3Qgb25seSB0byByZXNwb25kaW5nIG5vZGVzLgorCisgICAgICAgICog
dG91Y2hhZGp1c3RtZW50L25lc3RlZC1zaGFkb3ctbm9kZS5odG1sOgorICAgICAgICAqIHRvdWNo
YWRqdXN0bWVudC9uZXN0ZWQtdG91Y2guaHRtbDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQv
cm90YXRlZC1ub2RlLmh0bWw6CisKIDIwMTItMDktMjQgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIG9mIGRp
YWxvZy5zaG93TW9kYWwoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L25lc3RlZC1zaGFkb3ctbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25l
c3RlZC1zaGFkb3ctbm9kZS5odG1sCmluZGV4IDMwYjgyZDYuLmY0MzU1ODggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9uZXN0ZWQtc2hhZG93LW5vZGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXNoYWRvdy1ub2RlLmh0bWwKQEAg
LTQ2LDYgKzQ2LDcgQEAKICAgICAgICAgc2hhZG93RGl2LnN0eWxlLnBvc2l0aW9uID0gImFic29s
dXRlIjsKICAgICAgICAgc2hhZG93RGl2LnN0eWxlLnJpZ2h0ID0gIjEwcHgiOwogICAgICAgICBz
aGFkb3dEaXYuc3R5bGUudG9wID0gIjEwcHgiOworICAgICAgICBzaGFkb3dEaXYuYWRkRXZlbnRM
aXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7CiAgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoc2hhZG93RGl2KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rv
dWNoYWRqdXN0bWVudC9uZXN0ZWQtdG91Y2guaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9uZXN0ZWQtdG91Y2guaHRtbAppbmRleCAyNjRlODg3Li5jNjAwZGE5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvbmVzdGVkLXRvdWNoLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L25lc3RlZC10b3VjaC5odG1sCkBAIC02NCw3ICs2NCw4
IEBACiAgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQsIGUubXlib3gxKTsKIAogICAg
ICAgICB0b3VjaHBvaW50ID0gb2Zmc2V0VG91Y2hQb2ludChmaW5kQWJzb2x1dGVCb3VuZHMoZS5t
eWJveDIpLCAnY2VudGVyJywgMCwgMik7Ci0gICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNocG9p
bnQsIGUubXlib3gyKTsKKyAgICAgICAgdmFyIGFkanVzdGVkcG9pbnQgPSBhZGp1c3RUb3VjaFBv
aW50KHRvdWNocG9pbnQpOworICAgICAgICBzaG91bGRCZU5vZGUoZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludChhZGp1c3RlZHBvaW50LngsIGFkanVzdGVkcG9pbnQueSksIGUubXlib3gyKTsKICAg
ICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0UHJlZmVyZWRUb3VjaCgpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvcm90YXRlZC1ub2RlLmh0bWwKaW5kZXggMzcyNTgyZi4uMGMzYmZjZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3JvdGF0ZWQtbm9kZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yb3RhdGVkLW5vZGUuaHRtbApAQCAt
MjksMTQgKzI5LDE2IEBACiAKIDxib2R5PgogCi08ZGl2IGlkPSJjb250YWluZXIiPgotICAgIDxk
aXYgaWQ9InJvdGF0ZWQiPjwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyIiBvbmNsaWNrPW9uQ2xp
Y2s+CisgICAgPGRpdiBpZD0icm90YXRlZCIgb25jbGljaz1vbkNsaWNrPjwvZGl2PgogPC9kaXY+
CiAKIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgogPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CiAK
IDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gb25DbGljaygpIHsgfQorCiAgICAgLy8gU2V0IHVwIHNo
b3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cwogICAgIHZhciBlID0ge307CiAgICAgWydjb250YWlu
ZXInLCAncm90YXRlZCddLmZvckVhY2goZnVuY3Rpb24oYSkgewpAQCAtNzIsNyArNzQsNyBAQAog
CiAgICAgICAgIC8vIFRvdWNoIG92ZXJsYXBzIGJvdW5kaW5nLWJveCBvZiBlbGVtZW50LCBidXQg
bm90IHRoZSBhY3R1YWwgYm91bmRzLgogICAgICAgICB0ZXN0VG91Y2hQb2ludCh0b3VjaFBvaW50
KDcwLCAwLCAyMCksIGUuY29udGFpbmVyKTsKLSAgICAgICAgdGVzdFRvdWNoUG9pbnQodG91Y2hQ
b2ludCg3MCwgNjAsIDIwKSwgZS5jb250YWluZXIpOworICAgICAgICB0ZXN0VG91Y2hQb2ludCh0
b3VjaFBvaW50KDcwLCA2MSwgMjApLCBlLmNvbnRhaW5lcik7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gdGVzdEFkanVzdGVkUG9pbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyY2E4YTIzLi5mZWM5OGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjYgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgW1RvdWNoQWRqdXN0bWVu
dF0gQWRqdXN0IHRvIHJlc3BvbmRpbmcgbm9kZXMgaW5zdGVhZCBvZiB0aGVpciBjaGlsZHJlbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHN1YnRseSBjaGFuZ2luZyB0aGUgdG91Y2ggYWRqdXN0bWVudCwgc28gaXQgbm93IGFkanVzdHMg
dG8gbm9kZXMgdGhhdCByZXNwb25kIHRvCisgICAgICAgIHRoZSBnaXZlbiBldmVudCBpbnN0ZWFk
IG9mIGFueSBjaGlsZHJlbiBvZiBzdWNoIGEgbm9kZS4gVGhpcyBlbnN1cmVzIHdlIGF2b2lkIGRv
aW5nIHVubmVjZXNzYXJ5CisgICAgICAgIGFkanVzdG1lbnQgd2hlbiB0aGUgdG91Y2ggcG9pbnQg
YWxyZWFkeSBpcyBpbnNpZGUgdGhlIHVsdGltYXRlIHRhcmdldCBvZiB0aGUgZXZlbnQuCisKKyAg
ICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3Vj
aEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKwogMjAxMi0wOS0yNCAgTWF0dCBG
YWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2tlbGV0b24gaW1w
bGVtZW50YXRpb24gb2YgZGlhbG9nLnNob3dNb2RhbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNo
QWRqdXN0bWVudC5jcHAKaW5kZXggOTY2M2Y2OC4uMTEzMmJhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMjIyLDEwICsyMjIsMTAgQEAgdm9pZCBjb21waWxl
U3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0
R2VvbWV0cnlMaXMKICAgICAvLyBGaW5kIGNhbmRpZGF0ZXMgcmVzcG9uZGluZyB0byB0YXAgZ2Vz
dHVyZSBldmVudHMgaW4gTyhuKSB0aW1lLgogICAgIEhhc2hNYXA8Tm9kZSosIE5vZGUqPiByZXNw
b25kZXJNYXA7CiAgICAgSGFzaFNldDxOb2RlKj4gYW5jZXN0b3JzVG9SZXNwb25kZXJzU2V0Owot
ICAgIFZlY3RvcjxOb2RlKj4gY2FuZGlkYXRlczsKKyAgICBIYXNoU2V0PE5vZGUqPiBjYW5kaWRh
dGVzOwogCiAgICAgLy8gQSBub2RlIG1hdGNoaW5nIHRoZSBOb2RlRmlsdGVyIGlzIGNhbGxlZCBh
IHJlc3BvbmRlci4gQ2FuZGlkYXRlIG5vZGVzIG11c3QgZWl0aGVyIGJlIGEKLSAgICAvLyByZXNw
b25kZXIgb3IgaGF2ZSBhbiBhbmNlc3RvciB0aGF0IGlzIGEgcmVzcG9uZGVyLgorICAgIC8vIHJl
c3BvbmRpbmcgaW50ZXJzZWN0ZWQgbm9kZSBvciBhIHJlc3BvbmRpbmcgYW5jZXN0b3Igb2YgYW4g
aW50ZXJzZWN0ZWQgbm9kZS4KICAgICAvLyBUaGlzIGl0ZXJhdGlvbiB0ZXN0cyBhbGwgYW5jZXN0
b3JzIGF0IG1vc3Qgb25jZSBieSBjYWNoaW5nIGVhcmxpZXIgcmVzdWx0cy4KICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBpbnRlcnNlY3RlZE5vZGVzLmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMjU1LDIwICsyNTUsMTkgQEAgdm9pZCBjb21w
aWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFy
Z2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgIHJlc3BvbmRlck1hcC5hZGQodmlzaXRlZE5vZGVz
W2pdLCByZXNwb25kaW5nTm9kZSk7CiAKICAgICAgICAgaWYgKHJlc3BvbmRpbmdOb2RlKQotICAg
ICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICBjYW5kaWRhdGVz
LmFkZChyZXNwb25kaW5nTm9kZSk7CiAgICAgfQogCiAgICAgLy8gV2UgY29tcGlsZSB0aGUgbGlz
dCBvZiBjb21wb25lbnQgYWJzb2x1dGUgcXVhZHMgaW5zdGVhZCBvZiB1c2luZyB0aGUgYm91bmRp
bmcgcmVjdAogICAgIC8vIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBiZXR0ZXIgaGl0LXRlc3Rpbmcg
b24gaW5saW5lIGxpbmtzIG9uIGxpbmUtYnJlYWtzLgotICAgIGxlbmd0aCA9IGNhbmRpZGF0ZXMu
c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBOb2RlKiBjYW5kaWRhdGUgPSBjYW5kaWRhdGVzW2ldOwotICAgICAgICAvLyBTa2lwIG5v
ZGVzIHdobydzIHJlc3BvbmRlcnMgYXJlIGFuY2VzdG9ycyBvZiBvdGhlciByZXNwb25kZXJzLiBU
aGlzIGdpdmVzIHByZWZlcmVuY2UgdG8KLSAgICAgICAgLy8gdGhlIGlubmVyLW1vc3QgZXZlbnQt
aGFuZGxlcnMuIFNvIHRoYXQgYSBsaW5rIGlzIGFsd2F5cyBwcmVmZXJyZWQgZXZlbiB3aGVuIGNv
bnRhaW5lZAorICAgIEhhc2hTZXQ8Tm9kZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNhbmRpZGF0
ZXMuYmVnaW4oKTsKKyAgICBjb25zdCBIYXNoU2V0PE5vZGUqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gY2FuZGlkYXRlcy5lbmQoKTsKKyAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgTm9kZSogY2FuZGlkYXRlID0gKml0OworICAgICAgICAvLyBTa2lwIGNhbmRpZGF0ZXMgd2hv
IGFyZSBhbmNlc3RvcnMgb2Ygb3RoZXIgY2FuZGlkYXRlcy4gVGhpcyBnaXZlcyBwcmVmZXJlbmNl
IHRvIHRoZQorICAgICAgICAvLyBpbm5lci1tb3N0IGV2ZW50LWhhbmRsZXJzLiBTbyB0aGF0IGEg
bGluayBpcyBhbHdheXMgcHJlZmVycmVkIGV2ZW4gd2hlbiBjb250YWluZWQKICAgICAgICAgLy8g
aW4gYW4gZWxlbWVudCB0aGF0IG1vbml0b3JzIGFsbCBjbGljay1ldmVudHMuCi0gICAgICAgIE5v
ZGUqIHJlc3BvbmRpbmdOb2RlID0gcmVzcG9uZGVyTWFwLmdldChjYW5kaWRhdGUpOwotICAgICAg
ICBBU1NFUlQocmVzcG9uZGluZ05vZGUpOwotICAgICAgICBpZiAoYW5jZXN0b3JzVG9SZXNwb25k
ZXJzU2V0LmNvbnRhaW5zKHJlc3BvbmRpbmdOb2RlKSkKKyAgICAgICAgaWYgKGFuY2VzdG9yc1Rv
UmVzcG9uZGVyc1NldC5jb250YWlucyhjYW5kaWRhdGUpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGFwcGVuZFN1YnRhcmdldHNGb3JOb2RlKGNhbmRpZGF0ZSwgc3VidGFyZ2V0cyk7
CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165864</attachid>
            <date>2012-09-26 13:28:42 -0700</date>
            <delta_ts>2012-10-18 14:49:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97576-20120926162801.patch</filename>
            <type>text/plain</type>
            <size>7828</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVlMThiZTMzOTE2NDcw
MTNhYzkwYTc0MTQ5NjZmY2VjMmNlMmQyNC4uM2I5N2YwMjI0NjI3NjM5NGI1MmJhMzBjZDhjOWFj
YTdiYjkxNTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTI2ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FuJ3QgZWFzaWx5IHBv
c2l0aW9uIHRoZSBjdXJzb3Igb24gYW4gZW1wdHkgbGluZSBpbiBhIHRleHRhcmVhIHdpdGggdG91
Y2ggaWYgdG91Y2ggYWRqdXN0bWVudCBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgdG91Y2ggYWRqdXN0bWVudCB0byB0ZXh0
IG5vZGVzIHdpdGhpbiBhIHRleHRhcmVhLiAgVG91Y2gKKyAgICAgICAgYWRqdXN0bWVudCBpcyBz
dXBwcmVzc2VkIHdpdGhpbiB0aGUgYm91bmRzIG9mIGEgdGV4dGFyZWEgaW4gb3JkZXIKKyAgICAg
ICAgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBwb3NpdGlvbiB0aGUgdGV4dCBjYXJldCBvbiBhIGJs
YW5rIGxpbmUgdXNpbmcKKyAgICAgICAgYSB0YXAgZ2VzdHVyZS4KKworICAgICAgICBUZXN0OiB0
b3VjaGFkanVzdG1lbnQvdGV4dC1hcmVhLmh0bWwKKworICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGlsZVN1
YnRhcmdldExpc3QpOgorCiAyMDEyLTA5LTI0ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25Acmlt
LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQWRkIGNvb2tpZSBkYXRhYmFzZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCA5NjYzZjY4ZTg5MTQ1Mjk1
NDFkNzhhYTcyN2RiOTI0ODY5MzIzYzhlLi5kMmM4Zjg0ODgxMDFlNzc4NWZmZGIzODNmNmNmNDA5
OTA1NWRhNGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1M
VGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMjMwLDYgKzIzMSwxMyBAQCB2b2lkIGNvbXBp
bGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJn
ZXRHZW9tZXRyeUxpcwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGludGVyc2VjdGVkTm9kZXMubGVu
Z3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIE5vZGUqIGNvbnN0IG5vZGUgPSBpbnRlcnNlY3RlZE5vZGVzLml0ZW0oaSk7CisgICAgICAg
IC8vIERvIG5vdCBhZGp1c3Qgd2l0aGluIGEgPHRleHRhcmVhPiB0byBlbmFibGUgdGFyZ2V0aW5n
IGEgYmxhbmsgbGluZSBiZXR3ZWVuIGxvbmcgbGluZXMgb2YgdGV4dC4KKyAgICAgICAgLy8gRklY
TUU6IFRoaXMgc3BlY2lhbCBjYXNlIGlzIHBhcnQgb2YgYSBiaWdnZXIgcHJvYmxlbSBvZiBoYW5k
bGluZyB0b3VjaCBhZGp1c3RtZW50IG9uIGVkaXRhYmxlCisgICAgICAgIC8vIGNvbnRlbnQuIElu
IHNvbWUgY2FzZXMsIGl0IHNlZW1zIGFwcHJvcHJpYXRlIHRvIGFkanVzdCB0byBlZGl0YWJsZSBl
bGVtZW50cyAoPGlucHV0PiBhbmQKKyAgICAgICAgLy8gbGlua3Mgd2l0aGluIGVkaXRhYmxlIDxk
aXY+cyksIHdoaWxlIGluIG90aGVyIGNhc2VzIGl0IGlzIG5vdCBhcHByb3ByaWF0ZSAoZS5nIGlu
IGEgdGV4dGFyZWEpLgorICAgICAgICAvLyBDb25zaWRlciByZWZhY3RvcmluZyBvbmNlIGEgcGF0
dGVybiBlbWVyZ2VzIGluIHRoZSBzcGVjaWFsIGNhc2VzLgorICAgICAgICBpZiAobm9kZS0+aXNU
ZXh0Tm9kZSgpICYmIFdlYkNvcmU6OmlzSFRNTFRleHRBcmVhRWxlbWVudChub2RlLT5zaGFkb3dB
bmNlc3Rvck5vZGUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgVmVjdG9yPE5v
ZGUqPiB2aXNpdGVkTm9kZXM7CiAgICAgICAgIE5vZGUqIHJlc3BvbmRpbmdOb2RlID0gMDsKICAg
ICAgICAgZm9yIChOb2RlKiB2aXNpdGVkTm9kZSA9IG5vZGU7IHZpc2l0ZWROb2RlOyB2aXNpdGVk
Tm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYWNhOWQ2
Y2Y3NzJmNmI3MmRmMmJlZDFiZjliODdhNzljZWU0MDhhLi42YTlmMmU3ZjNhYjlhZTUwMzIxYmQ3
MjMzOGUzOTVhMDZhYmNhZTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDktMjYgIEtl
dmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBDYW4ndCBlYXNpbHkg
cG9zaXRpb24gdGhlIGN1cnNvciBvbiBhbiBlbXB0eSBsaW5lIGluIGEgdGV4dGFyZWEgd2l0aCB0
b3VjaCBpZiB0b3VjaCBhZGp1c3RtZW50IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgdG8gZW5zdXJlIGNvcnJlY3QgdG91
Y2ggYWRqdXN0bWVudCBiZWhhdmlvciBvbiBhIHRleHRhcmVhLgorICAgICAgICBUb3VjaGVzIG92
ZXJsYXBwaW5nIHRoZSBib3VuZGFyeSBvZiBhIHRleHRhcmVhIHNob3VsZCBzbmFwIHRvIHRoZQor
ICAgICAgICB0ZXh0YXJlYS4gIFdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSB0ZXh0IGFyZWEsIHRo
ZSBwb3NpdGlvbiBzaG91bGQKKyAgICAgICAgbm90IGJlIGFkanVzdGVkLCBhcyB0aGlzIHdvdWxk
IHByZXZlbnQgYmVpbmcgYWJsZSB0byB0YXAgb24gYSBibGFuaworICAgICAgICBsaW5lLgorCisg
ICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RleHQtYXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90ZXh0LWFyZWEuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDktMjQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogT3BlbiByZXNvdXJjZSBkaWFsb2cgaGFzIHRvbyBtYW55IGZhbHNlIHBv
c2l0aXZlIG1hdGNoZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQv
dGV4dC1hcmVhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90ZXh0
LWFyZWEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNDJhMjI2ZGM0MjQ3MDJiMWQ4ZmE0MDM2
MjVjMzdhYjZiYTdkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvdGV4dC1hcmVhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACisKK1Rlc3RzIHRv
dWNoIGFkanVzdG1lbnQgb24gYSB0ZXh0LWFyZWEuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCit0ZXN0IGRpcmVjdCB0b3VjaGVzCitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9p
bnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQpIGlzIDAKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0
ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMAorUEFTUyBNYXRoLmZsb29yKChh
ZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAwCitQQVNTIE1hdGguZmxv
b3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQpIGlzIDEKK1BBU1MgTWF0
aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMQorUEFT
UyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAx
CitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQp
IGlzIDIKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hl
aWdodCkgaXMgMgorUEFTUyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8g
cm93SGVpZ2h0KSBpcyAyCit0ZXN0IGluZGlyZWN0IHRvdWNoZXMKK1BBU1MgYWRqdXN0ZWQgbm9k
ZSB3YXMgVEVYVEFSRUEjdGV4dC1hcmVhLgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBURVhUQVJF
QSN0ZXh0LWFyZWEuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIFRFWFRBUkVBI3RleHQtYXJlYS4K
K1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgVEVYVEFSRUEjdGV4dC1hcmVhLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90ZXh0LWFyZWEuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC90ZXh0LWFyZWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGJjZWY5M2NkMTFiYjZhNmVm
ZDEzNzkyY2Q0NjI1Njk4ODFkMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L3RleHQtYXJlYS5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IEhUTUwg
dGV4dCBhcmVhIC0gYnVnIDk3NTc2PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAg
ICAgICN0ZXh0LWFyZWEgeworICAgICAgICAgICAgYmFja2dyb3VuZDogI2VlZTsKKyAgICAgICAg
ICAgIGJvcmRlcjogbm9uZTsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAg
ICAgIGxpbmUtaGVpZ2h0OiAxNHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4K
KworPGJvZHk+CisKKzxkaXYgaWQ9c2FuZGJveD4KKyAgICA8dGV4dGFyZWEgaWQ9InRleHQtYXJl
YSIgcm93cz0iNSIgY29scz0iNDAiPkEgbGVuZ3RoeSBsaW5lIG9mIHRleHQuCisKK0Fub3RoZXIg
bGluZSBvZiB0ZXh0IHNlcGFyYXRlZCBieSBhIGJsYW5rIGxpbmUuPC90ZXh0YXJlYT4KKzwvZGl2
PgorCis8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2Pgor
Cis8c2NyaXB0PgorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQtYXJlYScpOworICAgIHZhciByb3dIZWlnaHQgPSAxNDsKKyAgICB2YXIgdG91Y2hPZmZzZXQg
PSA0OworICAgIHZhciB0b3VjaFJhZGl1cyA9IDIwOworICAgIHZhciBvcmlnaW47CisgICAgdmFy
IGFkanVzdGVkTm9kZTsKKyAgICB2YXIgYWRqdXN0ZWRQb2ludDsKKworICAgIGZ1bmN0aW9uIHRl
c3RUb3VjaE9uUm93KHJvdywgb2Zmc2V0KSB7CisgICAgICAgIHZhciBib3VuZHMgPSBmaW5kQWJz
b2x1dGVCb3VuZHMoZWxlbWVudCk7CisgICAgICAgIHZhciBtaWRQb2ludCA9IGJvdW5kcy5sZWZ0
ICsgMC41ICogYm91bmRzLndpZHRoOworICAgICAgICB2YXIgeCA9IGJvdW5kcy5sZWZ0ICsgMiAq
IHRvdWNoUmFkaXVzOyAgCisgICAgICAgIHZhciB5ID0gYm91bmRzLnRvcCArIChyb3cgKyAwLjUp
ICogcm93SGVpZ2h0ICsgb2Zmc2V0OyAvLyBWZXJ0aWNhbGx5IGNlbnRlcmVkIG9uIHJvdyB3aGVu
IG9mZnNldCBpcyB6ZXJvLgorICAgICAgICB2YXIgcG9pbnQgPSB0b3VjaFBvaW50KHgsIHksIHRv
dWNoUmFkaXVzLCB0b3VjaFJhZGl1cyk7CisgICAgICAgIGFkanVzdGVkUG9pbnQgPSBhZGp1c3RU
b3VjaFBvaW50KHBvaW50KTsKKyAgICAgICAgb3JpZ2luID0gYm91bmRzLnRvcDsKKyAgICAgICAg
c2hvdWxkRXZhbHVhdGVUbygnTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAv
IHJvd0hlaWdodCknLCByb3cpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3Vj
aGVzKCkgeworICAgICAgICBkZWJ1ZygndGVzdCBkaXJlY3QgdG91Y2hlcycpOworICAgICAgICAv
LyBUb3VjaGVzIGNlbnRlcmVkIG9uIHRoZSBibGFuayBsaW5lIHNob3VsZCBub3QgYmUgYWRqdXN0
ZWQgYSBuZWlnaGJvcmluZyB0ZXh0IGxpbmUuCisgICAgICAgIGZvciAodmFyIHJvdyA9IDA7IHJv
dyA8IDM7IHJvdysrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAtdG91Y2hPZmZz
ZXQ7IG9mZnNldCA8PSB0b3VjaE9mZnNldDsgb2Zmc2V0ICs9IHRvdWNoT2Zmc2V0KSB7CisgICAg
ICAgICAgICAgICAgdGVzdFRvdWNoT25Sb3cocm93LCBvZmZzZXQpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFRvdWNoT25Cb3VuZGFyeShwb3Np
dGlvbikgeworICAgICAgICB2YXIgdG91Y2hwb2ludCA9IG9mZnNldFRvdWNoUG9pbnQoZmluZEFi
c29sdXRlQm91bmRzKGVsZW1lbnQpLCBwb3NpdGlvbiwgdG91Y2hPZmZzZXQsIHRvdWNoUmFkaXVz
LCB0b3VjaFJhZGl1cyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQsIGVsZW1l
bnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRvdWNoZXMoKSB7CisgICAg
ICBkZWJ1ZygndGVzdCBpbmRpcmVjdCB0b3VjaGVzJyk7CisgICAgICB0ZXN0VG91Y2hPbkJvdW5k
YXJ5KCdib3R0b20nKTsKKyAgICAgIHRlc3RUb3VjaE9uQm91bmRhcnkoJ2xlZnQnKTsKKyAgICAg
IHRlc3RUb3VjaE9uQm91bmRhcnkoJ3JpZ2h0Jyk7CisgICAgICB0ZXN0VG91Y2hPbkJvdW5kYXJ5
KCd0b3AnKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgeworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMu
dG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CisgICAgICAgICAgICBkZXNj
cmlwdGlvbignVGVzdHMgdG91Y2ggYWRqdXN0bWVudCBvbiBhIHRleHQtYXJlYS4nKTsKKyAgICAg
ICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CisgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3Vj
aGVzKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcnVuVGVzdHMoKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169478</attachid>
            <date>2012-10-18 14:49:27 -0700</date>
            <delta_ts>2012-10-25 08:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97576-20121018174812.patch</filename>
            <type>text/plain</type>
            <size>10091</size>
            <attacher name="Kevin Ellis">kevers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFiZjNmZmM3NTgzY2Uz
NTNhMjhjMDQ5OGY1YmFjNjY5MGJmNzI1NC4uNDVlM2M1MTQzODkzN2FkZTA2Nzc4MGIwMTM1Nzdl
N2VkOTA5ZDQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEwLTE4ICBLZXZp
biBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FuJ3QgZWFzaWx5IHBv
c2l0aW9uIHRoZSBjdXJzb3Igb24gYW4gZW1wdHkgbGluZSBpbiBhIHRleHRhcmVhIHdpdGggdG91
Y2ggaWYgdG91Y2ggYWRqdXN0bWVudCBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnNvbGlkYXRlIHRvdWNoIGFkanVzdG1lbnQgY2Fu
ZGlkYXRlcyB0aGF0IGFyZQorICAgICAgICBlZGl0YWJsZS4gIEFkanVzdG1lbnQgYmVjb21lcyBj
b2Fyc2UgYmVpbmcgYmFzZWQKKyAgICAgICAgb24gdGhlIGJvdW5kcyBvZiB0aGUgb3V0ZXJtb3N0
IGVkaXRhYmxlIGVsZW1lbnQuCisgICAgICAgIFRoaXMgZml4IGFsbG93cyB0YXAgcG9zaXRpb25p
bmcgb2YgdGhlIHRleHQgY2FyZXQKKyAgICAgICAgb24gYSBibGFuayBsaW5lIGltbWVkaWF0ZWx5
IGFib3ZlIG9yIGJlbG93IGFub3RoZXIKKyAgICAgICAgZWxlbWVudC4KKworICAgICAgICBUZXN0
OiB0b3VjaGFkanVzdG1lbnQvZWRpdGFibGUtY29udGVudC5odG1sCisKKyAgICAgICAgKiBwYWdl
L1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6
OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVu
dDo6aHlicmlkRGlzdGFuY2VGdW5jdGlvbik6CisKIDIwMTItMTAtMTggIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBMb2NhbGl6ZXI6Om1vbnRoRm9ybWF0
IGFuZCBpbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91
Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNw
cAppbmRleCA5NjYzZjY4ZTg5MTQ1Mjk1NDFkNzhhYTcyN2RiOTI0ODY5MzIzYzhlLi5hNzhjMDFj
N2UwMDNhMjNjYjM2MGIxYzU3MjQ5Mzc5ZmRkNDY0YTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9U
b3VjaEFkanVzdG1lbnQuY3BwCkBAIC0yMjMsNiArMjIzLDcgQEAgdm9pZCBjb21waWxlU3VidGFy
Z2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0
cnlMaXMKICAgICBIYXNoTWFwPE5vZGUqLCBOb2RlKj4gcmVzcG9uZGVyTWFwOwogICAgIEhhc2hT
ZXQ8Tm9kZSo+IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldDsKICAgICBWZWN0b3I8Tm9kZSo+IGNh
bmRpZGF0ZXM7CisgICAgSGFzaFNldDxOb2RlKj4gZWRpdGFibGVBbmNlc3RvcnM7CiAKICAgICAv
LyBBIG5vZGUgbWF0Y2hpbmcgdGhlIE5vZGVGaWx0ZXIgaXMgY2FsbGVkIGEgcmVzcG9uZGVyLiBD
YW5kaWRhdGUgbm9kZXMgbXVzdCBlaXRoZXIgYmUgYQogICAgIC8vIHJlc3BvbmRlciBvciBoYXZl
IGFuIGFuY2VzdG9yIHRoYXQgaXMgYSByZXNwb25kZXIuCkBAIC0yNzAsNyArMjcxLDI1IEBAIHZv
aWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMs
IFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgIEFTU0VSVChyZXNwb25kaW5nTm9kZSk7CiAg
ICAgICAgIGlmIChhbmNlc3RvcnNUb1Jlc3BvbmRlcnNTZXQuY29udGFpbnMocmVzcG9uZGluZ05v
ZGUpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFwcGVuZFN1YnRhcmdldHNGb3JO
b2RlKGNhbmRpZGF0ZSwgc3VidGFyZ2V0cyk7CisgICAgICAgIC8vIENvbnNvbGlkYXRlIGJvdW5k
cyBmb3IgZWRpdGFibGUgY29udGVudC4KKyAgICAgICAgaWYgKGVkaXRhYmxlQW5jZXN0b3JzLmNv
bnRhaW5zKGNhbmRpZGF0ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNh
bmRpZGF0ZS0+aXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICAgICAgTm9kZSogcmVwbGFj
ZW1lbnQgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBjYW5kaWRhdGUt
PnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50
LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBw
YXJlbnQ7CisgICAgICAgICAgICAgICAgaWYgKGVkaXRhYmxlQW5jZXN0b3JzLmNvbnRhaW5zKHJl
cGxhY2VtZW50KSkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlZGl0YWJsZUFuY2VzdG9ycy5hZGQocmVwbGFjZW1lbnQpOworICAgICAgICAgICAgICAgIHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FuZGlkYXRlID0gcmVwbGFjZW1lbnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNh
bmRpZGF0ZSkKKyAgICAgICAgICAgIGFwcGVuZFN1YnRhcmdldHNGb3JOb2RlKGNhbmRpZGF0ZSwg
c3VidGFyZ2V0cyk7CiAgICAgfQogfQogCkBAIC0zMjAsNyArMzM5LDcgQEAgZmxvYXQgaHlicmlk
RGlzdGFuY2VGdW5jdGlvbihjb25zdCBJbnRQb2ludCYgdG91Y2hIb3RzcG90LCBjb25zdCBJbnRS
ZWN0JiB0b3VjaFIKICAgICBmbG9hdCByYWRpdXNTcXVhcmVkID0gMC4yNWYgKiAodG91Y2hSZWN0
LnNpemUoKS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSk7CiAgICAgZmxvYXQgZGlzdGFuY2VUb0Fk
anVzdFNjb3JlID0gcmVjdC5kaXN0YW5jZVNxdWFyZWRUb1BvaW50KHRvdWNoSG90c3BvdCkgLyBy
YWRpdXNTcXVhcmVkOwogCi0gICAgZmxvYXQgdGFyZ2V0QXJlYSA9IHJlY3Quc2l6ZSgpLmFyZWEo
KTsKKyAgICBmbG9hdCB0YXJnZXRBcmVhID0gbWF4KHJlY3Quc2l6ZSgpLmFyZWEoKSwgMSk7CiAg
ICAgcmVjdC5pbnRlcnNlY3QodG91Y2hSZWN0KTsKICAgICBmbG9hdCBpbnRlcnNlY3RBcmVhID0g
cmVjdC5zaXplKCkuYXJlYSgpOwogICAgIGZsb2F0IGludGVyc2VjdGlvblNjb3JlID0gMSAtIGlu
dGVyc2VjdEFyZWEgLyB0YXJnZXRBcmVhOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZmZDljYzZmMWMyNzBlNjZkOGY4YzRj
ZTE1N2Y0NWI5OTYyODNkNzYuLjY2MWNhNGVlM2QxMzE5NWI2NDk4ZGE3ZDQwODU1YjAyNDU1Mzk3
ZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0xOCAgS2V2aW4gRWxsaXMgIDxrZXZl
cnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENhbid0IGVhc2lseSBwb3NpdGlvbiB0aGUgY3Vy
c29yIG9uIGFuIGVtcHR5IGxpbmUgaW4gYSB0ZXh0YXJlYSB3aXRoIHRvdWNoIGlmIHRvdWNoIGFk
anVzdG1lbnQgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc1NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgdGVzdCB0byB2ZXJpZnkgdGhhdCB0b3VjaCBhZGp1c3RtZW50IGlzIGNv
YXJzZSBmb3IKKyAgICAgICAgZWRpdGFibGUgY29udGVudCwgYmVpbmcgYmFzZWQgb24gdGhlIGJv
dW5kcyBvZiB0aGUKKyAgICAgICAgZWRpdGFibGUgY29udGVudCBhbmQgbm90IGl0cyBjaGlsZHJl
bi4KKworICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2VkaXRhYmxlLWNvbnRlbnQu
aHRtbDogQWRkZWQuCisKIDIwMTItMTAtMTggIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5pbmcgc29tZSBsb25nc3RhbmRpbmcgQ2hy
b21pdW0gZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L2VkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L2VkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYzZlZDg2
M2I3YWQzYmVlZGRkZmI3MTU5YmMyZGI3YjhiOGQ4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0NSBAQAorCitIZWxsbworCitXb3JsZAorVGVzdHMgdG91Y2ggYWRqdXN0bWVudCBv
biBhIHRleHQtYXJlYS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3Rlc3QgdGV4
dGFyZWEKK3Rlc3QgZGlyZWN0IHRvdWNoZXMKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2lu
dC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMAorUEFTUyBNYXRoLmZsb29yKChhZGp1c3Rl
ZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAwCitQQVNTIE1hdGguZmxvb3IoKGFk
anVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQpIGlzIDAKK1BBU1MgTWF0aC5mbG9v
cigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMQorUEFTUyBNYXRo
LmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAxCitQQVNT
IE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQpIGlzIDEK
K1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkg
aXMgMgorUEFTUyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVp
Z2h0KSBpcyAyCitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyBy
b3dIZWlnaHQpIGlzIDIKK3Rlc3QgaW5kaXJlY3QgdG91Y2hlcworUEFTUyBhZGp1c3RlZCBub2Rl
IHdhcyBURVhUQVJFQSN0ZXh0LWFyZWEuCitQQVNTIGFkanVzdGVkIG5vZGUgd2FzIFRFWFRBUkVB
I3RleHQtYXJlYS4KK1BBU1MgYWRqdXN0ZWQgbm9kZSB3YXMgVEVYVEFSRUEjdGV4dC1hcmVhLgor
UEFTUyBhZGp1c3RlZCBub2RlIHdhcyBURVhUQVJFQSN0ZXh0LWFyZWEuCit0ZXN0IHJpY2hseSBl
ZGl0YWJsZSBkaXYKK3Rlc3QgZGlyZWN0IHRvdWNoZXMKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0
ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMAorUEFTUyBNYXRoLmZsb29yKChh
ZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAwCitQQVNTIE1hdGguZmxv
b3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQpIGlzIDAKK1BBU1MgTWF0
aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hlaWdodCkgaXMgMQorUEFT
UyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8gcm93SGVpZ2h0KSBpcyAx
CitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdpbikgLyByb3dIZWlnaHQp
IGlzIDEKK1BBU1MgTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3JpZ2luKSAvIHJvd0hl
aWdodCkgaXMgMgorUEFTUyBNYXRoLmZsb29yKChhZGp1c3RlZFBvaW50LnkgLSBvcmlnaW4pIC8g
cm93SGVpZ2h0KSBpcyAyCitQQVNTIE1hdGguZmxvb3IoKGFkanVzdGVkUG9pbnQueSAtIG9yaWdp
bikgLyByb3dIZWlnaHQpIGlzIDIKK3Rlc3QgaW5kaXJlY3QgdG91Y2hlcworUEFTUyBhZGp1c3Rl
ZCBub2RlIHdhcyBESVYjcmljaC10ZXh0LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmlj
aC10ZXh0LgorUEFTUyBhZGp1c3RlZCBub2RlIHdhcyBESVYjcmljaC10ZXh0LgorUEFTUyBhZGp1
c3RlZCBub2RlIHdhcyBESVYjcmljaC10ZXh0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC9lZGl0YWJsZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1l
bnQvZWRpdGFibGUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkMmMzZWQyMDU4YzRkN2EwMTk4
MzEyYjE5YTRjYTkyYjZhZTUyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvZWRpdGFibGUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsMTA3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQg
OiBjb250ZW50IGVkaXRhYmxlIGRpdiAtIGJ1ZyA5NzU3NjwvdGl0bGU+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CisgICAg
PHN0eWxlPgorICAgICAgICBib2R5IHsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAg
ICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4OworICAgICAgICB9CisKKyAgICAgICAgI3RleHQt
YXJlYSwKKyAgICAgICAgI3JpY2gtdGV4dCB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVl
OworICAgICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICAgICAgbWFyZ2luOiAwIDVweDsK
KyAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgIH0KKworICAgICAgICAjcmljaC10ZXh0
IHsKKyAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7CisgICAgICAgICAgICBvdXRsaW5lOiBu
b25lOworICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KzwvaGVhZD4KKworPGJvZHk+CisKKzxkaXYgaWQ9c2FuZGJveD4KKyAgICA8dGV4dGFyZWEgaWQ9
InRleHQtYXJlYSIgcm93cz0iNSIgY29scz0iNDAiPkEgbGVuZ3RoeSBsaW5lIG9mIHRleHQuCisK
K0Fub3RoZXIgbGluZSBvZiB0ZXh0IHNlcGFyYXRlZCBieSBhIGJsYW5rIGxpbmUuPC90ZXh0YXJl
YT4KKworICAgIDxkaXYgaWQ9InJpY2gtdGV4dCIgY29udGVudEVkaXRhYmxlPgorICAgICAgICA8
Yj5IZWxsbzwvYj48YnI+PGJyPjxpPldvcmxkPC9pPgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxw
IGlkPSdkZXNjcmlwdGlvbic+PC9wPgorPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CisKKzxzY3Jp
cHQ+CisgICAgdmFyIGVsZW1lbnQ7CisgICAgdmFyIHJvd0hlaWdodDsKKyAgICB2YXIgdG91Y2hP
ZmZzZXQgPSA0OworICAgIHZhciB0b3VjaFJhZGl1cyA9IDIwOworICAgIHZhciBvcmlnaW47Cisg
ICAgdmFyIGFkanVzdGVkTm9kZTsKKyAgICB2YXIgYWRqdXN0ZWRQb2ludDsKKworICAgIGZ1bmN0
aW9uIHRlc3RUb3VjaE9uUm93KHJvdywgb2Zmc2V0KSB7CisgICAgICAgIHZhciBib3VuZHMgPSBm
aW5kQWJzb2x1dGVCb3VuZHMoZWxlbWVudCk7CisgICAgICAgIHZhciBtaWRQb2ludCA9IGJvdW5k
cy5sZWZ0ICsgMC41ICogYm91bmRzLndpZHRoOworICAgICAgICB2YXIgeCA9IGJvdW5kcy5sZWZ0
ICsgMiAqIHRvdWNoUmFkaXVzOyAgCisgICAgICAgIHZhciB5ID0gYm91bmRzLnRvcCArIChyb3cg
KyAwLjUpICogcm93SGVpZ2h0ICsgb2Zmc2V0OyAvLyBWZXJ0aWNhbGx5IGNlbnRlcmVkIG9uIHJv
dyB3aGVuIG9mZnNldCBpcyB6ZXJvLgorICAgICAgICB2YXIgcG9pbnQgPSB0b3VjaFBvaW50KHgs
IHksIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyk7CisgICAgICAgIGFkanVzdGVkUG9pbnQgPSBh
ZGp1c3RUb3VjaFBvaW50KHBvaW50KTsKKyAgICAgICAgb3JpZ2luID0gYm91bmRzLnRvcDsKKyAg
ICAgICAgc2hvdWxkRXZhbHVhdGVUbygnTWF0aC5mbG9vcigoYWRqdXN0ZWRQb2ludC55IC0gb3Jp
Z2luKSAvIHJvd0hlaWdodCknLCByb3cpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3REaXJl
Y3RUb3VjaGVzKCkgeworICAgICAgICBkZWJ1ZygndGVzdCBkaXJlY3QgdG91Y2hlcycpOworICAg
ICAgICAvLyBUb3VjaGVzIGNlbnRlcmVkIG9uIHRoZSBibGFuayBsaW5lIHNob3VsZCBub3QgYmUg
YWRqdXN0ZWQgYSBuZWlnaGJvcmluZyB0ZXh0IGxpbmUuCisgICAgICAgIGZvciAodmFyIHJvdyA9
IDA7IHJvdyA8IDM7IHJvdysrKSB7CisgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAtdG91
Y2hPZmZzZXQ7IG9mZnNldCA8PSB0b3VjaE9mZnNldDsgb2Zmc2V0ICs9IHRvdWNoT2Zmc2V0KSB7
CisgICAgICAgICAgICAgICAgdGVzdFRvdWNoT25Sb3cocm93LCBvZmZzZXQpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFRvdWNoT25Cb3VuZGFy
eShwb3NpdGlvbikgeworICAgICAgICB2YXIgdG91Y2hwb2ludCA9IG9mZnNldFRvdWNoUG9pbnQo
ZmluZEFic29sdXRlQm91bmRzKGVsZW1lbnQpLCBwb3NpdGlvbiwgdG91Y2hPZmZzZXQsIHRvdWNo
UmFkaXVzLCB0b3VjaFJhZGl1cyk7CisgICAgICAgIHRlc3RUb3VjaFBvaW50KHRvdWNocG9pbnQs
IGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRvdWNoZXMoKSB7
CisgICAgICBkZWJ1ZygndGVzdCBpbmRpcmVjdCB0b3VjaGVzJyk7CisgICAgICB0ZXN0VG91Y2hP
bkJvdW5kYXJ5KCdib3R0b20nKTsKKyAgICAgIHRlc3RUb3VjaE9uQm91bmRhcnkoJ2xlZnQnKTsK
KyAgICAgIHRlc3RUb3VjaE9uQm91bmRhcnkoJ3JpZ2h0Jyk7CisgICAgICB0ZXN0VG91Y2hPbkJv
dW5kYXJ5KCd0b3AnKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgewor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRl
cm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CisgICAgICAgICAg
ICBkZXNjcmlwdGlvbignVGVzdHMgdG91Y2ggYWRqdXN0bWVudCBvbiBhIHRleHQtYXJlYS4nKTsK
KyAgICAgICAgICAgIGRlYnVnKCd0ZXN0IHRleHRhcmVhJyk7CisgICAgICAgICAgICBlbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQtYXJlYScpOworICAgICAgICAgICAgcm93
SGVpZ2h0ID0gMTU7IC8vIEhlaWdodCBvZiBlYWNoIHJvdyBpcyBsaW5lLWhlaWdodCArIDEKKyAg
ICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CisgICAgICAgICAgICB0ZXN0SW5kaXJlY3RU
b3VjaGVzKCk7CisgICAgICAgICAgICBkZWJ1ZygndGVzdCByaWNobHkgZWRpdGFibGUgZGl2Jyk7
CisgICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JpY2gtdGV4
dCcpOworICAgICAgICAgICAgcm93SGVpZ2h0ID0gMTQ7CisgICAgICAgICAgICB0ZXN0RGlyZWN0
VG91Y2hlcygpOworICAgICAgICAgICAgdGVzdEluZGlyZWN0VG91Y2hlcygpOworICAgICAgICB9
CisgICAgfQorICAgIHJ1blRlc3RzKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>