<?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>71348</bug_id>
          
          <creation_ts>2011-11-01 23:05:12 -0700</creation_ts>
          <short_desc>Make AccessibilityObject::lineForPosition return the correct value for cases where the position is not within the current object.</short_desc>
          <delta_ts>2011-12-18 17:12:51 -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>New Bugs</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>
          
          <blocked>71263</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alice Boxhall">aboxhall</reporter>
          <assigned_to name="Alice Boxhall">aboxhall</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494442</commentid>
    <comment_count>0</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-01 23:05:12 -0700</bug_when>
    <thetext>Restructure AccessibilityObject::lineForPosition to make the logic clearer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494445</commentid>
    <comment_count>1</comment_count>
      <attachid>113278</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-01 23:07:02 -0700</bug_when>
    <thetext>Created attachment 113278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499385</commentid>
    <comment_count>2</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 15:07:27 -0800</bug_when>
    <thetext>Chris, would you be able to have a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499389</commentid>
    <comment_count>3</comment_count>
      <attachid>113278</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-09 15:12:24 -0800</bug_when>
    <thetext>Comment on attachment 113278
Patch

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

Is this patch changing functionality or just re-structuring. the title of the bug leads me to believe that it will not actually fix anything (bur thither just restructure).

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:945
&gt; +    // if the position is not in the same editable region as this AX object, return -1

this line should be a complete sentence (capitalization, punctuation)

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:948
&gt; +        return -1;

why do we return -1 here but 0 if visiblePos,isNull()

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:951
&gt; +    VisiblePosition currentVisiblePos = visiblePos, savedVisiblePos;

separate lines for separate folks here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499459</commentid>
    <comment_count>4</comment_count>
      <attachid>114392</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 16:29:50 -0800</bug_when>
    <thetext>Created attachment 114392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499460</commentid>
    <comment_count>5</comment_count>
      <attachid>113278</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 16:29:58 -0800</bug_when>
    <thetext>Comment on attachment 113278
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:945
&gt;&gt; +    // if the position is not in the same editable region as this AX object, return -1
&gt; 
&gt; this line should be a complete sentence (capitalization, punctuation)

Done.

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:948
&gt;&gt; +        return -1;
&gt; 
&gt; why do we return -1 here but 0 if visiblePos,isNull()

This is my attempt to replicate the original intended logic as per http://trac.webkit.org/browser/trunk/LayoutTests/accessibility/textarea-insertion-point-line-number-expected.txt, added in http://trac.webkit.org/changeset/35355.

However, I&apos;m not sure the test as committed in that change tests the right thing; the check at line 40 describes itself as &quot;Not focused on text area line number: &quot;; however, at that point it is in fact focused on a textarea which has 0 lines, and that case returns -1. I rewrote the test to check the case where focus is placed outside of the textarea which is being queried by the AX API, and then rewrote the code to make that case return -1 to keep the test result consistent, assuming that was the intended behaviour. Are you able to tell me whether this is the correct behaviour? I can&apos;t follow the radar link so I am unable to see any discussion which may have occurred there.

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:951
&gt;&gt; +    VisiblePosition currentVisiblePos = visiblePos, savedVisiblePos;
&gt; 
&gt; separate lines for separate folks here

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499467</commentid>
    <comment_count>6</comment_count>
      <attachid>114392</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-09 16:38:07 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

Attachment 114392 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10394139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499481</commentid>
    <comment_count>7</comment_count>
      <attachid>114392</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-09 16:51:06 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:952
&gt; -    VisiblePosition savedVisiblePos;
&gt; +    VisiblePosition savedVisiblePos = 0;

Why this change? What effect does adding &quot;= 0&quot; have?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499484</commentid>
    <comment_count>8</comment_count>
      <attachid>114392</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-09 16:55:05 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

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

&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:29
&gt; +                var lineNumber = area1AXUIElement.insertionPointLineNumber;

it looks like there are changes to this layout test that don&apos;t actually do anything. i.e.) renaming focusedElement to area1AXUIElement.
those kinds of changes make this patch harder to review because i don&apos;t know if you&apos;re changing the layout test because its wrong or what.

also, i believe this layout test was functioning correctly before. there was probably a good reason why &lt;textarea&gt; was empty. you&apos;re changing what this test does and it seems like we might be losing coverage. i would suggest adding a new test, since it seems like you&apos;re trying to fix a bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499491</commentid>
    <comment_count>9</comment_count>
      <attachid>114392</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 17:02:17 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

Attachment 114392 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10319179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499521</commentid>
    <comment_count>10</comment_count>
      <attachid>114392</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-09 17:36:51 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

Attachment 114392 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10404149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499529</commentid>
    <comment_count>11</comment_count>
      <attachid>114407</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 17:42:13 -0800</bug_when>
    <thetext>Created attachment 114407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499533</commentid>
    <comment_count>12</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 17:42:56 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 114392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:952
&gt; &gt; -    VisiblePosition savedVisiblePos;
&gt; &gt; +    VisiblePosition savedVisiblePos = 0;
&gt; 
&gt; Why this change? What effect does adding &quot;= 0&quot; have?

Nothing good; side effect of coding while jetlagged and uploading without building first. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499559</commentid>
    <comment_count>13</comment_count>
      <attachid>114392</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 18:09:05 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

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

&gt;&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:29
&gt;&gt; +                var lineNumber = area1AXUIElement.insertionPointLineNumber;
&gt; 
&gt; it looks like there are changes to this layout test that don&apos;t actually do anything. i.e.) renaming focusedElement to area1AXUIElement.
&gt; those kinds of changes make this patch harder to review because i don&apos;t know if you&apos;re changing the layout test because its wrong or what.
&gt; 
&gt; also, i believe this layout test was functioning correctly before. there was probably a good reason why &lt;textarea&gt; was empty. you&apos;re changing what this test does and it seems like we might be losing coverage. i would suggest adding a new test, since it seems like you&apos;re trying to fix a bug

Pulling accessibilityController.focusedElement out into a variable actually does change the logic, as at line 39 accessibilityController.focusedElement is a different element to what it is at line 24.

I made these changes to try and make this test correct in terms of what it says it&apos;s testing: the comment &quot;Not focused on text area&quot; suggests that it&apos;s intended to test the case where a given textarea&apos;s line number is being queried, but the focus is not in that textarea; however, it&apos;s actually testing the case where focus is placed in a textarea with 0 lines. If you think that&apos;s what it was intended to test, I&apos;m happy to reword the comment and restore the original test (and code) logic. I&apos;m asking for your opinion here as you wrote the original test, and I&apos;m unable to see any discussion that happened on that patch as the radar link is inaccessible to me; the original code was very difficult to follow, so I wanted to make it more explicit before I made the changes in bug 71263.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499565</commentid>
    <comment_count>14</comment_count>
      <attachid>114392</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-09 18:18:30 -0800</bug_when>
    <thetext>Comment on attachment 114392
Patch

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

&gt;&gt;&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:29
&gt;&gt;&gt; +                var lineNumber = area1AXUIElement.insertionPointLineNumber;
&gt;&gt; 
&gt;&gt; it looks like there are changes to this layout test that don&apos;t actually do anything. i.e.) renaming focusedElement to area1AXUIElement.
&gt;&gt; those kinds of changes make this patch harder to review because i don&apos;t know if you&apos;re changing the layout test because its wrong or what.
&gt;&gt; 
&gt;&gt; also, i believe this layout test was functioning correctly before. there was probably a good reason why &lt;textarea&gt; was empty. you&apos;re changing what this test does and it seems like we might be losing coverage. i would suggest adding a new test, since it seems like you&apos;re trying to fix a bug
&gt; 
&gt; Pulling accessibilityController.focusedElement out into a variable actually does change the logic, as at line 39 accessibilityController.focusedElement is a different element to what it is at line 24.
&gt; 
&gt; I made these changes to try and make this test correct in terms of what it says it&apos;s testing: the comment &quot;Not focused on text area&quot; suggests that it&apos;s intended to test the case where a given textarea&apos;s line number is being queried, but the focus is not in that textarea; however, it&apos;s actually testing the case where focus is placed in a textarea with 0 lines. If you think that&apos;s what it was intended to test, I&apos;m happy to reword the comment and restore the original test (and code) logic. I&apos;m asking for your opinion here as you wrote the original test, and I&apos;m unable to see any discussion that happened on that patch as the radar link is inaccessible to me; the original code was very difficult to follow, so I wanted to make it more explicit before I made the changes in bug 71263.

I think the intended behavior is test what happens in the first text area when it no longer has focus.
The test is wrong is that it&apos;s clearly getting the insertion point for the second text area.

Calling area1.selectionStart = 0 defeats the purpose of the test in that sense.
There&apos;s also no reason to add text inside of text area 2, since that content is never being tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499578</commentid>
    <comment_count>15</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-09 18:36:24 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 114392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114392&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:29
&gt; &gt;&gt;&gt; +                var lineNumber = area1AXUIElement.insertionPointLineNumber;
&gt; &gt;&gt; 
&gt; &gt;&gt; it looks like there are changes to this layout test that don&apos;t actually do anything. i.e.) renaming focusedElement to area1AXUIElement.
&gt; &gt;&gt; those kinds of changes make this patch harder to review because i don&apos;t know if you&apos;re changing the layout test because its wrong or what.
&gt; &gt;&gt; 
&gt; &gt;&gt; also, i believe this layout test was functioning correctly before. there was probably a good reason why &lt;textarea&gt; was empty. you&apos;re changing what this test does and it seems like we might be losing coverage. i would suggest adding a new test, since it seems like you&apos;re trying to fix a bug
&gt; &gt; 
&gt; &gt; Pulling accessibilityController.focusedElement out into a variable actually does change the logic, as at line 39 accessibilityController.focusedElement is a different element to what it is at line 24.
&gt; &gt; 
&gt; &gt; I made these changes to try and make this test correct in terms of what it says it&apos;s testing: the comment &quot;Not focused on text area&quot; suggests that it&apos;s intended to test the case where a given textarea&apos;s line number is being queried, but the focus is not in that textarea; however, it&apos;s actually testing the case where focus is placed in a textarea with 0 lines. If you think that&apos;s what it was intended to test, I&apos;m happy to reword the comment and restore the original test (and code) logic. I&apos;m asking for your opinion here as you wrote the original test, and I&apos;m unable to see any discussion that happened on that patch as the radar link is inaccessible to me; the original code was very difficult to follow, so I wanted to make it more explicit before I made the changes in bug 71263.
&gt; 
&gt; I think the intended behavior is test what happens in the first text area when it no longer has focus.

I agree: that&apos;s not what the original test is testing, which is why I made these changes.

&gt; The test is wrong is that it&apos;s clearly getting the insertion point for the second text area.

Yes: this is why I made the change to pull area1AXUIElement out into a variable.

&gt; Calling area1.selectionStart = 0 defeats the purpose of the test in that sense.

I don&apos;t follow. Calling area1.selectionStart does not put focus back on to area1.

&gt; There&apos;s also no reason to add text inside of text area 2, since that content is never being tested.

Ok, I will remove that text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499611</commentid>
    <comment_count>16</comment_count>
      <attachid>114407</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-09 20:42:01 -0800</bug_when>
    <thetext>Comment on attachment 114407
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:947
&gt; +    if (!containerNode-&gt;containsIncludingShadowDOM(node()) &amp;&amp; !node()-&gt;containsIncludingShadowDOM(containerNode))

this doesn&apos;t check if node() == 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499612</commentid>
    <comment_count>17</comment_count>
      <attachid>114407</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-09 20:43:26 -0800</bug_when>
    <thetext>Comment on attachment 114407
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:963
&gt;  

don&apos;t understand what this change does since the layout test this is associated with is testing the result when focus is not in the node</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499664</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-09 22:47:44 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 114392 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114392&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:29
&gt; &gt; &gt;&gt;&gt; +                var lineNumber = area1AXUIElement.insertionPointLineNumber;
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; it looks like there are changes to this layout test that don&apos;t actually do anything. i.e.) renaming focusedElement to area1AXUIElement.
&gt; &gt; &gt;&gt; those kinds of changes make this patch harder to review because i don&apos;t know if you&apos;re changing the layout test because its wrong or what.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; also, i believe this layout test was functioning correctly before. there was probably a good reason why &lt;textarea&gt; was empty. you&apos;re changing what this test does and it seems like we might be losing coverage. i would suggest adding a new test, since it seems like you&apos;re trying to fix a bug
&gt; &gt; &gt; 
&gt; &gt; &gt; Pulling accessibilityController.focusedElement out into a variable actually does change the logic, as at line 39 accessibilityController.focusedElement is a different element to what it is at line 24.
&gt; &gt; &gt; 
&gt; &gt; &gt; I made these changes to try and make this test correct in terms of what it says it&apos;s testing: the comment &quot;Not focused on text area&quot; suggests that it&apos;s intended to test the case where a given textarea&apos;s line number is being queried, but the focus is not in that textarea; however, it&apos;s actually testing the case where focus is placed in a textarea with 0 lines. If you think that&apos;s what it was intended to test, I&apos;m happy to reword the comment and restore the original test (and code) logic. I&apos;m asking for your opinion here as you wrote the original test, and I&apos;m unable to see any discussion that happened on that patch as the radar link is inaccessible to me; the original code was very difficult to follow, so I wanted to make it more explicit before I made the changes in bug 71263.
&gt; &gt; 
&gt; &gt; I think the intended behavior is test what happens in the first text area when it no longer has focus.
&gt; 
&gt; I agree: that&apos;s not what the original test is testing, which is why I made these changes.
&gt; 

I guess what I&apos;m missing is what does the layout test result look like after the change, but before the fix.

&gt; &gt; The test is wrong is that it&apos;s clearly getting the insertion point for the second text area.
&gt; 
&gt; Yes: this is why I made the change to pull area1AXUIElement out into a variable.
&gt; 
&gt; &gt; Calling area1.selectionStart = 0 defeats the purpose of the test in that sense.
&gt; 
&gt; I don&apos;t follow. Calling area1.selectionStart does not put focus back on to area1.
&gt; 

So what&apos;s the reason for adding it? It could potentially alter the meaning of the test

&gt; &gt; There&apos;s also no reason to add text inside of text area 2, since that content is never being tested.
&gt; 
&gt; Ok, I will remove that text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500096</commentid>
    <comment_count>19</comment_count>
      <attachid>114536</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-10 12:05:30 -0800</bug_when>
    <thetext>Created attachment 114536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500100</commentid>
    <comment_count>20</comment_count>
      <attachid>114537</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-10 12:09:16 -0800</bug_when>
    <thetext>Created attachment 114537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500110</commentid>
    <comment_count>21</comment_count>
      <attachid>114407</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-10 12:16:03 -0800</bug_when>
    <thetext>Comment on attachment 114407
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:947
&gt;&gt; +    if (!containerNode-&gt;containsIncludingShadowDOM(node()) &amp;&amp; !node()-&gt;containsIncludingShadowDOM(containerNode))
&gt; 
&gt; this doesn&apos;t check if node() == 0

Fixed.

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:963
&gt;&gt;  
&gt; 
&gt; don&apos;t understand what this change does since the layout test this is associated with is testing the result when focus is not in the node

The layout test checks multiple cases:
- selection at the start of the textarea
- selection in the middle of the textarea
- selection at the end of the textarea
- selection outside the textarea

Previously, this code implicitly returned -1 for certain cases. I have tried to rewrite the code to make those cases explicit, and ensure that in any other case an accurate line number is returned. I changed this to a do while loop as it doesn&apos;t make sense to check inSameLine(currentVisiblePos, savedVisiblePos) before savedVisiblePos has been set.

Can you tell me whether the current code and test reflects the intended logic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500126</commentid>
    <comment_count>22</comment_count>
      <attachid>114537</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-10 12:25:04 -0800</bug_when>
    <thetext>Comment on attachment 114537
Patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1891
&gt; +            AccessibilityObject* focusedObject = m_object-&gt;axObjectCache()-&gt;getOrCreate(m_object-&gt;document()-&gt;focusedNode()-&gt;renderer());

Please note that this code is not currently marked for review.

I realised that AccessibilityObject::lineForPosition() was always being called with a position calculated from the object being queried, rather than the document, so the logic for checking whether the given position was outside the object being queried was never being exercised. This change makes the test work as intended (without the extra call to setSelection).

I&apos;m not sure this is the best way to achieve this behaviour; however, I am still not sure what the intended behaviour actually is. Could you please let me know whether the test as currently written is demonstrating the desired behaviour (i.e. focus outside of the object being queried results in returning -1 for the line number)?

Also, it is somewhat coincidental that the -1 value gets through to the test, as this method actually returns nil in this case, which DumpRenderTree/mac/AccessibilityUIElementMac.mm converts back into a -1 value, so I&apos;m not sure what the actual browser user sees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503904</commentid>
    <comment_count>23</comment_count>
      <attachid>114537</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 08:24:37 -0800</bug_when>
    <thetext>Comment on attachment 114537
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:946
&gt; +    if (!node())

this comment should explain why you&apos;re returning -1 if no node(), (instead of explaining what it does). I think the general rule is comments should explain why, instead of what, unless the what is not very clear from the code because its complicated

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1891
&gt;&gt; +            AccessibilityObject* focusedObject = m_object-&gt;axObjectCache()-&gt;getOrCreate(m_object-&gt;document()-&gt;focusedNode()-&gt;renderer());
&gt; 
&gt; Please note that this code is not currently marked for review.
&gt; 
&gt; I realised that AccessibilityObject::lineForPosition() was always being called with a position calculated from the object being queried, rather than the document, so the logic for checking whether the given position was outside the object being queried was never being exercised. This change makes the test work as intended (without the extra call to setSelection).
&gt; 
&gt; I&apos;m not sure this is the best way to achieve this behaviour; however, I am still not sure what the intended behaviour actually is. Could you please let me know whether the test as currently written is demonstrating the desired behaviour (i.e. focus outside of the object being queried results in returning -1 for the line number)?
&gt; 
&gt; Also, it is somewhat coincidental that the -1 value gets through to the test, as this method actually returns nil in this case, which DumpRenderTree/mac/AccessibilityUIElementMac.mm converts back into a -1 value, so I&apos;m not sure what the actual browser user sees.

i think at some point in the past TextEdit would return -1 or nil when focus was not within the text area for insertionPointLineNumber. when i just checked on Lion, this is no longer true. if focus is not in the object, then it returns whatever it was before focus was lost... so i&apos;m not sure that code is even relevant on the mac anymore.

It seems equivalent to check if the focused object == this, and if it doesn&apos;t then, return nil. that will probably be a little clearer in the code as to what&apos;s happening.  

i think you can get the focusedObject from m_object-&gt;focusedUIElement()

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1895
&gt;                  return nil;

I think we return -1 when focus is not within the text field, so that the platform can decide what to do when the focus is not in fact within the text field. in the mac case, it seems like we want to return nil</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504333</commentid>
    <comment_count>24</comment_count>
      <attachid>114537</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-11-16 15:38:24 -0800</bug_when>
    <thetext>Comment on attachment 114537
Patch

Thanks for the comments; looking to clarify a few things before I touch the code again.

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:946
&gt;&gt; +    if (!node())
&gt; 
&gt; this comment should explain why you&apos;re returning -1 if no node(), (instead of explaining what it does). I think the general rule is comments should explain why, instead of what, unless the what is not very clear from the code because its complicated

Good point. Removed comment for now, will add one back in once I understand all the logic of what gets returned when.

&gt;&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1891
&gt;&gt;&gt; +            AccessibilityObject* focusedObject = m_object-&gt;axObjectCache()-&gt;getOrCreate(m_object-&gt;document()-&gt;focusedNode()-&gt;renderer());
&gt;&gt; 
&gt;&gt; Please note that this code is not currently marked for review.
&gt;&gt; 
&gt;&gt; I realised that AccessibilityObject::lineForPosition() was always being called with a position calculated from the object being queried, rather than the document, so the logic for checking whether the given position was outside the object being queried was never being exercised. This change makes the test work as intended (without the extra call to setSelection).
&gt;&gt; 
&gt;&gt; I&apos;m not sure this is the best way to achieve this behaviour; however, I am still not sure what the intended behaviour actually is. Could you please let me know whether the test as currently written is demonstrating the desired behaviour (i.e. focus outside of the object being queried results in returning -1 for the line number)?
&gt;&gt; 
&gt;&gt; Also, it is somewhat coincidental that the -1 value gets through to the test, as this method actually returns nil in this case, which DumpRenderTree/mac/AccessibilityUIElementMac.mm converts back into a -1 value, so I&apos;m not sure what the actual browser user sees.
&gt; 
&gt; i think at some point in the past TextEdit would return -1 or nil when focus was not within the text area for insertionPointLineNumber. when i just checked on Lion, this is no longer true. if focus is not in the object, then it returns whatever it was before focus was lost... so i&apos;m not sure that code is even relevant on the mac anymore.
&gt; 
&gt; It seems equivalent to check if the focused object == this, and if it doesn&apos;t then, return nil. that will probably be a little clearer in the code as to what&apos;s happening.  
&gt; 
&gt; i think you can get the focusedObject from m_object-&gt;focusedUIElement()

Oh -- I don&apos;t know how I missed the focusedUIElement method.

I&apos;m not sure about checking focusedObject == this -- what about the case where there is a parent/child relationship between focusedObject and this? I&apos;m not sure whether they are guaranteed to be the same thing at the point where this method is called. Should I check that too? Even then, the selection could be either in the child node, or the parent node but not the child node.

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1895
&gt;&gt;                  return nil;
&gt; 
&gt; I think we return -1 when focus is not within the text field, so that the platform can decide what to do when the focus is not in fact within the text field. in the mac case, it seems like we want to return nil

Makes sense. It just makes me feel a bit weird about testing that method by looking for -1 in the layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518055</commentid>
    <comment_count>25</comment_count>
      <attachid>118517</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-08 19:51:33 -0800</bug_when>
    <thetext>Created attachment 118517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518058</commentid>
    <comment_count>26</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-08 19:56:26 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; this comment should explain why you&apos;re returning -1 if no node(), (instead of explaining what it does). I think the general rule is comments should explain why, instead of what, unless the what is not very clear from the code because its complicated
&gt; 
&gt; Good point. Removed comment for now, will add one back in once I understand all the logic of what gets returned when.

Ended up not putting this comment back in; let me know if you think it needs one.

&gt; &gt; It seems equivalent to check if the focused object == this, and if it doesn&apos;t then, return nil. that will probably be a little clearer in the code as to what&apos;s happening.  
&gt; 
&gt; I&apos;m not sure about checking focusedObject == this -- what about the case where there is a parent/child relationship between focusedObject and this? I&apos;m not sure whether they are guaranteed to be the same thing at the point where this method is called. Should I check that too? Even then, the selection could be either in the child node, or the parent node but not the child node.

After much thought and experimenting with the layout test I think this actually is correct (i.e. testing for focusedObject == m_object) -- the layout test now includes a case for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518976</commentid>
    <comment_count>27</comment_count>
      <attachid>118724</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-11 19:35:36 -0800</bug_when>
    <thetext>Created attachment 118724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518977</commentid>
    <comment_count>28</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-11 19:37:42 -0800</bug_when>
    <thetext>Forgot to included new test results in the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519290</commentid>
    <comment_count>29</comment_count>
      <attachid>118724</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-12-12 09:59:08 -0800</bug_when>
    <thetext>Comment on attachment 118724
Patch

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

&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:31
&gt; +            for (var k = 0; k &lt; 3; k++ ) {

unnecessary space added

&gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:57
&gt; +

You should probably use the 
shouldBe() idiom so that if the test fails, it&apos;s clear and a FAILURE message will appear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519466</commentid>
    <comment_count>30</comment_count>
      <attachid>118847</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-12 14:26:07 -0800</bug_when>
    <thetext>Created attachment 118847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519467</commentid>
    <comment_count>31</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-12 14:26:19 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 118724 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118724&amp;action=review
&gt; 
&gt; &gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:31
&gt; &gt; +            for (var k = 0; k &lt; 3; k++ ) {
&gt; 
&gt; unnecessary space added

Fixed.

&gt; &gt; LayoutTests/accessibility/textarea-insertion-point-line-number.html:57
&gt; &gt; +
&gt; 
&gt; You should probably use the 
&gt; shouldBe() idiom so that if the test fails, it&apos;s clear and a FAILURE message will appear

Honestly, I find shouldBe() tests really unreadable as they don&apos;t provide any mechanism for an informative message, so you don&apos;t know which case has actually failed. Do people ever really look at test results outside the context of comparison with expected result?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519578</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-12 15:26:39 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Honestly, I find shouldBe() tests really unreadable as they don&apos;t provide any mechanism for an informative message, so you don&apos;t know which case has actually failed.

I am bewildered by that. The key to a shouldBe test is to put the useful context in the expressions passed to shouldBe; then the informative information is right there in the test output.

Maybe we could discuss a particular example where shouldBe gives a bad result and I can show you how I’d improve it.

&gt; Do people ever really look at test results outside the context of comparison with expected result?

Yes, I do a lot!

I run individual tests often many times in a row once the regression test machinery detects a failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519594</commentid>
    <comment_count>33</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-12 15:37:40 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; Honestly, I find shouldBe() tests really unreadable as they don&apos;t provide any mechanism for an informative message, so you don&apos;t know which case has actually failed.
&gt; 
&gt; I am bewildered by that. The key to a shouldBe test is to put the useful context in the expressions passed to shouldBe; then the informative information is right there in the test output.

Compare http://trac.webkit.org/browser/trunk/LayoutTests/accessibility/aria-checkbox-checked-expected.txt to the expected results in this change.

&gt; Maybe we could discuss a particular example where shouldBe gives a bad result and I can show you how I’d improve it.
&gt; 
&gt; &gt; Do people ever really look at test results outside the context of comparison with expected result?
&gt; 
&gt; Yes, I do a lot!
&gt; 
&gt; I run individual tests often many times in a row once the regression test machinery detects a failure.

Why have expected results separately from the test if the test must also contain the expected results? Are they unit tests, or layout tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519917</commentid>
    <comment_count>34</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-12-13 00:26:26 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #31)
&gt; &gt; &gt; Honestly, I find shouldBe() tests really unreadable as they don&apos;t provide any mechanism for an informative message, so you don&apos;t know which case has actually failed.
&gt; &gt; 
&gt; &gt; I am bewildered by that. The key to a shouldBe test is to put the useful context in the expressions passed to shouldBe; then the informative information is right there in the test output.
&gt; 
&gt; Compare http://trac.webkit.org/browser/trunk/LayoutTests/accessibility/aria-checkbox-checked-expected.txt to the expected results in this change.
&gt; 
&gt; &gt; Maybe we could discuss a particular example where shouldBe gives a bad result and I can show you how I’d improve it.
&gt; &gt; 
&gt; &gt; &gt; Do people ever really look at test results outside the context of comparison with expected result?
&gt; &gt; 
&gt; &gt; Yes, I do a lot!
&gt; &gt; 
&gt; &gt; I run individual tests often many times in a row once the regression test machinery detects a failure.
&gt; 
&gt; Why have expected results separately from the test if the test must also contain the expected results? Are they unit tests, or layout tests?

You&apos;re not always going to be able to understand why a test failed looking at the expected results. The same goes for this test here. If one of the numbers change from 2 to 3, it won&apos;t mean anything until I look at the test, hopefully see comments and understand whats happening

The difference is that shouldBe outputs a nice failure message and also points out what method is causing the problem right away. In this case, we&apos;d see insertionPointLineNumber FAILED. If I was working in that area, I wouldn&apos;t have to then investigate which method failed in that test, I&apos;d have an area pinpointed. Without shouldBe, then I have to dig into the test, always, to try to understand what&apos;s happening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519995</commentid>
    <comment_count>35</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-13 02:57:56 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; &gt; Why have expected results separately from the test if the test must also contain the expected results? Are they unit tests, or layout tests?
&gt; 
&gt; You&apos;re not always going to be able to understand why a test failed looking at the expected results. The same goes for this test here. If one of the numbers change from 2 to 3, it won&apos;t mean anything until I look at the test, hopefully see comments and understand whats happening
&gt; 
&gt; The difference is that shouldBe outputs a nice failure message and also points out what method is causing the problem right away. In this case, we&apos;d see insertionPointLineNumber FAILED. If I was working in that area, I wouldn&apos;t have to then investigate which method failed in that test, I&apos;d have an area pinpointed. Without shouldBe, then I have to dig into the test, always, to try to understand what&apos;s happening

I disagree that having a FAILED message adds anything in the case that you are looking at the test results in comparison with the expected results (i.e. as a diff). And in this case, you&apos;d actually be _losing_ information: all you&apos;d see would be

PASS insertionPointLineNumber was 0
PASS insertionPointLineNumber was -1
FAIL insertionPointLineNumber was 4 (or whatever)

You would have to count through the calls in the test to know which invocation failed. I completely fail to understand how that is an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519996</commentid>
    <comment_count>36</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-13 03:01:51 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; &gt; Why have expected results separately from the test if the test must also contain the expected results? Are they unit tests, or layout tests?
&gt; &gt; 
&gt; &gt; You&apos;re not always going to be able to understand why a test failed looking at the expected results. The same goes for this test here. If one of the numbers change from 2 to 3, it won&apos;t mean anything until I look at the test, hopefully see comments and understand whats happening
&gt; &gt; 
&gt; &gt; The difference is that shouldBe outputs a nice failure message and also points out what method is causing the problem right away. In this case, we&apos;d see insertionPointLineNumber FAILED. If I was working in that area, I wouldn&apos;t have to then investigate which method failed in that test, I&apos;d have an area pinpointed. Without shouldBe, then I have to dig into the test, always, to try to understand what&apos;s happening
&gt; 
&gt; I disagree that having a FAILED message adds anything in the case that you are looking at the test results in comparison with the expected results (i.e. as a diff). And in this case, you&apos;d actually be _losing_ information: all you&apos;d see would be
&gt; 
&gt; PASS insertionPointLineNumber was 0
&gt; PASS insertionPointLineNumber was -1
&gt; FAIL insertionPointLineNumber was 4 (or whatever)
&gt; 
&gt; You would have to count through the calls in the test to know which invocation failed. I completely fail to understand how that is an improvement.

To be clear: I am more than happy to rewrite the test for clarity; I just don&apos;t think that using shouldBe will achieve that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520092</commentid>
    <comment_count>37</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-13 08:35:11 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; PASS insertionPointLineNumber was 0
&gt; PASS insertionPointLineNumber was -1
&gt; FAIL insertionPointLineNumber was 4 (or whatever)

The problem here is that the left side is just a variable. Instead it should be a function invocation that makes it clear what is being tested.

If you are writing this:

    shouldBe(&apos;&lt;variableName&gt;&apos;, &apos;&lt;number&gt;&apos;)

Then you are doing it wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520386</commentid>
    <comment_count>38</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-13 14:43:50 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #35)
&gt; &gt; PASS insertionPointLineNumber was 0
&gt; &gt; PASS insertionPointLineNumber was -1
&gt; &gt; FAIL insertionPointLineNumber was 4 (or whatever)
&gt; 
&gt; The problem here is that the left side is just a variable. Instead it should be a function invocation that makes it clear what is being tested.
&gt; 
&gt; If you are writing this:
&gt; 
&gt;     shouldBe(&apos;&lt;variableName&gt;&apos;, &apos;&lt;number&gt;&apos;)
&gt; 
&gt; Then you are doing it wrong.

Sorry, I was in a hurry and elided part of my example. It would actually be:

[PASS|FAIL] contenteditableAXUIElement.insertionPointLineNumber was &lt;value&gt;

The point is, what is changing between invocations (in this case, the location of the selection/cursor) is necessarily not a part of the expression, so that part of the context simply can&apos;t be expressed via shouldBe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520421</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-13 15:36:07 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; The point is, what is changing between invocations (in this case, the location of the selection/cursor) is necessarily not a part of the expression, so that part of the context simply can&apos;t be expressed via shouldBe.

It can and should be. The expression can contain multiple statements with semicolon separators. The test should be inside the shouldBe argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520480</commentid>
    <comment_count>40</comment_count>
      <attachid>119108</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-13 16:51:21 -0800</bug_when>
    <thetext>Created attachment 119108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520481</commentid>
    <comment_count>41</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-13 16:52:02 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; The point is, what is changing between invocations (in this case, the location of the selection/cursor) is necessarily not a part of the expression, so that part of the context simply can&apos;t be expressed via shouldBe.
&gt; 
&gt; It can and should be. The expression can contain multiple statements with semicolon separators. The test should be inside the shouldBe argument.

Ok, I&apos;ve tried to achieve that with this patch. Could you tell me if this is what you meant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521305</commentid>
    <comment_count>42</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-14 14:42:02 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #39)
&gt; &gt; (In reply to comment #38)
&gt; &gt; &gt; The point is, what is changing between invocations (in this case, the location of the selection/cursor) is necessarily not a part of the expression, so that part of the context simply can&apos;t be expressed via shouldBe.
&gt; &gt; 
&gt; &gt; It can and should be. The expression can contain multiple statements with semicolon separators. The test should be inside the shouldBe argument.
&gt; 
&gt; Ok, I&apos;ve tried to achieve that with this patch. Could you tell me if this is what you meant?

Would one of you have time to have a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521614</commentid>
    <comment_count>43</comment_count>
      <attachid>119108</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 20:35:42 -0800</bug_when>
    <thetext>Comment on attachment 119108
Patch

Rejecting attachment 119108 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 10163 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
47&gt;At revision 10163.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/10895092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521619</commentid>
    <comment_count>44</comment_count>
      <attachid>119367</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-14 20:41:40 -0800</bug_when>
    <thetext>Created attachment 119367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521674</commentid>
    <comment_count>45</comment_count>
      <attachid>119367</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 22:38:24 -0800</bug_when>
    <thetext>Comment on attachment 119367
Patch

Rejecting attachment 119367 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/10910144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521697</commentid>
    <comment_count>46</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-14 23:12:12 -0800</bug_when>
    <thetext>Oops, I was hoping it&apos;d magically find the R+ from the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521698</commentid>
    <comment_count>47</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-12-14 23:14:04 -0800</bug_when>
    <thetext>Did you upload a different patch than the one that was reviewed and then set to r+? The layout test looks different from the previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522246</commentid>
    <comment_count>48</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-15 14:52:04 -0800</bug_when>
    <thetext>I didn&apos;t intend to, but it looks like that change to the layout test got lost. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522530</commentid>
    <comment_count>49</comment_count>
      <attachid>119565</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2011-12-15 22:00:19 -0800</bug_when>
    <thetext>Created attachment 119565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523582</commentid>
    <comment_count>50</comment_count>
      <attachid>119565</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 17:12:44 -0800</bug_when>
    <thetext>Comment on attachment 119565
Patch

Clearing flags on attachment: 119565

Committed r103197: &lt;http://trac.webkit.org/changeset/103197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523583</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-18 17:12:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113278</attachid>
            <date>2011-11-01 23:07:02 -0700</date>
            <delta_ts>2011-11-09 17:41:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111102170700.patch</filename>
            <type>text/plain</type>
            <size>7902</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwMDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YTAyNDgyODliNDhmMDdh
ZDlhMGRhZjQ2ODE0MzM3OWZiYzhjNGQyLi42M2FlZDU4ZGY4OGQ2MTAyZjE5MDUzZGExYjZjMmQ5
YTIwNmI3MDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDEgIEFsaWNl
IEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUg
QWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNs
ZWFyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtY29ycmVj
dC1saW5lLW51bWJlci5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZUZvclBvc2l0aW9uKToKKwogMjAxMS0xMS0wMSAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmVmYWN0b3I6IGNoYW5nZSBTY3JvbGxhYmxlOjptX3Njcm9sbE9yaWdp
biBmcm9tIHByb3RlY3RlZCB0byBwcml2YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMTVhNjkxY2ZiZGU5YjRl
NWMzYmQ0MzE1MTQ0ZTMyODlkZjBiMDYyYS4uOTJkMjA5OTgwMjY2ODc4YmJjN2M2NTEzZjNjYTNl
NDJkNDg5MzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC05NDIsMjEgKzk0MiwyNSBAQCBpbnQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvcykgY29ucwogICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGN1
cnJlbnRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsKLSAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRW
aXNpYmxlUG9zOworICAgIC8vIGlmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIHNhbWUgZWRp
dGFibGUgcmVnaW9uIGFzIHRoaXMgQVggb2JqZWN0LCByZXR1cm4gLTEKKyAgICBOb2RlKiBjb250
YWluZXJOb2RlID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKTsK
KyAgICBpZiAoIWNvbnRhaW5lck5vZGUtPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKG5vZGUo
KSkgJiYgIW5vZGUoKS0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29udGFpbmVyTm9kZSkp
CisgICAgICAgIHJldHVybiAtMTsKKworICAgIGludCBsaW5lQ291bnQgPSAtMTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gY3VycmVudFZpc2libGVQb3MgPSB2aXNpYmxlUG9zLCBzYXZlZFZpc2libGVQ
b3M7CiAKICAgICAvLyBtb3ZlIHVwIHVudGlsIHdlIGdldCB0byB0aGUgdG9wCiAgICAgLy8gRklY
TUU6IFRoaXMgb25seSB0YWtlcyB1cyB0byB0aGUgdG9wIG9mIHRoZSByb290RWRpdGFibGVFbGVt
ZW50LCBub3QgdGhlIHRvcCBvZiB0aGUKICAgICAvLyB0b3AgZG9jdW1lbnQuCi0gICAgd2hpbGUg
KGN1cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50Vmlz
aWJsZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpIHsKLSAgICAgICAgKytsaW5lQ291bnQ7CisgICAg
ZG8gewogICAgICAgICBzYXZlZFZpc2libGVQb3MgPSBjdXJyZW50VmlzaWJsZVBvczsKICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHByZXZWaXNpYmxlUG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24o
Y3VycmVudFZpc2libGVQb3MsIDApOwogICAgICAgICBjdXJyZW50VmlzaWJsZVBvcyA9IHByZXZW
aXNpYmxlUG9zOwotICAgIH0KKyAgICAgICAgKytsaW5lQ291bnQ7CisgICAgfSAgd2hpbGUgKGN1
cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJs
ZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpOwogCi0gICAgcmV0dXJuIGxpbmVDb3VudCAtIDE7Cisg
ICAgcmV0dXJuIGxpbmVDb3VudDsKIH0KIAogLy8gTk9URTogQ29uc2lkZXIgcHJvdmlkaW5nIHRo
aXMgdXRpbGl0eSBtZXRob2QgYXMgQVggQVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzczODlhZTc0NDg3MTI1NTY1MWYy
ZDc4OTVjMTNjMjMzZDE0ZGFlMi4uMTk2MWU1M2NjZTgyNjAxMTBiMmJmNDYzNTcyYTFjNDljNmM4
OGQ3NyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTExLTAxICBBbGljZSBCb3hoYWxsICA8
YWJveGhhbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlc3RydWN0dXJlIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbiB0byBtYWtlIHRoZSBsb2dpYyBjbGVhcmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbDoKKwogMjAxMS0xMS0w
MSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEV4cGFuZCBmYXN0L2Rv
bS9nZXR0ZXItb24td2luZG93LW9iamVjdDIuaHRtbCB0byB0ZXN0IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IgYXMgd2VsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0
bWwKaW5kZXggYTUwZjYzNzI0ZTM5YWIxOGY0N2UyZTUxMzNmOTQ1M2MwNDM1YmRiNS4uZmIyZDlj
NWE1ODM2ODljNWI4YmI2OTg3Mjc2ZjE0ZTcyZmMwYzMwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2lu
dC1saW5lLW51bWJlci5odG1sCkBAIC00LDM5ICs0LDQxIEBACiAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPGJvZHk+Ci0gICAgCiAgICAgPGRp
diBpZD0icmVzdWx0Ij48L2Rpdj4KLSAgICAKICAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTEiIGlk
PSJhcmVhMSIgcm93cz0iNSIgY29scz0iNDAiPgogbGluZSAxCiBsaW5lIDIKIGxpbmUgMwogICAg
IDwvdGV4dGFyZWE+CiAKLSAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTIiIGlkPSJhcmVhMiIgcm93
cz0iNSIgY29scz0iNDAiPjwvdGV4dGFyZWE+Ci0gICAgIAorICAgIDx0ZXh0YXJlYSBuYW1lPSJh
cmVhMiIgaWQ9ImFyZWEyIiByb3dzPSI1IiBjb2xzPSI0MCI+CitsaW5lIDEKKzwvdGV4dGFyZWE+
CisKICAgICA8c2NyaXB0PgogICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpOwogCiAgICAgICAgICAgICB2YXIgYXJlYTEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYXJlYTEiKTsKICAgICAgICAgICAgIGFyZWExLmZvY3VzKCk7CisgICAgICAgICAgICB2
YXIgYXJlYTFBWFVJRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OwogCiAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgewogICAgICAg
ICAgICAgICAgIGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gKGsqNyk7CiAgICAgICAgICAgICAgICAg
YXJlYTEuc2VsZWN0aW9uRW5kID0gKGsqNyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXI7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIg
PSBhcmVhMUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKICAgICAgICAgICAg
ICAgICBpZiAobGluZU51bWJlciA9PSBrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5p
bm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogUGFzcyBbIiArIGFyZWEx
LnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5l
IE51bWJlcjogUGFzcyBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1i
ZXIgKyAiXVxuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBM
aW5lIE51bWJlcjogRmFpbCBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVO
dW1iZXIgKyAiXVxuIjsgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogRmFpbCBbIiArIGFyZWExLnNlbGVj
dGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciBhcmVhMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJhcmVhMiIpOwogICAgICAgICAgICAgYXJlYTIuZm9jdXMoKTsKLSAgICAgICAg
ICAgIHZhciBsaW5lTnVtYmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyCisgICAgICAgICAgICBhcmVhMS5zZWxlY3Rpb25T
dGFydCA9IDA7CisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGFyZWExQVhVSUVsZW1lbnQu
aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOwogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiTm90IGZvY3VzZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAiICsgbGluZU51bWJlciAr
ICJcbiI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLWNvcnJlY3Qt
bGluZS1udW1iZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtY29ycmVjdC1saW5lLW51bWJlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGY1ZjhlZTIzMjkwNTllNjMwMGM2ZWIxYzFmMDlkNDMzMzlkYjM3
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3RleHRib3gtcm9sZS1yZXBvcnRzLWNvcnJlY3QtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCBub24tbmF0aXZlIHRleHRib3hlcyBy
ZXBvcnQgdGhlIGNvcnJlY3QgbGluZSBudW1iZXIuCisKK0FkZGluZyBzZXZlcmFsIHBhcmFncmFw
aHMgYWJvdmUgdGhlIHRleHRib3ggc2hvdWxkbid0IGNoYW5nZSB0aGUgbGluZSBudW1iZXIgcmVw
b3J0ZWQuCisKK1NvbWUgdGV4dCBpbiBhIHRleHRib3guCitQQVNTIHRleHRib3hBeEVsZW1lbnQu
aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94LXJvbGUtcmVwb3J0cy1jb3JyZWN0LWxpbmUtbnVt
YmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0Ym94
LXJvbGUtcmVwb3J0cy1jb3JyZWN0LWxpbmUtbnVtYmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5NWM3
NzJhMThjZWI3Mjg2ZTUzMjBmN2Y3ZTUyMDA4MGFlNTNmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRib3gtcm9sZS1yZXBvcnRz
LWNvcnJlY3QtbGluZS1udW1iZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUM+Cis8aHRtbCBpZD0iaHRtbCI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IG5vbi1uYXRpdmUgdGV4
dGJveGVzIHJlcG9ydCB0aGUgY29ycmVjdCBsaW5lIG51bWJlci4KKzxwPkFkZGluZyBzZXZlcmFs
IHBhcmFncmFwaHMgYWJvdmUgdGhlIHRleHRib3ggc2hvdWxkbid0IGNoYW5nZSB0aGUgbGluZSBu
dW1iZXIgcmVwb3J0ZWQuCis8ZGl2IHJvbGU9InRleHRib3giIGlkPSJhcmlhVGV4dEJveCIgYXJp
YS1tdWx0aWxpbmU9ImZhbHNlIiB0YWJpbmRleD0iMCI+U29tZSB0ZXh0IGluIGEgdGV4dGJveC48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgICAgIHZhciBhcmlhVGV4dEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmlhVGV4
dEJveCIpOworICAgICAgICBhcmlhVGV4dEJveC5mb2N1cygpOworICAgICAgICB2YXIgdGV4dGJv
eEF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0Ym94QXhFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJl
ciIsICIwIik7CisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114392</attachid>
            <date>2011-11-09 16:29:50 -0800</date>
            <delta_ts>2011-11-09 18:18:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111110112947.patch</filename>
            <type>text/plain</type>
            <size>5624</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDZmZGNlOWE3MTY0N2Jh
MDc1ZGE1ODc0YzA5MDU2MmE0ZDg2M2JjLi4zYTgxMjQwMmI0ZTE2MmU2OWM1ZDJkYjBiYTdlODAz
NTQ0NjNlOTkyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDEgIEFsaWNl
IEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUg
QWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNs
ZWFyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtY29ycmVj
dC1saW5lLW51bWJlci5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZUZvclBvc2l0aW9uKToKKwogMjAxMS0xMS0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBbQ2FuQmVDb25zdHJ1Y3RlZF0gSURMIHdpdGgg
W0NvbnN0cnVjdG9yXSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDE1YTY5MWNmYmRlOWI0ZTVjM2JkNDMxNTE0
NGUzMjg5ZGYwYjA2MmEuLjJlZWY1OTgxODU4YjNkZTMzM2ZjZTBkNTM1MmQ1NzgzNzJkZjYzNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtOTQyLDIxICs5NDIsMjYgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnMK
ICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4g
dGhlIHNhbWUgZWRpdGFibGUgcmVnaW9uIGFzIHRoaXMgQVggb2JqZWN0LCByZXR1cm4gLTEuCisg
ICAgTm9kZSogY29udGFpbmVyTm9kZSA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKS5jb250
YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXJOb2RlLT5jb250YWluc0luY2x1ZGluZ1No
YWRvd0RPTShub2RlKCkpICYmICFub2RlKCktPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNv
bnRhaW5lck5vZGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpbnQgbGluZUNvdW50ID0g
LTE7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsK
LSAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9zOworICAgIFZpc2libGVQb3NpdGlv
biBzYXZlZFZpc2libGVQb3MgPSAwOwogCiAgICAgLy8gbW92ZSB1cCB1bnRpbCB3ZSBnZXQgdG8g
dGhlIHRvcAogICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgdGFrZXMgdXMgdG8gdGhlIHRvcCBvZiB0
aGUgcm9vdEVkaXRhYmxlRWxlbWVudCwgbm90IHRoZSB0b3Agb2YgdGhlCiAgICAgLy8gdG9wIGRv
Y3VtZW50LgotICAgIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5pc05vdE51bGwoKSAmJiAhKGlu
U2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJsZVBvcykpKSB7Ci0gICAgICAg
ICsrbGluZUNvdW50OworICAgIGRvIHsKICAgICAgICAgc2F2ZWRWaXNpYmxlUG9zID0gY3VycmVu
dFZpc2libGVQb3M7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2VmlzaWJsZVBvcyA9IHBy
ZXZpb3VzTGluZVBvc2l0aW9uKGN1cnJlbnRWaXNpYmxlUG9zLCAwKTsKICAgICAgICAgY3VycmVu
dFZpc2libGVQb3MgPSBwcmV2VmlzaWJsZVBvczsKLSAgICB9CisgICAgICAgICsrbGluZUNvdW50
OworICAgIH0gIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5pc05vdE51bGwoKSAmJiAhKGluU2Ft
ZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJsZVBvcykpKTsKIAotICAgIHJldHVy
biBsaW5lQ291bnQgLSAxOworICAgIHJldHVybiBsaW5lQ291bnQ7CiB9CiAKIC8vIE5PVEU6IENv
bnNpZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkgbWV0aG9kIGFzIEFYIEFQSQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBl
NjFkZWQ1ZGQyYjFjMzJkYWE4YzUxY2IzOWYwNjZmNzc1YTNiOGEuLmJiZDkzMGM4MzdiMjk0MDQw
YWEwYjM0OGM0NmJmYTM3NDY4YmVmMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMS0w
MSAgQWxpY2UgQm94aGFsbCAgPGFib3hoYWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXN0
cnVjdHVyZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24gdG8gbWFrZSB0aGUg
bG9naWMgY2xlYXJlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzEzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVy
Lmh0bWw6CisKIDIwMTEtMTEtMDkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IGR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSBm
b3IgTWFjIGxheW91dFRlc3RDb250cm9sbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1i
ZXIuaHRtbAppbmRleCBhNTBmNjM3MjRlMzlhYjE4ZjQ3ZTJlNTEzM2Y5NDUzYzA0MzViZGI1Li5m
YjJkOWM1YTU4MzY4OWM1YjhiYjY5ODcyNzZmMTRlNzJmYzBjMzBiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJl
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9u
LXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKQEAgLTQsMzkgKzQsNDEgQEAKICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8Ym9keT4KLSAgICAKICAg
ICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAgIAogICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVh
MSIgaWQ9ImFyZWExIiByb3dzPSI1IiBjb2xzPSI0MCI+CiBsaW5lIDEKIGxpbmUgMgogbGluZSAz
CiAgICAgPC90ZXh0YXJlYT4KIAotICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVhMiIgaWQ9ImFyZWEy
IiByb3dzPSI1IiBjb2xzPSI0MCI+PC90ZXh0YXJlYT4KLSAgICAgCisgICAgPHRleHRhcmVhIG5h
bWU9ImFyZWEyIiBpZD0iYXJlYTIiIHJvd3M9IjUiIGNvbHM9IjQwIj4KK2xpbmUgMQorPC90ZXh0
YXJlYT4KKwogICAgIDxzY3JpcHQ+CiAgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0Iik7CiAKICAgICAgICAgICAgIHZhciBhcmVhMSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJhcmVhMSIpOwogICAgICAgICAgICAgYXJlYTEuZm9jdXMoKTsKKyAgICAgICAg
ICAgIHZhciBhcmVhMUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQ7CiAKICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgMzsgaysrKSB7CiAg
ICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0aW9uU3RhcnQgPSAoayo3KTsKICAgICAgICAgICAg
ICAgICBhcmVhMS5zZWxlY3Rpb25FbmQgPSAoayo3KTsKLSAgICAgICAgICAgICAgICB2YXIgbGlu
ZU51bWJlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Lmluc2VydGlv
blBvaW50TGluZU51bWJlcjsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgbGluZU51
bWJlciA9IGFyZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOwogICAgICAg
ICAgICAgICAgIGlmIChsaW5lTnVtYmVyID09IGspIHsKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBQYXNzIFsiICsg
YXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOyAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIp
IExpbmUgTnVtYmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGlu
ZU51bWJlciArICJdXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayAr
ICIpIExpbmUgTnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsg
bGluZU51bWJlciArICJdXG4iOyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmlu
bmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBGYWlsIFsiICsgYXJlYTEu
c2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGFyZWEyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImFyZWEyIik7CiAgICAgICAgICAgICBhcmVhMi5mb2N1cygpOwotICAg
ICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIKKyAgICAgICAgICAgIGFyZWExLnNlbGVj
dGlvblN0YXJ0ID0gMDsKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gYXJlYTFBWFVJRWxl
bWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7CiAgICAgICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ICs9ICJOb3QgZm9jdXNlZCBvbiB0ZXh0IGFyZWEgbGluZSBudW1iZXI6ICIgKyBsaW5lTnVt
YmVyICsgIlxuIjsKICAgICAgICAgfQogICAgIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114407</attachid>
            <date>2011-11-09 17:42:13 -0800</date>
            <delta_ts>2011-11-10 12:16:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111110124211.patch</filename>
            <type>text/plain</type>
            <size>5582</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDZmZGNlOWE3MTY0N2Jh
MDc1ZGE1ODc0YzA5MDU2MmE0ZDg2M2JjLi4zYTgxMjQwMmI0ZTE2MmU2OWM1ZDJkYjBiYTdlODAz
NTQ0NjNlOTkyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDEgIEFsaWNl
IEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUg
QWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNs
ZWFyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtY29ycmVj
dC1saW5lLW51bWJlci5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZUZvclBvc2l0aW9uKToKKwogMjAxMS0xMS0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBbQ2FuQmVDb25zdHJ1Y3RlZF0gSURMIHdpdGgg
W0NvbnN0cnVjdG9yXSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDE1YTY5MWNmYmRlOWI0ZTVjM2JkNDMxNTE0
NGUzMjg5ZGYwYjA2MmEuLjlhZGRmYWRiMzJjOGYxMTBhMWZmMmFlZDczMWIyNDBmNmJlODc3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtOTQyLDIxICs5NDIsMjYgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnMK
ICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4g
dGhlIHNhbWUgZWRpdGFibGUgcmVnaW9uIGFzIHRoaXMgQVggb2JqZWN0LCByZXR1cm4gLTEuCisg
ICAgTm9kZSogY29udGFpbmVyTm9kZSA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKS5jb250
YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXJOb2RlLT5jb250YWluc0luY2x1ZGluZ1No
YWRvd0RPTShub2RlKCkpICYmICFub2RlKCktPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNv
bnRhaW5lck5vZGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpbnQgbGluZUNvdW50ID0g
LTE7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsK
ICAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9zOwogCiAgICAgLy8gbW92ZSB1cCB1
bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcAogICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgdGFrZXMgdXMg
dG8gdGhlIHRvcCBvZiB0aGUgcm9vdEVkaXRhYmxlRWxlbWVudCwgbm90IHRoZSB0b3Agb2YgdGhl
CiAgICAgLy8gdG9wIGRvY3VtZW50LgotICAgIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5pc05v
dE51bGwoKSAmJiAhKGluU2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJsZVBv
cykpKSB7Ci0gICAgICAgICsrbGluZUNvdW50OworICAgIGRvIHsKICAgICAgICAgc2F2ZWRWaXNp
YmxlUG9zID0gY3VycmVudFZpc2libGVQb3M7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2
VmlzaWJsZVBvcyA9IHByZXZpb3VzTGluZVBvc2l0aW9uKGN1cnJlbnRWaXNpYmxlUG9zLCAwKTsK
ICAgICAgICAgY3VycmVudFZpc2libGVQb3MgPSBwcmV2VmlzaWJsZVBvczsKLSAgICB9CisgICAg
ICAgICsrbGluZUNvdW50OworICAgIH0gIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5pc05vdE51
bGwoKSAmJiAhKGluU2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJsZVBvcykp
KTsKIAotICAgIHJldHVybiBsaW5lQ291bnQgLSAxOworICAgIHJldHVybiBsaW5lQ291bnQ7CiB9
CiAKIC8vIE5PVEU6IENvbnNpZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkgbWV0aG9kIGFzIEFY
IEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDBlNjFkZWQ1ZGQyYjFjMzJkYWE4YzUxY2IzOWYwNjZmNzc1YTNiOGEuLmJi
ZDkzMGM4MzdiMjk0MDQwYWEwYjM0OGM0NmJmYTM3NDY4YmVmMGYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMS0xMS0wMSAgQWxpY2UgQm94aGFsbCAgPGFib3hoYWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXN0cnVjdHVyZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRp
b24gdG8gbWFrZSB0aGUgbG9naWMgY2xlYXJlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBv
aW50LWxpbmUtbnVtYmVyLmh0bWw6CisKIDIwMTEtMTEtMDkgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGR1bXBQcm9ncmVzc0Zpbmlz
aGVkQ2FsbGJhY2soKSBmb3IgTWFjIGxheW91dFRlc3RDb250cm9sbGVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51
bWJlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24t
cG9pbnQtbGluZS1udW1iZXIuaHRtbAppbmRleCBhNTBmNjM3MjRlMzlhYjE4ZjQ3ZTJlNTEzM2Y5
NDUzYzA0MzViZGI1Li5mYjJkOWM1YTU4MzY4OWM1YjhiYjY5ODcyNzZmMTRlNzJmYzBjMzBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1w
b2ludC1saW5lLW51bWJlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4
dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKQEAgLTQsMzkgKzQsNDEgQEAK
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8
Ym9keT4KLSAgICAKICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAgIAogICAgIDx0ZXh0
YXJlYSBuYW1lPSJhcmVhMSIgaWQ9ImFyZWExIiByb3dzPSI1IiBjb2xzPSI0MCI+CiBsaW5lIDEK
IGxpbmUgMgogbGluZSAzCiAgICAgPC90ZXh0YXJlYT4KIAotICAgIDx0ZXh0YXJlYSBuYW1lPSJh
cmVhMiIgaWQ9ImFyZWEyIiByb3dzPSI1IiBjb2xzPSI0MCI+PC90ZXh0YXJlYT4KLSAgICAgCisg
ICAgPHRleHRhcmVhIG5hbWU9ImFyZWEyIiBpZD0iYXJlYTIiIHJvd3M9IjUiIGNvbHM9IjQwIj4K
K2xpbmUgMQorPC90ZXh0YXJlYT4KKwogICAgIDxzY3JpcHQ+CiAgICAgICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAKICAgICAgICAgICAgIHZhciBhcmVhMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmVhMSIpOwogICAgICAgICAgICAgYXJlYTEuZm9j
dXMoKTsKKyAgICAgICAgICAgIHZhciBhcmVhMUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAKICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBr
IDwgMzsgaysrKSB7CiAgICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0aW9uU3RhcnQgPSAoayo3
KTsKICAgICAgICAgICAgICAgICBhcmVhMS5zZWxlY3Rpb25FbmQgPSAoayo3KTsKLSAgICAgICAg
ICAgICAgICB2YXIgbGluZU51bWJlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICB2YXIgbGluZU51bWJlciA9IGFyZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5l
TnVtYmVyOwogICAgICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyID09IGspIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVt
YmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciAr
ICJdXG4iOyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAi
VGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3Rh
cnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9u
U3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOyAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBG
YWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4i
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGFy
ZWEyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyZWEyIik7CiAgICAgICAgICAgICBhcmVh
Mi5mb2N1cygpOwotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIKKyAgICAgICAg
ICAgIGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gMDsKKyAgICAgICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gYXJlYTFBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7CiAgICAgICAgICAg
ICByZXN1bHQuaW5uZXJUZXh0ICs9ICJOb3QgZm9jdXNlZCBvbiB0ZXh0IGFyZWEgbGluZSBudW1i
ZXI6ICIgKyBsaW5lTnVtYmVyICsgIlxuIjsKICAgICAgICAgfQogICAgIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114536</attachid>
            <date>2011-11-10 12:05:30 -0800</date>
            <delta_ts>2011-11-10 12:09:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111111070527.patch</filename>
            <type>text/plain</type>
            <size>6936</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDZmZGNlOWE3MTY0N2Jh
MDc1ZGE1ODc0YzA5MDU2MmE0ZDg2M2JjLi4zYTgxMjQwMmI0ZTE2MmU2OWM1ZDJkYjBiYTdlODAz
NTQ0NjNlOTkyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDEgIEFsaWNl
IEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUg
QWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNs
ZWFyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtY29ycmVj
dC1saW5lLW51bWJlci5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZUZvclBvc2l0aW9uKToKKwogMjAxMS0xMS0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBbQ2FuQmVDb25zdHJ1Y3RlZF0gSURMIHdpdGgg
W0NvbnN0cnVjdG9yXSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDE1YTY5MWNmYmRlOWI0ZTVjM2JkNDMxNTE0
NGUzMjg5ZGYwYjA2MmEuLmI2OTIxNDgwODE3N2UwMDYzYjBhYjIxYjUzZjEwNGYwNDkwZWY2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtOTQyLDIxICs5NDIsMzAgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnMK
ICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIC8vIElmIHRoaXMgQWNjZXNzaWJpbGl0eU9iamVj
dCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgRE9NIG5vZGUsIHJldHVybiAtMS4KKyAgICBp
ZiAoIW5vZGUoKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLy8gSWYgdGhlIHBvc2l0aW9u
IGlzIG5vdCBpbiB0aGUgc2FtZSBlZGl0YWJsZSByZWdpb24gYXMgdGhpcyBBWCBvYmplY3QsIHJl
dHVybiAtMS4KKyAgICBOb2RlKiBjb250YWluZXJOb2RlID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZh
bGVudCgpLmNvbnRhaW5lck5vZGUoKTsKKyAgICBpZiAoIWNvbnRhaW5lck5vZGUtPmNvbnRhaW5z
SW5jbHVkaW5nU2hhZG93RE9NKG5vZGUoKSkgJiYgIW5vZGUoKS0+Y29udGFpbnNJbmNsdWRpbmdT
aGFkb3dET00oY29udGFpbmVyTm9kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGludCBs
aW5lQ291bnQgPSAtMTsKICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFZpc2libGVQb3MgPSB2
aXNpYmxlUG9zOwogICAgIFZpc2libGVQb3NpdGlvbiBzYXZlZFZpc2libGVQb3M7CiAKICAgICAv
LyBtb3ZlIHVwIHVudGlsIHdlIGdldCB0byB0aGUgdG9wCiAgICAgLy8gRklYTUU6IFRoaXMgb25s
eSB0YWtlcyB1cyB0byB0aGUgdG9wIG9mIHRoZSByb290RWRpdGFibGVFbGVtZW50LCBub3QgdGhl
IHRvcCBvZiB0aGUKICAgICAvLyB0b3AgZG9jdW1lbnQuCi0gICAgd2hpbGUgKGN1cnJlbnRWaXNp
YmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2
ZWRWaXNpYmxlUG9zKSkpIHsKLSAgICAgICAgKytsaW5lQ291bnQ7CisgICAgZG8gewogICAgICAg
ICBzYXZlZFZpc2libGVQb3MgPSBjdXJyZW50VmlzaWJsZVBvczsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZWaXNpYmxlUG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24oY3VycmVudFZpc2li
bGVQb3MsIDApOwogICAgICAgICBjdXJyZW50VmlzaWJsZVBvcyA9IHByZXZWaXNpYmxlUG9zOwot
ICAgIH0KKyAgICAgICAgKytsaW5lQ291bnQ7CisgICAgfSAgd2hpbGUgKGN1cnJlbnRWaXNpYmxl
UG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2ZWRW
aXNpYmxlUG9zKSkpOwogCi0gICAgcmV0dXJuIGxpbmVDb3VudCAtIDE7CisgICAgcmV0dXJuIGxp
bmVDb3VudDsKIH0KIAogLy8gTk9URTogQ29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgdXRpbGl0eSBt
ZXRob2QgYXMgQVggQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IGQx
MjIyYThiNGVjYmI4NTUzOTBmNjgzYjEzYmExNTQzY2RkZTMxMDEuLjVhZjk2ZmIwYjI5ZjQ1YmMw
NDUyOGIxODlmYmY2Njg1N2ZjYjM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tCkBAIC0xODg4LDcgKzE4ODgsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNT
dHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgICAgICAgICAvLyBpZiBzZWxlY3Rp
b25FbmQgPiAwLCB0aGVuIHRoZXJlIGlzIHNlbGVjdGVkIHRleHQgYW5kIHRoaXMgcXVlc3Rpb24g
c2hvdWxkIG5vdCBiZSBhbnN3ZXJlZAogICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3
b3JkRmllbGQoKSB8fCBtX29iamVjdC0+c2VsZWN0aW9uRW5kKCkgPiAwKQogICAgICAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IG1fb2JqZWN0LT5s
aW5lRm9yUG9zaXRpb24obV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KG1fb2JqZWN0
LT5zZWxlY3Rpb25TdGFydCgpLCB0cnVlKSk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmb2N1c2VkT2JqZWN0ID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUobV9vYmplY3QtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVyKCkpOworICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGZvY3VzZWRQb3NpdGlvbiA9IGZvY3VzZWRPYmplY3Qt
PnZpc2libGVQb3NpdGlvbkZvckluZGV4KGZvY3VzZWRPYmplY3QtPnNlbGVjdGlvblN0YXJ0KCks
IHRydWUpOworICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBtX29iamVjdC0+bGluZUZvclBv
c2l0aW9uKGZvY3VzZWRQb3NpdGlvbik7CiAgICAgICAgICAgICBpZiAobGluZU51bWJlciA8IDAp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpsaW5lTnVtYmVyXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZTYxZGVkNWRkMmIxYzMyZGFh
OGM1MWNiMzlmMDY2Zjc3NWEzYjhhLi5iYmQ5MzBjODM3YjI5NDA0MGFhMGIzNDhjNDZiZmEzNzQ2
OGJlZjBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMDEgIEFsaWNlIEJveGhhbGwg
IDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUgQWNjZXNzaWJp
bGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNsZWFyZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sOgorCiAyMDExLTEx
LTA5ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKCkgZm9yIE1hYyBsYXlvdXRUZXN0
Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJl
YS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKaW5kZXggYTUw
ZjYzNzI0ZTM5YWIxOGY0N2UyZTUxMzNmOTQ1M2MwNDM1YmRiNS4uNjdkMGNkZjZhYzcxMjg0YzQ3
NDczMDAwZGU2ZjE1MWMzYWQzNWU2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJl
ci5odG1sCkBAIC00LDM5ICs0LDQwIEBACiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPGJvZHk+Ci0gICAgCiAgICAgPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KLSAgICAKICAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTEiIGlkPSJhcmVhMSIgcm93
cz0iNSIgY29scz0iNDAiPgogbGluZSAxCiBsaW5lIDIKIGxpbmUgMwogICAgIDwvdGV4dGFyZWE+
CiAKLSAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTIiIGlkPSJhcmVhMiIgcm93cz0iNSIgY29scz0i
NDAiPjwvdGV4dGFyZWE+Ci0gICAgIAorICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVhMiIgaWQ9ImFy
ZWEyIiByb3dzPSI1IiBjb2xzPSI0MCI+CitsaW5lIDEKKzwvdGV4dGFyZWE+CisKICAgICA8c2Ny
aXB0PgogICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAg
ICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwog
CiAgICAgICAgICAgICB2YXIgYXJlYTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYTEi
KTsKICAgICAgICAgICAgIGFyZWExLmZvY3VzKCk7CisgICAgICAgICAgICB2YXIgYXJlYTFBWFVJ
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogCiAgICAg
ICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgewogICAgICAgICAgICAgICAgIGFy
ZWExLnNlbGVjdGlvblN0YXJ0ID0gKGsqNyk7CiAgICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0
aW9uRW5kID0gKGsqNyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhcmVhMUFYVUlF
bGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKICAgICAgICAgICAgICAgICBpZiAobGlu
ZU51bWJlciA9PSBrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0g
IlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogUGFzcyBbIiArIGFyZWExLnNlbGVjdGlvblN0
YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogUGFz
cyBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjog
RmFpbCBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxu
IjsgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6
IiArIGsgKyAiKSBMaW5lIE51bWJlcjogRmFpbCBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsg
Ii0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIHZhciBhcmVhMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
cmVhMiIpOwogICAgICAgICAgICAgYXJlYTIuZm9jdXMoKTsKLSAgICAgICAgICAgIHZhciBsaW5l
TnVtYmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuaW5zZXJ0aW9u
UG9pbnRMaW5lTnVtYmVyCisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGFyZWExQVhVSUVs
ZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOwogICAgICAgICAgICAgcmVzdWx0LmlubmVy
VGV4dCArPSAiTm90IGZvY3VzZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAiICsgbGluZU51
bWJlciArICJcbiI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114537</attachid>
            <date>2011-11-10 12:09:16 -0800</date>
            <delta_ts>2011-12-08 19:51:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111111070913.patch</filename>
            <type>text/plain</type>
            <size>6873</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDZmZGNlOWE3MTY0N2Jh
MDc1ZGE1ODc0YzA5MDU2MmE0ZDg2M2JjLi4zYTgxMjQwMmI0ZTE2MmU2OWM1ZDJkYjBiYTdlODAz
NTQ0NjNlOTkyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDEgIEFsaWNl
IEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUg
QWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNs
ZWFyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dGJveC1yb2xlLXJlcG9ydHMtY29ycmVj
dC1saW5lLW51bWJlci5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZUZvclBvc2l0aW9uKToKKwogMjAxMS0xMS0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBbQ2FuQmVDb25zdHJ1Y3RlZF0gSURMIHdpdGgg
W0NvbnN0cnVjdG9yXSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDE1YTY5MWNmYmRlOWI0ZTVjM2JkNDMxNTE0
NGUzMjg5ZGYwYjA2MmEuLmI2OTIxNDgwODE3N2UwMDYzYjBhYjIxYjUzZjEwNGYwNDkwZWY2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtOTQyLDIxICs5NDIsMzAgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnMK
ICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIC8vIElmIHRoaXMgQWNjZXNzaWJpbGl0eU9iamVj
dCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgRE9NIG5vZGUsIHJldHVybiAtMS4KKyAgICBp
ZiAoIW5vZGUoKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLy8gSWYgdGhlIHBvc2l0aW9u
IGlzIG5vdCBpbiB0aGUgc2FtZSBlZGl0YWJsZSByZWdpb24gYXMgdGhpcyBBWCBvYmplY3QsIHJl
dHVybiAtMS4KKyAgICBOb2RlKiBjb250YWluZXJOb2RlID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZh
bGVudCgpLmNvbnRhaW5lck5vZGUoKTsKKyAgICBpZiAoIWNvbnRhaW5lck5vZGUtPmNvbnRhaW5z
SW5jbHVkaW5nU2hhZG93RE9NKG5vZGUoKSkgJiYgIW5vZGUoKS0+Y29udGFpbnNJbmNsdWRpbmdT
aGFkb3dET00oY29udGFpbmVyTm9kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGludCBs
aW5lQ291bnQgPSAtMTsKICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFZpc2libGVQb3MgPSB2
aXNpYmxlUG9zOwogICAgIFZpc2libGVQb3NpdGlvbiBzYXZlZFZpc2libGVQb3M7CiAKICAgICAv
LyBtb3ZlIHVwIHVudGlsIHdlIGdldCB0byB0aGUgdG9wCiAgICAgLy8gRklYTUU6IFRoaXMgb25s
eSB0YWtlcyB1cyB0byB0aGUgdG9wIG9mIHRoZSByb290RWRpdGFibGVFbGVtZW50LCBub3QgdGhl
IHRvcCBvZiB0aGUKICAgICAvLyB0b3AgZG9jdW1lbnQuCi0gICAgd2hpbGUgKGN1cnJlbnRWaXNp
YmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2
ZWRWaXNpYmxlUG9zKSkpIHsKLSAgICAgICAgKytsaW5lQ291bnQ7CisgICAgZG8gewogICAgICAg
ICBzYXZlZFZpc2libGVQb3MgPSBjdXJyZW50VmlzaWJsZVBvczsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZWaXNpYmxlUG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24oY3VycmVudFZpc2li
bGVQb3MsIDApOwogICAgICAgICBjdXJyZW50VmlzaWJsZVBvcyA9IHByZXZWaXNpYmxlUG9zOwot
ICAgIH0KKyAgICAgICAgKytsaW5lQ291bnQ7CisgICAgfSAgd2hpbGUgKGN1cnJlbnRWaXNpYmxl
UG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2ZWRW
aXNpYmxlUG9zKSkpOwogCi0gICAgcmV0dXJuIGxpbmVDb3VudCAtIDE7CisgICAgcmV0dXJuIGxp
bmVDb3VudDsKIH0KIAogLy8gTk9URTogQ29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgdXRpbGl0eSBt
ZXRob2QgYXMgQVggQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IGQx
MjIyYThiNGVjYmI4NTUzOTBmNjgzYjEzYmExNTQzY2RkZTMxMDEuLjVhZjk2ZmIwYjI5ZjQ1YmMw
NDUyOGIxODlmYmY2Njg1N2ZjYjM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tCkBAIC0xODg4LDcgKzE4ODgsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNT
dHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgICAgICAgICAvLyBpZiBzZWxlY3Rp
b25FbmQgPiAwLCB0aGVuIHRoZXJlIGlzIHNlbGVjdGVkIHRleHQgYW5kIHRoaXMgcXVlc3Rpb24g
c2hvdWxkIG5vdCBiZSBhbnN3ZXJlZAogICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3
b3JkRmllbGQoKSB8fCBtX29iamVjdC0+c2VsZWN0aW9uRW5kKCkgPiAwKQogICAgICAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IG1fb2JqZWN0LT5s
aW5lRm9yUG9zaXRpb24obV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KG1fb2JqZWN0
LT5zZWxlY3Rpb25TdGFydCgpLCB0cnVlKSk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmb2N1c2VkT2JqZWN0ID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUobV9vYmplY3QtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCktPnJlbmRlcmVyKCkpOworICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGZvY3VzZWRQb3NpdGlvbiA9IGZvY3VzZWRPYmplY3Qt
PnZpc2libGVQb3NpdGlvbkZvckluZGV4KGZvY3VzZWRPYmplY3QtPnNlbGVjdGlvblN0YXJ0KCks
IHRydWUpOworICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBtX29iamVjdC0+bGluZUZvclBv
c2l0aW9uKGZvY3VzZWRQb3NpdGlvbik7CiAgICAgICAgICAgICBpZiAobGluZU51bWJlciA8IDAp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpsaW5lTnVtYmVyXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZTYxZGVkNWRkMmIxYzMyZGFh
OGM1MWNiMzlmMDY2Zjc3NWEzYjhhLi5iYmQ5MzBjODM3YjI5NDA0MGFhMGIzNDhjNDZiZmEzNzQ2
OGJlZjBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTEtMDEgIEFsaWNlIEJveGhhbGwg
IDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUgQWNjZXNzaWJp
bGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHRvIG1ha2UgdGhlIGxvZ2ljIGNsZWFyZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sOgorCiAyMDExLTEx
LTA5ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKCkgZm9yIE1hYyBsYXlvdXRUZXN0
Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJl
YS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKaW5kZXggYTUw
ZjYzNzI0ZTM5YWIxOGY0N2UyZTUxMzNmOTQ1M2MwNDM1YmRiNS4uYzFmNzc5N2JmM2U0MGQzNmRi
YjUyZjIwZDBmMDA5OGY5MzgxMjRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJl
ci5odG1sCkBAIC00LDkgKzQsNyBAQAogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxib2R5PgotICAgIAogICAgIDxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Ci0gICAgCiAgICAgPHRleHRhcmVhIG5hbWU9ImFyZWExIiBpZD0iYXJlYTEiIHJvd3M9
IjUiIGNvbHM9IjQwIj4KIGxpbmUgMQogbGluZSAyCkBAIC0xNCwyOSArMTIsMzAgQEAgbGluZSAz
CiAgICAgPC90ZXh0YXJlYT4KIAogICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVhMiIgaWQ9ImFyZWEy
IiByb3dzPSI1IiBjb2xzPSI0MCI+PC90ZXh0YXJlYT4KLSAgICAgCisKICAgICA8c2NyaXB0Pgog
ICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwogCiAgICAg
ICAgICAgICB2YXIgYXJlYTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYTEiKTsKICAg
ICAgICAgICAgIGFyZWExLmZvY3VzKCk7CisgICAgICAgICAgICB2YXIgYXJlYTFBWFVJRWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogCiAgICAgICAgICAg
ICBmb3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgewogICAgICAgICAgICAgICAgIGFyZWExLnNl
bGVjdGlvblN0YXJ0ID0gKGsqNyk7CiAgICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0aW9uRW5k
ID0gKGsqNyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7ICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhcmVhMUFYVUlFbGVtZW50
Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKICAgICAgICAgICAgICAgICBpZiAobGluZU51bWJl
ciA9PSBrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6
IiArIGsgKyAiKSBMaW5lIE51bWJlcjogUGFzcyBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsg
Ii0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogUGFzcyBbIiAr
IGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogRmFpbCBb
IiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3Q6IiArIGsg
KyAiKSBMaW5lIE51bWJlcjogRmFpbCBbIiArIGFyZWExLnNlbGVjdGlvblN0YXJ0ICsgIi0+IiAr
IGxpbmVOdW1iZXIgKyAiXVxuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHZhciBhcmVhMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmVhMiIp
OwogICAgICAgICAgICAgYXJlYTIuZm9jdXMoKTsKLSAgICAgICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRM
aW5lTnVtYmVyCisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGFyZWExQVhVSUVsZW1lbnQu
aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOwogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiTm90IGZvY3VzZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAiICsgbGluZU51bWJlciAr
ICJcbiI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118517</attachid>
            <date>2011-12-08 19:51:33 -0800</date>
            <delta_ts>2011-12-11 19:35:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111209145131.patch</filename>
            <type>text/plain</type>
            <size>9324</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY5YjFiOTlmMDEwZmNh
Mjk3ZjdlYWEyODVmZTkzNDA5OGIzOWFjNi4uYzBkZGM0NDM3MGNjZDE4ODcxY2Q3ZGYzNzFjNjQ5
ZWFjZGY1ODlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTA4ICBBbGlj
ZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgQWNjZXNz
aWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBm
b3IgY2FzZXMgd2hlcmUgdGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gdGhlIGN1cnJlbnQgb2Jq
ZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEz
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
XSk6CisKIDIwMTEtMTItMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSIGNoZWNrIGluIGNoZWNrQWNjZXB0Q2hpbGQgc2hv
dWxkIGJlIG9wdGltaXplZCBmb3IgbmV3Q2hpbGQgd2l0aG91dCBjaGlsZHJlbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5k
ZXggOTVlZGU1ZmNiYjZkODQzOTYyNGU2ZGFmZWI1NzM4YTE0NGNmYzM3ZS4uODMzNTllNjQ0ZDBl
ZDY5YzJhMjRlNjFiYzZjMmFmODIxZmNlNDJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC05OTMsMjQgKzk5Mywy
OSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgVgogCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
bGluZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykgY29uc3QK
IHsKLSAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKHZpc2libGVQb3MuaXNOdWxsKCkgfHwgIW5vZGUoKSkKKyAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgLy8gSWYgdGhlIHBvc2l0aW9uIGlzIG5vdCBpbiB0aGUgc2FtZSBlZGl0YWJsZSByZWdp
b24gYXMgdGhpcyBBWCBvYmplY3QsIHJldHVybiAtMS4KKyAgICBOb2RlKiBjb250YWluZXJOb2Rl
ID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKTsKKyAgICBpZiAo
IWNvbnRhaW5lck5vZGUtPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKG5vZGUoKSkgJiYgIW5v
ZGUoKS0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29udGFpbmVyTm9kZSkpCisgICAgICAg
IHJldHVybiAtMTsKIAotICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IDA7CisgICAgaW50IGxpbmVD
b3VudCA9IC0xOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50VmlzaWJsZVBvcyA9IHZpc2li
bGVQb3M7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHNhdmVkVmlzaWJsZVBvczsKIAogICAgIC8vIG1v
dmUgdXAgdW50aWwgd2UgZ2V0IHRvIHRoZSB0b3AKICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHRh
a2VzIHVzIHRvIHRoZSB0b3Agb2YgdGhlIHJvb3RFZGl0YWJsZUVsZW1lbnQsIG5vdCB0aGUgdG9w
IG9mIHRoZQogICAgIC8vIHRvcCBkb2N1bWVudC4KLSAgICB3aGlsZSAoY3VycmVudFZpc2libGVQ
b3MuaXNOb3ROdWxsKCkgJiYgIShpblNhbWVMaW5lKGN1cnJlbnRWaXNpYmxlUG9zLCBzYXZlZFZp
c2libGVQb3MpKSkgewotICAgICAgICArK2xpbmVDb3VudDsKKyAgICBkbyB7CiAgICAgICAgIHNh
dmVkVmlzaWJsZVBvcyA9IGN1cnJlbnRWaXNpYmxlUG9zOwogICAgICAgICBWaXNpYmxlUG9zaXRp
b24gcHJldlZpc2libGVQb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlvbihjdXJyZW50VmlzaWJsZVBv
cywgMCk7CiAgICAgICAgIGN1cnJlbnRWaXNpYmxlUG9zID0gcHJldlZpc2libGVQb3M7Ci0gICAg
fQorICAgICAgICArK2xpbmVDb3VudDsKKyAgICB9ICB3aGlsZSAoY3VycmVudFZpc2libGVQb3Mu
aXNOb3ROdWxsKCkgJiYgIShpblNhbWVMaW5lKGN1cnJlbnRWaXNpYmxlUG9zLCBzYXZlZFZpc2li
bGVQb3MpKSk7CiAKLSAgICByZXR1cm4gbGluZUNvdW50IC0gMTsKKyAgICByZXR1cm4gbGluZUNv
dW50OwogfQogCiAvLyBOT1RFOiBDb25zaWRlciBwcm92aWRpbmcgdGhpcyB1dGlsaXR5IG1ldGhv
ZCBhcyBBWCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXggODQ1ZTgx
ZmU2Y2JjMWNmMmJiN2ZmMTlmMDk3NTJiOWFlMGUzYWNiMy4uZmU1M2Q0OWQ2YWU2MzU1ZTUxY2Q2
NjI2ZWEwMzk3MDA3YmFmN2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0K
QEAgLTE4ODksOSArMTg4OSwxNiBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJp
bmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgICAgICAgICAvLyBpZiBzZWxlY3Rpb25F
bmQgPiAwLCB0aGVuIHRoZXJlIGlzIHNlbGVjdGVkIHRleHQgYW5kIHRoaXMgcXVlc3Rpb24gc2hv
dWxkIG5vdCBiZSBhbnN3ZXJlZAogICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3Jk
RmllbGQoKSB8fCBtX29iamVjdC0+c2VsZWN0aW9uRW5kKCkgPiAwKQogICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IG1fb2JqZWN0LT5saW5l
Rm9yUG9zaXRpb24obV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KG1fb2JqZWN0LT5z
ZWxlY3Rpb25TdGFydCgpLCB0cnVlKSk7CisKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGZvY3VzZWRPYmplY3QgPSBtX29iamVjdC0+Zm9jdXNlZFVJRWxlbWVudCgpOworICAgICAg
ICAgICAgaWYgKGZvY3VzZWRPYmplY3QgIT0gbV9vYmplY3QpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGZvY3VzZWRQb3NpdGlvbiA9
IGZvY3VzZWRPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KGZvY3VzZWRPYmplY3QtPnNl
bGVjdGlvblN0YXJ0KCksIHRydWUpOworICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBtX29i
amVjdC0+bGluZUZvclBvc2l0aW9uKGZvY3VzZWRQb3NpdGlvbik7CiAgICAgICAgICAgICBpZiAo
bGluZU51bWJlciA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OmxpbmVOdW1iZXJdOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDUwYmZkYWI2MDRjNzE2MGRhYzQ0ZjhmYTg2OTQzNjlhOTQxM2E0M2Iu
LmI2NmY4M2M3MjhiNGYxNmE3NjQxY2I1NDQ1MzVjZDZkZDE4ODM1N2MgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMS0xMi0wOCAgQWxpY2UgQm94aGFsbCAgPGFib3hoYWxsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBNYWtlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbiBy
ZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgZm9yIGNhc2VzIHdoZXJlIHRoZSBwb3NpdGlvbiBpcyBu
b3Qgd2l0aGluIHRoZSBjdXJyZW50IG9iamVjdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1w
b2ludC1saW5lLW51bWJlci5odG1sOgorCiAyMDExLTEyLTA0ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIG9ic29sZXRlIGV4cGVjdGVkIHJlc3VsdHMg
dGhhdCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgd2hlbiBjb252ZXJ0aW5nIHRvIGEgcmVmIHRl
c3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2Vy
dGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbAppbmRleCBhNTBmNjM3MjRl
MzlhYjE4ZjQ3ZTJlNTEzM2Y5NDUzYzA0MzViZGI1Li5lZDc5YzM3OTljYzQzMWU5ZTFlYjVjZTBh
OWFkNjExYTAwMmU0NWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwK
QEAgLTQsOSArNCw3IEBACiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKIDwvc2NyaXB0PgogPGJvZHk+Ci0gICAgCiAgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4K
LSAgICAKICAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTEiIGlkPSJhcmVhMSIgcm93cz0iNSIgY29s
cz0iNDAiPgogbGluZSAxCiBsaW5lIDIKQEAgLTE0LDMwICsxMiw2NyBAQCBsaW5lIDMKICAgICA8
L3RleHRhcmVhPgogCiAgICAgPHRleHRhcmVhIG5hbWU9ImFyZWEyIiBpZD0iYXJlYTIiIHJvd3M9
IjUiIGNvbHM9IjQwIj48L3RleHRhcmVhPgotICAgICAKKworCisgICAgPGRpdiBpZD0iY29udGVu
dGVkaXRhYmxlLWRpdiIgcm9sZT0idGV4dGJveCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiB0YWJp
bmRleD0iMCI+CisgICAgICA8ZGl2IGlkPSJjb250ZW50ZWRpdGFibGUtbGluZTEiPkxpbmUxPC9k
aXY+CisgICAgICA8dGV4dGFyZWEgaWQ9ImNvbnRlbnRlZGl0YWJsZS1saW5lMiIgcm93cz0iMSIg
Y29scz0iNDAiPkxpbmUyPC90ZXh0YXJlYT4KKyAgICAgIDxkaXYgaWQ9ImNvbnRlbnRlZGl0YWJs
ZS1saW5lMyI+TGluZTM8L2Rpdj4KKyAgICA8L2Rpdj4KICAgICA8c2NyaXB0PgogICAgICAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgICAgICB2YXIgcmVz
dWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwogCiAgICAgICAgICAgICB2
YXIgYXJlYTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYTEiKTsKICAgICAgICAgICAg
IGFyZWExLmZvY3VzKCk7CisgICAgICAgICAgICB2YXIgYXJlYTFBWFVJRWxlbWVudCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSAtMjsKIAotICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCAzOyBrKyspIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgMzsgaysrICkgewogICAgICAgICAgICAg
ICAgIGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gKGsqNyk7CiAgICAgICAgICAgICAgICAgYXJlYTEu
c2VsZWN0aW9uRW5kID0gKGsqNyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVO
dW1iZXI7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGFyZWExQVhV
SUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOwogICAgICAgICAgICAgICAgIGlmIChs
aW5lTnVtYmVyID09IGspIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9u
U3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOyAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBQ
YXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4i
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVy
OiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJd
XG4iOyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVz
dDoiICsgayArICIpIExpbmUgTnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQg
KyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdmFyIGFyZWEyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImFyZWEyIik7CiAgICAgICAgICAgICBhcmVhMi5mb2N1cygpOwotICAgICAgICAgICAgdmFyIGxp
bmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRp
b25Qb2ludExpbmVOdW1iZXIKKyAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBhcmVhMUFYVUlFbGVt
ZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gIk5vdCBmb2N1c2VkIG9uIHRleHQgYXJlYSBsaW5lIG51bWJlcjogIiArIGxpbmVOdW1i
ZXIgKyAiXG4iOworCisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlRGl2ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1kaXYiKTsKKyAgICAgICAgICAgIGNv
bnRlbnRlZGl0YWJsZURpdi5mb2N1cygpOworICAgICAgICAgICAgdmFyIGNvbnRlbnRlZGl0YWJs
ZUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisK
KyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5lMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTEiKTsKKyAgICAgICAgICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUxLCAxLCBjb250
ZW50ZWRpdGFibGVMaW5lMSwgMSk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJT
ZWxlY3Rpb24gaW4gbGluZSAxIG9mIGNvbnRlbnRlZGl0YWJsZSBsaW5lbnVtYmVyOiI7CisgICAg
ICAgICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRhYmxlQVhVSUVsZW1lbnQuaW5zZXJ0aW9u
UG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiICIgKyBs
aW5lTnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAgdmFyIGNvbnRlbnRlZGl0YWJsZUxpbmUy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1saW5lMiIpOworICAg
ICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0aW9uU3RhcnQgPSAxOworICAgICAg
ICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0aW9uRW5kID0gMTsKKyAgICAgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gIlNlbGVjdGlvbiBpbiBlbWJlZGRlZCB0ZXh0YXJlYSBvZiBj
b250ZW50ZWRpdGFibGUgbGluZW51bWJlcjoiOworICAgICAgICAgICAgbGluZU51bWJlciA9IGNv
bnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKKyAgICAg
ICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiAiICsgbGluZU51bWJlciArICJcbiI7CisKKyAg
ICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5lMyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTMiKTsKKyAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUzLCAxLCBjb250ZW50
ZWRpdGFibGVMaW5lMywgMSk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJTZWxl
Y3Rpb24gaW4gbGluZSAzIG9mIGNvbnRlbnRlZGl0YWJsZSBsaW5lbnVtYmVyOiI7CisgICAgICAg
ICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRhYmxlQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9p
bnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiICIgKyBsaW5l
TnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuZm9jdXMo
KTsKKyAgICAgICAgICAgIHZhciB0ZXh0YXJlYUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9
ICJMaW5lIG51bWJlciBmb3IgZW1iZWRkZWQgdGV4dGFyZWE6IjsKKyAgICAgICAgICAgIGxpbmVO
dW1iZXIgPSB0ZXh0YXJlYUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKKyAg
ICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiAiICsgbGluZU51bWJlciArICJcbiI7CiAg
ICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118724</attachid>
            <date>2011-12-11 19:35:36 -0800</date>
            <delta_ts>2011-12-12 14:25:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111212143533.patch</filename>
            <type>text/plain</type>
            <size>10146</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYTdlMGJmMjM4YzhmMzE1NzRiMDQyMDVkOGM1YWJhMDhiOWE1NDdkLi4x
OTI2NGU1NWY0NTQyY2NhNjg5MTJjNmRjZTZmYmEzOGM4NjgxYTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMTItMTEgIEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgTWFrZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRp
b24gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBjYXNlcyB3aGVyZSB0aGUgcG9zaXRpb24g
aXMgbm90IHdpdGhpbiB0aGUgY3VycmVudCBvYmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpdKToKKwogMjAxMS0xMi0xMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFRyeSB0byBmaXggdGhlIFF0IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMzBiZDMw
NDJhYTA1OGU5ZmVhNDcxZTdjMTRmNTVmMThkNmEwZjNmZi4uZjYwNWZmZmU1Y2Y2NWJiODc5NzNh
ZGRjMmRlMjc5MGU3MjBlNWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMDIzLDI0ICsxMDIzLDI5IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlPYmpl
Y3RGb3JQb3NpdGlvbihjb25zdCBWCiAKIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBjb25zdAogewotICAg
IGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAodmlz
aWJsZVBvcy5pc051bGwoKSB8fCAhbm9kZSgpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAv
LyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBzYW1lIGVkaXRhYmxlIHJlZ2lvbiBhcyB0
aGlzIEFYIG9iamVjdCwgcmV0dXJuIC0xLgorICAgIE5vZGUqIGNvbnRhaW5lck5vZGUgPSB2aXNp
YmxlUG9zLmRlZXBFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpOworICAgIGlmICghY29udGFp
bmVyTm9kZS0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00obm9kZSgpKSAmJiAhbm9kZSgpLT5j
b250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShjb250YWluZXJOb2RlKSkKKyAgICAgICAgcmV0dXJu
IC0xOwogCi0gICAgdW5zaWduZWQgbGluZUNvdW50ID0gMDsKKyAgICBpbnQgbGluZUNvdW50ID0g
LTE7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsK
ICAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9zOwogCiAgICAgLy8gbW92ZSB1cCB1
bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcAogICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgdGFrZXMgdXMg
dG8gdGhlIHRvcCBvZiB0aGUgcm9vdEVkaXRhYmxlRWxlbWVudCwgbm90IHRoZSB0b3Agb2YgdGhl
CiAgICAgLy8gdG9wIGRvY3VtZW50LgotICAgIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5pc05v
dE51bGwoKSAmJiAhKGluU2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJsZVBv
cykpKSB7Ci0gICAgICAgICsrbGluZUNvdW50OworICAgIGRvIHsKICAgICAgICAgc2F2ZWRWaXNp
YmxlUG9zID0gY3VycmVudFZpc2libGVQb3M7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2
VmlzaWJsZVBvcyA9IHByZXZpb3VzTGluZVBvc2l0aW9uKGN1cnJlbnRWaXNpYmxlUG9zLCAwKTsK
ICAgICAgICAgY3VycmVudFZpc2libGVQb3MgPSBwcmV2VmlzaWJsZVBvczsKLSAgICB9CisgICAg
ICAgICsrbGluZUNvdW50OworICAgIH0gIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5pc05vdE51
bGwoKSAmJiAhKGluU2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJsZVBvcykp
KTsKIAotICAgIHJldHVybiBsaW5lQ291bnQgLSAxOworICAgIHJldHVybiBsaW5lQ291bnQ7CiB9
CiAKIC8vIE5PVEU6IENvbnNpZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkgbWV0aG9kIGFzIEFY
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBhNjA0YWU2NDc4YmQy
MjQ0NWZkMTY4YzM1OTJhMGMxZWVhNzJkZmJmLi45MTk4MzZjODEzNmUzZDkyZjlkMGFhNDA5NzFl
NmIwYTgwZjFlYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtMTg4
OSw5ICsxODg5LDE2IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nl
c3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICAgICAgICAgIC8vIGlmIHNlbGVjdGlvbkVuZCA+IDAs
IHRoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgdGV4dCBhbmQgdGhpcyBxdWVzdGlvbiBzaG91bGQgbm90
IGJlIGFuc3dlcmVkCiAgICAgICAgICAgICBpZiAobV9vYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgp
IHx8IG1fb2JqZWN0LT5zZWxlY3Rpb25FbmQoKSA+IDApCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gbV9vYmplY3QtPmxpbmVGb3JQb3Np
dGlvbihtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgobV9vYmplY3QtPnNlbGVjdGlv
blN0YXJ0KCksIHRydWUpKTsKKworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZm9j
dXNlZE9iamVjdCA9IG1fb2JqZWN0LT5mb2N1c2VkVUlFbGVtZW50KCk7CisgICAgICAgICAgICBp
ZiAoZm9jdXNlZE9iamVjdCAhPSBtX29iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmls
OworCisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZm9jdXNlZFBvc2l0aW9uID0gZm9jdXNl
ZE9iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoZm9jdXNlZE9iamVjdC0+c2VsZWN0aW9u
U3RhcnQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IG1fb2JqZWN0LT5s
aW5lRm9yUG9zaXRpb24oZm9jdXNlZFBvc2l0aW9uKTsKICAgICAgICAgICAgIGlmIChsaW5lTnVt
YmVyIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCiAgICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZU51bWJlcl07CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWJjNzFiNjFhZDU2MzMyNmJmYWU4ZGNkM2FiZDEwNGU1MzZiZDc4Yy4uYTlmZWQ2
NGU5YWVjMTA3OTBhYjIxNGQ5MDI3YTdkMzg3N2I2YjRiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTEyLTExICBBbGljZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIE1ha2UgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHJldHVybiB0
aGUgY29ycmVjdCB2YWx1ZSBmb3IgY2FzZXMgd2hlcmUgdGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRo
aW4gdGhlIGN1cnJlbnQgb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzEzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxp
bmUtbnVtYmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RleHRhcmVh
LWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sOgorCiAyMDExLTEyLTExICBBbmRyZWFz
IEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBXSzIvTmV0c2NhcGVQbHVnaW46
IEluY29ycmVjdCBtb3VzZSBldmVudCBjb29yZGluYXRlcyB3aGVuIGZyYW1lU2NhbGVGYWN0b3Ig
IT0gMS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5z
ZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4
dAppbmRleCBhNmZiNTRjYmNhM2E1ZGNiN2Q3MjMxYzcyZTg4ZGYxNjVlYjdiYzcwLi5hZTAxMjU2
NmFjZDc3ZGRmYWJiNWFhYTNmZDllNWFjYWU1ZWI0OTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRp
b24tcG9pbnQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0CkBAIC0yLDQgKzIsMTEgQEAgVGVzdDow
KSBMaW5lIE51bWJlcjogUGFzcyBbMC0+MF0KIFRlc3Q6MSkgTGluZSBOdW1iZXI6IFBhc3MgWzct
PjFdCiBUZXN0OjIpIExpbmUgTnVtYmVyOiBQYXNzIFsxNC0+Ml0KIE5vdCBmb2N1c2VkIG9uIHRl
eHQgYXJlYSBsaW5lIG51bWJlcjogLTEKK1NlbGVjdGlvbiBpbiBsaW5lIDEgb2YgY29udGVudGVk
aXRhYmxlIGxpbmVudW1iZXI6IDAKK1NlbGVjdGlvbiBpbiBlbWJlZGRlZCB0ZXh0YXJlYSBvZiBj
b250ZW50ZWRpdGFibGUgbGluZW51bWJlcjogLTEKK1NlbGVjdGlvbiBpbiBsaW5lIDMgb2YgY29u
dGVudGVkaXRhYmxlIGxpbmVudW1iZXI6IDIKK0xpbmUgbnVtYmVyIGZvciBlbWJlZGRlZCB0ZXh0
YXJlYTogMAogICAKK0xpbmUxCisKK0xpbmUzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1i
ZXIuaHRtbAppbmRleCBhNTBmNjM3MjRlMzlhYjE4ZjQ3ZTJlNTEzM2Y5NDUzYzA0MzViZGI1Li5l
ZDc5YzM3OTljYzQzMWU5ZTFlYjVjZTBhOWFkNjExYTAwMmU0NWI3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJl
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9u
LXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKQEAgLTQsOSArNCw3IEBACiAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPGJvZHk+Ci0gICAgCiAgICAg
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KLSAgICAKICAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTEi
IGlkPSJhcmVhMSIgcm93cz0iNSIgY29scz0iNDAiPgogbGluZSAxCiBsaW5lIDIKQEAgLTE0LDMw
ICsxMiw2NyBAQCBsaW5lIDMKICAgICA8L3RleHRhcmVhPgogCiAgICAgPHRleHRhcmVhIG5hbWU9
ImFyZWEyIiBpZD0iYXJlYTIiIHJvd3M9IjUiIGNvbHM9IjQwIj48L3RleHRhcmVhPgotICAgICAK
KworCisgICAgPGRpdiBpZD0iY29udGVudGVkaXRhYmxlLWRpdiIgcm9sZT0idGV4dGJveCIgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIiB0YWJpbmRleD0iMCI+CisgICAgICA8ZGl2IGlkPSJjb250ZW50
ZWRpdGFibGUtbGluZTEiPkxpbmUxPC9kaXY+CisgICAgICA8dGV4dGFyZWEgaWQ9ImNvbnRlbnRl
ZGl0YWJsZS1saW5lMiIgcm93cz0iMSIgY29scz0iNDAiPkxpbmUyPC90ZXh0YXJlYT4KKyAgICAg
IDxkaXYgaWQ9ImNvbnRlbnRlZGl0YWJsZS1saW5lMyI+TGluZTM8L2Rpdj4KKyAgICA8L2Rpdj4K
ICAgICA8c2NyaXB0PgogICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpOwogCiAgICAgICAgICAgICB2YXIgYXJlYTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYXJlYTEiKTsKICAgICAgICAgICAgIGFyZWExLmZvY3VzKCk7CisgICAgICAgICAgICB2YXIg
YXJlYTFBWFVJRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
OworICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSAtMjsKIAotICAgICAgICAgICAgZm9yICh2
YXIgayA9IDA7IGsgPCAzOyBrKyspIHsKKyAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwg
MzsgaysrICkgewogICAgICAgICAgICAgICAgIGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gKGsqNyk7
CiAgICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0aW9uRW5kID0gKGsqNyk7Ci0gICAgICAgICAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7ICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgbGluZU51bWJlciA9IGFyZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVy
OwogICAgICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyID09IGspIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBQ
YXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4i
OyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoi
ICsgayArICIpIExpbmUgTnVtYmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAi
LT4iICsgbGluZU51bWJlciArICJdXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVz
dDoiICsgayArICIpIExpbmUgTnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQg
KyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBGYWlsIFsi
ICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGFyZWEyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyZWEyIik7CiAgICAgICAgICAgICBhcmVhMi5mb2N1
cygpOwotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIKKyAgICAgICAgICAgIGxp
bmVOdW1iZXIgPSBhcmVhMUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKICAg
ICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIk5vdCBmb2N1c2VkIG9uIHRleHQgYXJlYSBs
aW5lIG51bWJlcjogIiArIGxpbmVOdW1iZXIgKyAiXG4iOworCisgICAgICAgICAgICB2YXIgY29u
dGVudGVkaXRhYmxlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJs
ZS1kaXYiKTsKKyAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZURpdi5mb2N1cygpOworICAgICAg
ICAgICAgdmFyIGNvbnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVM
aW5lMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTEiKTsK
KyAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRl
bnRlZGl0YWJsZUxpbmUxLCAxLCBjb250ZW50ZWRpdGFibGVMaW5lMSwgMSk7CisgICAgICAgICAg
ICByZXN1bHQuaW5uZXJUZXh0ICs9ICJTZWxlY3Rpb24gaW4gbGluZSAxIG9mIGNvbnRlbnRlZGl0
YWJsZSBsaW5lbnVtYmVyOiI7CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRh
YmxlQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCArPSAiICIgKyBsaW5lTnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAg
dmFyIGNvbnRlbnRlZGl0YWJsZUxpbmUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRl
bnRlZGl0YWJsZS1saW5lMiIpOworICAgICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuc2Vs
ZWN0aW9uU3RhcnQgPSAxOworICAgICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0
aW9uRW5kID0gMTsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlNlbGVjdGlvbiBp
biBlbWJlZGRlZCB0ZXh0YXJlYSBvZiBjb250ZW50ZWRpdGFibGUgbGluZW51bWJlcjoiOworICAg
ICAgICAgICAgbGluZU51bWJlciA9IGNvbnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlv
blBvaW50TGluZU51bWJlcjsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiAiICsg
bGluZU51bWJlciArICJcbiI7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5l
MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTMiKTsKKyAg
ICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRl
ZGl0YWJsZUxpbmUzLCAxLCBjb250ZW50ZWRpdGFibGVMaW5lMywgMSk7CisgICAgICAgICAgICBy
ZXN1bHQuaW5uZXJUZXh0ICs9ICJTZWxlY3Rpb24gaW4gbGluZSAzIG9mIGNvbnRlbnRlZGl0YWJs
ZSBsaW5lbnVtYmVyOiI7CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRhYmxl
QVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiICIgKyBsaW5lTnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAgY29u
dGVudGVkaXRhYmxlTGluZTIuZm9jdXMoKTsKKyAgICAgICAgICAgIHZhciB0ZXh0YXJlYUFYVUlF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJMaW5lIG51bWJlciBmb3IgZW1iZWRkZWQgdGV4dGFy
ZWE6IjsKKyAgICAgICAgICAgIGxpbmVOdW1iZXIgPSB0ZXh0YXJlYUFYVUlFbGVtZW50Lmluc2Vy
dGlvblBvaW50TGluZU51bWJlcjsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiAi
ICsgbGluZU51bWJlciArICJcbiI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118847</attachid>
            <date>2011-12-12 14:26:07 -0800</date>
            <delta_ts>2011-12-13 16:51:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111213092605.patch</filename>
            <type>text/plain</type>
            <size>10128</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxYTk1MTNhZTYxZWNkNTQ5OWJjZGJmODYwN2E0ZGUzOWM3OTllYmZhLi43
ZTJlOTVkZTg3MzVkNjVkNjgzYmUyMmJkOTZjZGY1MmE4N2EyNjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMTItMTEgIEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgTWFrZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRp
b24gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBjYXNlcyB3aGVyZSB0aGUgcG9zaXRpb24g
aXMgbm90IHdpdGhpbiB0aGUgY3VycmVudCBvYmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpdKToKKwogMjAxMS0xMi0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaGFyZSBjb2RlIHRoYXQgY2hlY2tzIGZvciBtYXRjaGluZyBzZXRz
IG9mIHRyYW5zZm9ybSBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAzMGJkMzA0MmFhMDU4ZTlmZWE0
NzFlN2MxNGY1NWYxOGQ2YTBmM2ZmLi5mNjA1ZmZmZTVjZjY1YmI4Nzk3M2FkZGMyZGUyNzkwZTcy
MGU1YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKQEAgLTEwMjMsMjQgKzEwMjMsMjkgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9u
KGNvbnN0IFYKIAogaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0CiB7Ci0gICAgaWYgKHZpc2libGVQ
b3MuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICh2aXNpYmxlUG9zLmlzTnVs
bCgpIHx8ICFub2RlKCkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8vIElmIHRoZSBwb3Np
dGlvbiBpcyBub3QgaW4gdGhlIHNhbWUgZWRpdGFibGUgcmVnaW9uIGFzIHRoaXMgQVggb2JqZWN0
LCByZXR1cm4gLTEuCisgICAgTm9kZSogY29udGFpbmVyTm9kZSA9IHZpc2libGVQb3MuZGVlcEVx
dWl2YWxlbnQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXJOb2RlLT5jb250
YWluc0luY2x1ZGluZ1NoYWRvd0RPTShub2RlKCkpICYmICFub2RlKCktPmNvbnRhaW5zSW5jbHVk
aW5nU2hhZG93RE9NKGNvbnRhaW5lck5vZGUpKQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIGludCBsaW5lQ291bnQgPSAtMTsKICAgICBWaXNp
YmxlUG9zaXRpb24gY3VycmVudFZpc2libGVQb3MgPSB2aXNpYmxlUG9zOwogICAgIFZpc2libGVQ
b3NpdGlvbiBzYXZlZFZpc2libGVQb3M7CiAKICAgICAvLyBtb3ZlIHVwIHVudGlsIHdlIGdldCB0
byB0aGUgdG9wCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSB0YWtlcyB1cyB0byB0aGUgdG9wIG9m
IHRoZSByb290RWRpdGFibGVFbGVtZW50LCBub3QgdGhlIHRvcCBvZiB0aGUKICAgICAvLyB0b3Ag
ZG9jdW1lbnQuCi0gICAgd2hpbGUgKGN1cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEo
aW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpIHsKLSAgICAg
ICAgKytsaW5lQ291bnQ7CisgICAgZG8gewogICAgICAgICBzYXZlZFZpc2libGVQb3MgPSBjdXJy
ZW50VmlzaWJsZVBvczsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZWaXNpYmxlUG9zID0g
cHJldmlvdXNMaW5lUG9zaXRpb24oY3VycmVudFZpc2libGVQb3MsIDApOwogICAgICAgICBjdXJy
ZW50VmlzaWJsZVBvcyA9IHByZXZWaXNpYmxlUG9zOwotICAgIH0KKyAgICAgICAgKytsaW5lQ291
bnQ7CisgICAgfSAgd2hpbGUgKGN1cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5T
YW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpOwogCi0gICAgcmV0
dXJuIGxpbmVDb3VudCAtIDE7CisgICAgcmV0dXJuIGxpbmVDb3VudDsKIH0KIAogLy8gTk9URTog
Q29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgdXRpbGl0eSBtZXRob2QgYXMgQVggQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IGE2MDRhZTY0NzhiZDIyNDQ1ZmQxNjhjMzU5
MmEwYzFlZWE3MmRmYmYuLjkxOTgzNmM4MTM2ZTNkOTJmOWQwYWE0MDk3MWU2YjBhODBmMWVhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC0xODg5LDkgKzE4ODksMTYg
QEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xl
IHZhbHVlKQogICAgICAgICAgICAgLy8gaWYgc2VsZWN0aW9uRW5kID4gMCwgdGhlbiB0aGVyZSBp
cyBzZWxlY3RlZCB0ZXh0IGFuZCB0aGlzIHF1ZXN0aW9uIHNob3VsZCBub3QgYmUgYW5zd2VyZWQK
ICAgICAgICAgICAgIGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkgfHwgbV9vYmplY3Qt
PnNlbGVjdGlvbkVuZCgpID4gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICAgICAgaW50IGxpbmVOdW1iZXIgPSBtX29iamVjdC0+bGluZUZvclBvc2l0aW9uKG1fb2JqZWN0
LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChtX29iamVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1
ZSkpOworCisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkT2JqZWN0ID0g
bV9vYmplY3QtPmZvY3VzZWRVSUVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChmb2N1c2VkT2Jq
ZWN0ICE9IG1fb2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBmb2N1c2VkUG9zaXRpb24gPSBmb2N1c2VkT2JqZWN0LT52aXNp
YmxlUG9zaXRpb25Gb3JJbmRleChmb2N1c2VkT2JqZWN0LT5zZWxlY3Rpb25TdGFydCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gbV9vYmplY3QtPmxpbmVGb3JQb3NpdGlv
bihmb2N1c2VkUG9zaXRpb24pOwogICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQogICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CisKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpsaW5lTnVtYmVyXTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZDNk
ZTIyOGEwOTA2N2U1YWI3ZTNiMDJlMmU5MGE2NmU5YWYwNzM3Li45OTNlYWI1ZjFkZjIzYzFhMWVi
NmQ2MTA2MGJhMzkwMWY1ZTBiM2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTEg
IEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24gcmV0dXJuIHRoZSBjb3JyZWN0IHZh
bHVlIGZvciBjYXNlcyB3aGVyZSB0aGUgcG9zaXRpb24gaXMgbm90IHdpdGhpbiB0aGUgY3VycmVu
dCBvYmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBv
aW50LWxpbmUtbnVtYmVyLmh0bWw6CisKIDIwMTEtMTItMTIgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZ2FyZGVuaW5nLiBN
YXJrIGZsYWt5IGNyYXNoaW5nIHRyYW5zaXRpb25zLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9p
bnQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0CmluZGV4IGE2ZmI1NGNiY2EzYTVkY2I3ZDcyMzFj
NzJlODhkZjE2NWViN2JjNzAuLmFlMDEyNTY2YWNkNzdkZGZhYmI1YWFhM2ZkOWU1YWNhZTVlYjQ5
NjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0
aW9uLXBvaW50LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci1leHBlY3RlZC50
eHQKQEAgLTIsNCArMiwxMSBAQCBUZXN0OjApIExpbmUgTnVtYmVyOiBQYXNzIFswLT4wXQogVGVz
dDoxKSBMaW5lIE51bWJlcjogUGFzcyBbNy0+MV0KIFRlc3Q6MikgTGluZSBOdW1iZXI6IFBhc3Mg
WzE0LT4yXQogTm90IGZvY3VzZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAtMQorU2VsZWN0
aW9uIGluIGxpbmUgMSBvZiBjb250ZW50ZWRpdGFibGUgbGluZW51bWJlcjogMAorU2VsZWN0aW9u
IGluIGVtYmVkZGVkIHRleHRhcmVhIG9mIGNvbnRlbnRlZGl0YWJsZSBsaW5lbnVtYmVyOiAtMQor
U2VsZWN0aW9uIGluIGxpbmUgMyBvZiBjb250ZW50ZWRpdGFibGUgbGluZW51bWJlcjogMgorTGlu
ZSBudW1iZXIgZm9yIGVtYmVkZGVkIHRleHRhcmVhOiAwCiAgIAorTGluZTEKKworTGluZTMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBv
aW50LWxpbmUtbnVtYmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVh
LWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCmluZGV4IGE1MGY2MzcyNGUzOWFiMThm
NDdlMmU1MTMzZjk0NTNjMDQzNWJkYjUuLjgzZDBjMGFiNzdjMDcyMjIxNjZjZmE3YWM5ZTg4YThh
ZmUwODZjZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEt
aW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbApAQCAtNCw5
ICs0LDcgQEAKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CiA8Ym9keT4KLSAgICAKICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAgIAog
ICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVhMSIgaWQ9ImFyZWExIiByb3dzPSI1IiBjb2xzPSI0MCI+
CiBsaW5lIDEKIGxpbmUgMgpAQCAtMTQsMzAgKzEyLDY3IEBAIGxpbmUgMwogICAgIDwvdGV4dGFy
ZWE+CiAKICAgICA8dGV4dGFyZWEgbmFtZT0iYXJlYTIiIGlkPSJhcmVhMiIgcm93cz0iNSIgY29s
cz0iNDAiPjwvdGV4dGFyZWE+Ci0gICAgIAorCisKKyAgICA8ZGl2IGlkPSJjb250ZW50ZWRpdGFi
bGUtZGl2IiByb2xlPSJ0ZXh0Ym94IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHRhYmluZGV4PSIw
Ij4KKyAgICAgIDxkaXYgaWQ9ImNvbnRlbnRlZGl0YWJsZS1saW5lMSI+TGluZTE8L2Rpdj4KKyAg
ICAgIDx0ZXh0YXJlYSBpZD0iY29udGVudGVkaXRhYmxlLWxpbmUyIiByb3dzPSIxIiBjb2xzPSI0
MCI+TGluZTI8L3RleHRhcmVhPgorICAgICAgPGRpdiBpZD0iY29udGVudGVkaXRhYmxlLWxpbmUz
Ij5MaW5lMzwvZGl2PgorICAgIDwvZGl2PgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAKICAgICAgICAgICAgIHZhciBhcmVh
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcmVhMSIpOwogICAgICAgICAgICAgYXJlYTEu
Zm9jdXMoKTsKKyAgICAgICAgICAgIHZhciBhcmVhMUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9
IC0yOwogCiAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgewogICAgICAg
ICAgICAgICAgIGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gKGsqNyk7CiAgICAgICAgICAgICAgICAg
YXJlYTEuc2VsZWN0aW9uRW5kID0gKGsqNyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXI7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGFy
ZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOwogICAgICAgICAgICAgICAg
IGlmIChsaW5lTnVtYmVyID09IGspIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVy
VGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBQYXNzIFsiICsgYXJlYTEuc2Vs
ZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOyAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUgTnVt
YmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJlciAr
ICJdXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUg
TnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJl
ciArICJdXG4iOyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiVGVzdDoiICsgayArICIpIExpbmUgTnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9u
U3RhcnQgKyAiLT4iICsgbGluZU51bWJlciArICJdXG4iOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGFyZWEyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImFyZWEyIik7CiAgICAgICAgICAgICBhcmVhMi5mb2N1cygpOwotICAgICAgICAgICAg
dmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5p
bnNlcnRpb25Qb2ludExpbmVOdW1iZXIKKyAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBhcmVhMUFY
VUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsKICAgICAgICAgICAgIHJlc3VsdC5p
bm5lclRleHQgKz0gIk5vdCBmb2N1c2VkIG9uIHRleHQgYXJlYSBsaW5lIG51bWJlcjogIiArIGxp
bmVOdW1iZXIgKyAiXG4iOworCisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlRGl2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1kaXYiKTsKKyAgICAgICAg
ICAgIGNvbnRlbnRlZGl0YWJsZURpdi5mb2N1cygpOworICAgICAgICAgICAgdmFyIGNvbnRlbnRl
ZGl0YWJsZUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5lMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTEiKTsKKyAgICAgICAgICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUxLCAx
LCBjb250ZW50ZWRpdGFibGVMaW5lMSwgMSk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ICs9ICJTZWxlY3Rpb24gaW4gbGluZSAxIG9mIGNvbnRlbnRlZGl0YWJsZSBsaW5lbnVtYmVyOiI7
CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRhYmxlQVhVSUVsZW1lbnQuaW5z
ZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAi
ICIgKyBsaW5lTnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAgdmFyIGNvbnRlbnRlZGl0YWJs
ZUxpbmUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1saW5lMiIp
OworICAgICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0aW9uU3RhcnQgPSAxOwor
ICAgICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0aW9uRW5kID0gMTsKKyAgICAg
ICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlNlbGVjdGlvbiBpbiBlbWJlZGRlZCB0ZXh0YXJl
YSBvZiBjb250ZW50ZWRpdGFibGUgbGluZW51bWJlcjoiOworICAgICAgICAgICAgbGluZU51bWJl
ciA9IGNvbnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsK
KyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiAiICsgbGluZU51bWJlciArICJcbiI7
CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5lMyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTMiKTsKKyAgICAgICAgICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUzLCAxLCBj
b250ZW50ZWRpdGFibGVMaW5lMywgMSk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9
ICJTZWxlY3Rpb24gaW4gbGluZSAzIG9mIGNvbnRlbnRlZGl0YWJsZSBsaW5lbnVtYmVyOiI7Cisg
ICAgICAgICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRhYmxlQVhVSUVsZW1lbnQuaW5zZXJ0
aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiICIg
KyBsaW5lTnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAgY29udGVudGVkaXRhYmxlTGluZTIu
Zm9jdXMoKTsKKyAgICAgICAgICAgIHZhciB0ZXh0YXJlYUFYVUlFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ICs9ICJMaW5lIG51bWJlciBmb3IgZW1iZWRkZWQgdGV4dGFyZWE6IjsKKyAgICAgICAgICAg
IGxpbmVOdW1iZXIgPSB0ZXh0YXJlYUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJl
cjsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiAiICsgbGluZU51bWJlciArICJc
biI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119108</attachid>
            <date>2011-12-13 16:51:21 -0800</date>
            <delta_ts>2011-12-14 20:41:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111214115118.patch</filename>
            <type>text/plain</type>
            <size>10992</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxYTk1MTNhZTYxZWNkNTQ5OWJjZGJmODYwN2E0ZGUzOWM3OTllYmZhLi43
ZTJlOTVkZTg3MzVkNjVkNjgzYmUyMmJkOTZjZGY1MmE4N2EyNjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMTItMTEgIEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgTWFrZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRp
b24gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBjYXNlcyB3aGVyZSB0aGUgcG9zaXRpb24g
aXMgbm90IHdpdGhpbiB0aGUgY3VycmVudCBvYmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbik6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpdKToKKwogMjAxMS0xMi0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaGFyZSBjb2RlIHRoYXQgY2hlY2tzIGZvciBtYXRjaGluZyBzZXRz
IG9mIHRyYW5zZm9ybSBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAzMGJkMzA0MmFhMDU4ZTlmZWE0
NzFlN2MxNGY1NWYxOGQ2YTBmM2ZmLi5mNjA1ZmZmZTVjZjY1YmI4Nzk3M2FkZGMyZGUyNzkwZTcy
MGU1YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKQEAgLTEwMjMsMjQgKzEwMjMsMjkgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9u
KGNvbnN0IFYKIAogaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpIGNvbnN0CiB7Ci0gICAgaWYgKHZpc2libGVQ
b3MuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICh2aXNpYmxlUG9zLmlzTnVs
bCgpIHx8ICFub2RlKCkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8vIElmIHRoZSBwb3Np
dGlvbiBpcyBub3QgaW4gdGhlIHNhbWUgZWRpdGFibGUgcmVnaW9uIGFzIHRoaXMgQVggb2JqZWN0
LCByZXR1cm4gLTEuCisgICAgTm9kZSogY29udGFpbmVyTm9kZSA9IHZpc2libGVQb3MuZGVlcEVx
dWl2YWxlbnQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXJOb2RlLT5jb250
YWluc0luY2x1ZGluZ1NoYWRvd0RPTShub2RlKCkpICYmICFub2RlKCktPmNvbnRhaW5zSW5jbHVk
aW5nU2hhZG93RE9NKGNvbnRhaW5lck5vZGUpKQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB1
bnNpZ25lZCBsaW5lQ291bnQgPSAwOworICAgIGludCBsaW5lQ291bnQgPSAtMTsKICAgICBWaXNp
YmxlUG9zaXRpb24gY3VycmVudFZpc2libGVQb3MgPSB2aXNpYmxlUG9zOwogICAgIFZpc2libGVQ
b3NpdGlvbiBzYXZlZFZpc2libGVQb3M7CiAKICAgICAvLyBtb3ZlIHVwIHVudGlsIHdlIGdldCB0
byB0aGUgdG9wCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSB0YWtlcyB1cyB0byB0aGUgdG9wIG9m
IHRoZSByb290RWRpdGFibGVFbGVtZW50LCBub3QgdGhlIHRvcCBvZiB0aGUKICAgICAvLyB0b3Ag
ZG9jdW1lbnQuCi0gICAgd2hpbGUgKGN1cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEo
aW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpIHsKLSAgICAg
ICAgKytsaW5lQ291bnQ7CisgICAgZG8gewogICAgICAgICBzYXZlZFZpc2libGVQb3MgPSBjdXJy
ZW50VmlzaWJsZVBvczsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZWaXNpYmxlUG9zID0g
cHJldmlvdXNMaW5lUG9zaXRpb24oY3VycmVudFZpc2libGVQb3MsIDApOwogICAgICAgICBjdXJy
ZW50VmlzaWJsZVBvcyA9IHByZXZWaXNpYmxlUG9zOwotICAgIH0KKyAgICAgICAgKytsaW5lQ291
bnQ7CisgICAgfSAgd2hpbGUgKGN1cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5T
YW1lTGluZShjdXJyZW50VmlzaWJsZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpOwogCi0gICAgcmV0
dXJuIGxpbmVDb3VudCAtIDE7CisgICAgcmV0dXJuIGxpbmVDb3VudDsKIH0KIAogLy8gTk9URTog
Q29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgdXRpbGl0eSBtZXRob2QgYXMgQVggQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IGE2MDRhZTY0NzhiZDIyNDQ1ZmQxNjhjMzU5
MmEwYzFlZWE3MmRmYmYuLjkxOTgzNmM4MTM2ZTNkOTJmOWQwYWE0MDk3MWU2YjBhODBmMWVhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC0xODg5LDkgKzE4ODksMTYg
QEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xl
IHZhbHVlKQogICAgICAgICAgICAgLy8gaWYgc2VsZWN0aW9uRW5kID4gMCwgdGhlbiB0aGVyZSBp
cyBzZWxlY3RlZCB0ZXh0IGFuZCB0aGlzIHF1ZXN0aW9uIHNob3VsZCBub3QgYmUgYW5zd2VyZWQK
ICAgICAgICAgICAgIGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkgfHwgbV9vYmplY3Qt
PnNlbGVjdGlvbkVuZCgpID4gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICAgICAgaW50IGxpbmVOdW1iZXIgPSBtX29iamVjdC0+bGluZUZvclBvc2l0aW9uKG1fb2JqZWN0
LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChtX29iamVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1
ZSkpOworCisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkT2JqZWN0ID0g
bV9vYmplY3QtPmZvY3VzZWRVSUVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChmb2N1c2VkT2Jq
ZWN0ICE9IG1fb2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBmb2N1c2VkUG9zaXRpb24gPSBmb2N1c2VkT2JqZWN0LT52aXNp
YmxlUG9zaXRpb25Gb3JJbmRleChmb2N1c2VkT2JqZWN0LT5zZWxlY3Rpb25TdGFydCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gbV9vYmplY3QtPmxpbmVGb3JQb3NpdGlv
bihmb2N1c2VkUG9zaXRpb24pOwogICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQogICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CisKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpsaW5lTnVtYmVyXTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZDNk
ZTIyOGEwOTA2N2U1YWI3ZTNiMDJlMmU5MGE2NmU5YWYwNzM3Li45OTNlYWI1ZjFkZjIzYzFhMWVi
NmQ2MTA2MGJhMzkwMWY1ZTBiM2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTEg
IEFsaWNlIEJveGhhbGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24gcmV0dXJuIHRoZSBjb3JyZWN0IHZh
bHVlIGZvciBjYXNlcyB3aGVyZSB0aGUgcG9zaXRpb24gaXMgbm90IHdpdGhpbiB0aGUgY3VycmVu
dCBvYmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBv
aW50LWxpbmUtbnVtYmVyLmh0bWw6CisKIDIwMTEtMTItMTIgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZ2FyZGVuaW5nLiBN
YXJrIGZsYWt5IGNyYXNoaW5nIHRyYW5zaXRpb25zLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9p
bnQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0CmluZGV4IGE2ZmI1NGNiY2EzYTVkY2I3ZDcyMzFj
NzJlODhkZjE2NWViN2JjNzAuLjJjOTZmMTk3MTMzZmY1NDExOWMwNGUwMmU1OThkOWQ1ODE5MDJh
M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0
aW9uLXBvaW50LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci1leHBlY3RlZC50
eHQKQEAgLTEsNSArMSwyMCBAQAotVGVzdDowKSBMaW5lIE51bWJlcjogUGFzcyBbMC0+MF0KLVRl
c3Q6MSkgTGluZSBOdW1iZXI6IFBhc3MgWzctPjFdCi1UZXN0OjIpIExpbmUgTnVtYmVyOiBQYXNz
IFsxNC0+Ml0KLU5vdCBmb2N1c2VkIG9uIHRleHQgYXJlYSBsaW5lIG51bWJlcjogLTEKK1RoaXMg
dGVzdHMgdGhhdCBsaW5lTnVtYmVyRm9yUG9zaXRpb24gaXMgcmVwb3J0ZWQgY29ycmVjdGx5IGZv
ciB0ZXh0YXJlYSBhbmQgY29udGVudGVkaXRhYmxlIGVsZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBhcmVhMS5zZWxlY3Rpb25TdGFydCA9ICgwKTsgYXJlYTEu
c2VsZWN0aW9uRW5kID0gKDApOyBhcmVhMUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51
bWJlcjsgaXMgY3VycmVudExpbmUKK1BBU1MgYXJlYTEuc2VsZWN0aW9uU3RhcnQgPSAoNyk7IGFy
ZWExLnNlbGVjdGlvbkVuZCA9ICg3KTsgYXJlYTFBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExp
bmVOdW1iZXI7IGlzIGN1cnJlbnRMaW5lCitQQVNTIGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gKDE0
KTsgYXJlYTEuc2VsZWN0aW9uRW5kID0gKDE0KTsgYXJlYTFBWFVJRWxlbWVudC5pbnNlcnRpb25Q
b2ludExpbmVOdW1iZXI7IGlzIGN1cnJlbnRMaW5lCitQQVNTIGFyZWEyLmZvY3VzKCk7IGFyZWEx
QVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOyBpcyAtMQorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChjb250ZW50ZWRpdGFibGVMaW5lMSwgMSwg
Y29udGVudGVkaXRhYmxlTGluZTEsIDEpOyBjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNl
cnRpb25Qb2ludExpbmVOdW1iZXI7IGlzIDAKK1BBU1MgY29udGVudGVkaXRhYmxlTGluZTIuc2Vs
ZWN0aW9uU3RhcnQgPSAxOyBjb250ZW50ZWRpdGFibGVMaW5lMi5zZWxlY3Rpb25FbmQgPSAxO2Nv
bnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsgaXMgLTEK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY29udGVudGVkaXRh
YmxlTGluZTMsIDEsIGNvbnRlbnRlZGl0YWJsZUxpbmUzLCAxKTsgY29udGVudGVkaXRhYmxlQVhV
SUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOyBpcyAyCitQQVNTIHRleHRhcmVhQVhV
SUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogICAKK0xpbmUxCisKK0xpbmUzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2lu
dC1saW5lLW51bWJlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1p
bnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbAppbmRleCBhNTBmNjM3MjRlMzlhYjE4ZjQ3
ZTJlNTEzM2Y5NDUzYzA0MzViZGI1Li41YzhhOThmZjg4NjEwYTRhYzMyYzVlNDM0ZjQ4NmZkNjYz
ZmIxMDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWlu
c2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKQEAgLTEsMTIg
KzEsMTEgQEAKIDxodG1sPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CiA8Ym9keT4KLSAgICAKLSAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAg
IAorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVh
MSIgaWQ9ImFyZWExIiByb3dzPSI1IiBjb2xzPSI0MCI+CiBsaW5lIDEKIGxpbmUgMgpAQCAtMTQs
MzEgKzEzLDU0IEBAIGxpbmUgMwogICAgIDwvdGV4dGFyZWE+CiAKICAgICA8dGV4dGFyZWEgbmFt
ZT0iYXJlYTIiIGlkPSJhcmVhMiIgcm93cz0iNSIgY29scz0iNDAiPjwvdGV4dGFyZWE+Ci0gICAg
IAorCisKKyAgICA8ZGl2IGlkPSJjb250ZW50ZWRpdGFibGUtZGl2IiByb2xlPSJ0ZXh0Ym94IiBj
b250ZW50ZWRpdGFibGU9InRydWUiIHRhYmluZGV4PSIwIj4KKyAgICAgIDxkaXYgaWQ9ImNvbnRl
bnRlZGl0YWJsZS1saW5lMSI+TGluZTE8L2Rpdj4KKyAgICAgIDx0ZXh0YXJlYSBpZD0iY29udGVu
dGVkaXRhYmxlLWxpbmUyIiByb3dzPSIxIiBjb2xzPSI0MCI+TGluZTI8L3RleHRhcmVhPgorICAg
ICAgPGRpdiBpZD0iY29udGVudGVkaXRhYmxlLWxpbmUzIj5MaW5lMzwvZGl2PgorICAgIDwvZGl2
PgogICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgbGlu
ZU51bWJlckZvclBvc2l0aW9uIGlzIHJlcG9ydGVkIGNvcnJlY3RseSBmb3IgdGV4dGFyZWEgYW5k
IGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50cy4iKTsKKwogICAgICAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwogCiAgICAgICAgICAgICB2YXIgYXJlYTEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYTEiKTsKICAgICAgICAgICAgIGFyZWExLmZv
Y3VzKCk7CisgICAgICAgICAgICB2YXIgYXJlYTFBWFVJRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSAt
MjsKIAotICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCAzOyBrKyspIHsKLSAgICAgICAg
ICAgICAgICBhcmVhMS5zZWxlY3Rpb25TdGFydCA9IChrKjcpOwotICAgICAgICAgICAgICAgIGFy
ZWExLnNlbGVjdGlvbkVuZCA9IChrKjcpOwotICAgICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRM
aW5lTnVtYmVyOyAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyID09
IGspIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsg
ayArICIpIExpbmUgTnVtYmVyOiBQYXNzIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4i
ICsgbGluZU51bWJlciArICJdXG4iOyAgICAgICAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0g
IlRlc3Q6IiArIGsgKyAiKSBMaW5lIE51bWJlcjogRmFpbCBbIiArIGFyZWExLnNlbGVjdGlvblN0
YXJ0ICsgIi0+IiArIGxpbmVOdW1iZXIgKyAiXVxuIjsgICAgICAgCi0gICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yICh2YXIgY3VycmVudExpbmUgPSAwOyBjdXJyZW50TGluZSA8IDM7
IGN1cnJlbnRMaW5lKysgKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImFyZWExLnNlbGVj
dGlvblN0YXJ0ID0gKCIgKyAoY3VycmVudExpbmUgKiA3KSArICIpOyAiICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAiYXJlYTEuc2VsZWN0aW9uRW5kID0gKCIgKyAoY3VycmVudExpbmUgKiA3
KSArIik7ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICJhcmVhMUFYVUlFbGVtZW50Lmlu
c2VydGlvblBvaW50TGluZU51bWJlcjsiLCAiY3VycmVudExpbmUiKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgdmFyIGFyZWEyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyZWEy
Iik7Ci0gICAgICAgICAgICBhcmVhMi5mb2N1cygpOwotICAgICAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXIKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIk5vdCBmb2N1c2Vk
IG9uIHRleHQgYXJlYSBsaW5lIG51bWJlcjogIiArIGxpbmVOdW1iZXIgKyAiXG4iOworICAgICAg
ICAgICAgc2hvdWxkQmUoImFyZWEyLmZvY3VzKCk7IGFyZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9u
UG9pbnRMaW5lTnVtYmVyOyIsICItMSIpOworCisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRh
YmxlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1kaXYiKTsK
KyAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZURpdi5mb2N1cygpOworICAgICAgICAgICAgdmFy
IGNvbnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5lMSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTEiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChjb250
ZW50ZWRpdGFibGVMaW5lMSwgMSwgY29udGVudGVkaXRhYmxlTGluZTEsIDEpOyAiICsKKyAgICAg
ICAgICAgICAgICAgICAgICJjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXI7IiwgIjAiKTsKKworICAgICAgICAgICAgdmFyIGNvbnRlbnRlZGl0YWJsZUxp
bmUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1saW5lMiIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRlZGl0YWJsZUxpbmUyLnNlbGVjdGlvblN0YXJ0
ID0gMTsgY29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0aW9uRW5kID0gMTsiICsKKyAgICAgICAg
ICAgICAgICAgICAgICJjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExp
bmVOdW1iZXI7IiwgIi0xIik7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVMaW5l
MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUtbGluZTMiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVu
dChjb250ZW50ZWRpdGFibGVMaW5lMywgMSwgY29udGVudGVkaXRhYmxlTGluZTMsIDEpOyAiICsK
KyAgICAgICAgICAgICAgICAgICAgICJjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNlcnRp
b25Qb2ludExpbmVOdW1iZXI7IiwgIjIiKTsKKworICAgICAgICAgICAgY29udGVudGVkaXRhYmxl
TGluZTIuZm9jdXMoKTsKKyAgICAgICAgICAgIHZhciB0ZXh0YXJlYUFYVUlFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICBzaG91bGRC
ZSgidGV4dGFyZWFBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIiLCAiMCIpOwog
ICAgICAgICB9CiAgICAgPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119367</attachid>
            <date>2011-12-14 20:41:40 -0800</date>
            <delta_ts>2011-12-15 22:00:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111215154138.patch</filename>
            <type>text/plain</type>
            <size>10106</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMxMjNiMDZhNTZkZGIz
ZTQ4NTA0ZTRiMjU2MDJiMzE5MGUyMTM4OS4uOWQ5ODg1MDAxZjc0OWE5MWQ4ZGVmNDYxYTcxYzZm
YjY4NjBjZjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTE0ICBBbGlj
ZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgQWNjZXNz
aWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBm
b3IgY2FzZXMgd2hlcmUgdGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gdGhlIGN1cnJlbnQgb2Jq
ZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEz
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
XSk6CisKIDIwMTEtMTItMTQgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDbGVhbiB1cCBzdHlsZSBpbiBDU1NTdHlsZVNlbGVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
MzBiZDMwNDJhYTA1OGU5ZmVhNDcxZTdjMTRmNTVmMThkNmEwZjNmZi4uZjYwNWZmZmU1Y2Y2NWJi
ODc5NzNhZGRjMmRlMjc5MGU3MjBlNWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMDIzLDI0ICsxMDIzLDI5
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxp
dHlPYmplY3RGb3JQb3NpdGlvbihjb25zdCBWCiAKIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojps
aW5lRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKSBjb25zdAog
ewotICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAodmlzaWJsZVBvcy5pc051bGwoKSB8fCAhbm9kZSgpKQorICAgICAgICByZXR1cm4gLTE7CisK
KyAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBzYW1lIGVkaXRhYmxlIHJlZ2lv
biBhcyB0aGlzIEFYIG9iamVjdCwgcmV0dXJuIC0xLgorICAgIE5vZGUqIGNvbnRhaW5lck5vZGUg
PSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpOworICAgIGlmICgh
Y29udGFpbmVyTm9kZS0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00obm9kZSgpKSAmJiAhbm9k
ZSgpLT5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShjb250YWluZXJOb2RlKSkKKyAgICAgICAg
cmV0dXJuIC0xOwogCi0gICAgdW5zaWduZWQgbGluZUNvdW50ID0gMDsKKyAgICBpbnQgbGluZUNv
dW50ID0gLTE7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRWaXNpYmxlUG9zID0gdmlzaWJs
ZVBvczsKICAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9zOwogCiAgICAgLy8gbW92
ZSB1cCB1bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcAogICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgdGFr
ZXMgdXMgdG8gdGhlIHRvcCBvZiB0aGUgcm9vdEVkaXRhYmxlRWxlbWVudCwgbm90IHRoZSB0b3Ag
b2YgdGhlCiAgICAgLy8gdG9wIGRvY3VtZW50LgotICAgIHdoaWxlIChjdXJyZW50VmlzaWJsZVBv
cy5pc05vdE51bGwoKSAmJiAhKGluU2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlz
aWJsZVBvcykpKSB7Ci0gICAgICAgICsrbGluZUNvdW50OworICAgIGRvIHsKICAgICAgICAgc2F2
ZWRWaXNpYmxlUG9zID0gY3VycmVudFZpc2libGVQb3M7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
biBwcmV2VmlzaWJsZVBvcyA9IHByZXZpb3VzTGluZVBvc2l0aW9uKGN1cnJlbnRWaXNpYmxlUG9z
LCAwKTsKICAgICAgICAgY3VycmVudFZpc2libGVQb3MgPSBwcmV2VmlzaWJsZVBvczsKLSAgICB9
CisgICAgICAgICsrbGluZUNvdW50OworICAgIH0gIHdoaWxlIChjdXJyZW50VmlzaWJsZVBvcy5p
c05vdE51bGwoKSAmJiAhKGluU2FtZUxpbmUoY3VycmVudFZpc2libGVQb3MsIHNhdmVkVmlzaWJs
ZVBvcykpKTsKIAotICAgIHJldHVybiBsaW5lQ291bnQgLSAxOworICAgIHJldHVybiBsaW5lQ291
bnQ7CiB9CiAKIC8vIE5PVEU6IENvbnNpZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkgbWV0aG9k
IGFzIEFYIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBhNjA0YWU2
NDc4YmQyMjQ0NWZkMTY4YzM1OTJhMGMxZWVhNzJkZmJmLi45MTk4MzZjODEzNmUzZDkyZjlkMGFh
NDA5NzFlNmIwYTgwZjFlYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpA
QCAtMTg4OSw5ICsxODg5LDE2IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmlu
ZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICAgICAgICAgIC8vIGlmIHNlbGVjdGlvbkVu
ZCA+IDAsIHRoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgdGV4dCBhbmQgdGhpcyBxdWVzdGlvbiBzaG91
bGQgbm90IGJlIGFuc3dlcmVkCiAgICAgICAgICAgICBpZiAobV9vYmplY3QtPmlzUGFzc3dvcmRG
aWVsZCgpIHx8IG1fb2JqZWN0LT5zZWxlY3Rpb25FbmQoKSA+IDApCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gbV9vYmplY3QtPmxpbmVG
b3JQb3NpdGlvbihtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgobV9vYmplY3QtPnNl
bGVjdGlvblN0YXJ0KCksIHRydWUpKTsKKworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZm9jdXNlZE9iamVjdCA9IG1fb2JqZWN0LT5mb2N1c2VkVUlFbGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAoZm9jdXNlZE9iamVjdCAhPSBtX29iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOworCisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZm9jdXNlZFBvc2l0aW9uID0g
Zm9jdXNlZE9iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoZm9jdXNlZE9iamVjdC0+c2Vs
ZWN0aW9uU3RhcnQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IG1fb2Jq
ZWN0LT5saW5lRm9yUG9zaXRpb24oZm9jdXNlZFBvc2l0aW9uKTsKICAgICAgICAgICAgIGlmIChs
aW5lTnVtYmVyIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCiAgICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZU51bWJlcl07CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzI0OTdlNTAxMmI2Mjg0YTVmMWM5NDdmODVmNmU2YjU0MmViMTA4OC4u
YTgxNjI2Njg0MWEyMTY4ZjVmZGI4NDU3ZGMyNDkyNjkwY2ZjM2Q2ZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDExLTEyLTE0ICBBbGljZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1ha2UgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHJl
dHVybiB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgY2FzZXMgd2hlcmUgdGhlIHBvc2l0aW9uIGlzIG5v
dCB3aXRoaW4gdGhlIGN1cnJlbnQgb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBv
aW50LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Rl
eHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci5odG1sOgorCiAyMDExLTEyLTE0ICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgZXhwZWN0YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1u
dW1iZXItZXhwZWN0ZWQudHh0CmluZGV4IGE2ZmI1NGNiY2EzYTVkY2I3ZDcyMzFjNzJlODhkZjE2
NWViN2JjNzAuLmFlMDEyNTY2YWNkNzdkZGZhYmI1YWFhM2ZkOWU1YWNhZTVlYjQ5NjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50
LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci1leHBlY3RlZC50eHQKQEAgLTIs
NCArMiwxMSBAQCBUZXN0OjApIExpbmUgTnVtYmVyOiBQYXNzIFswLT4wXQogVGVzdDoxKSBMaW5l
IE51bWJlcjogUGFzcyBbNy0+MV0KIFRlc3Q6MikgTGluZSBOdW1iZXI6IFBhc3MgWzE0LT4yXQog
Tm90IGZvY3VzZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAtMQorU2VsZWN0aW9uIGluIGxp
bmUgMSBvZiBjb250ZW50ZWRpdGFibGUgbGluZW51bWJlcjogMAorU2VsZWN0aW9uIGluIGVtYmVk
ZGVkIHRleHRhcmVhIG9mIGNvbnRlbnRlZGl0YWJsZSBsaW5lbnVtYmVyOiAtMQorU2VsZWN0aW9u
IGluIGxpbmUgMyBvZiBjb250ZW50ZWRpdGFibGUgbGluZW51bWJlcjogMgorTGluZSBudW1iZXIg
Zm9yIGVtYmVkZGVkIHRleHRhcmVhOiAwCiAgIAorTGluZTEKKworTGluZTMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUt
bnVtYmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlv
bi1wb2ludC1saW5lLW51bWJlci5odG1sCmluZGV4IGE1MGY2MzcyNGUzOWFiMThmNDdlMmU1MTMz
Zjk0NTNjMDQzNWJkYjUuLmVkNzljMzc5OWNjNDMxZTllMWViNWNlMGE5YWQ2MTFhMDAyZTQ1Yjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9u
LXBvaW50LWxpbmUtbnVtYmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIuaHRtbApAQCAtNCw5ICs0LDcgQEAK
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8
Ym9keT4KLSAgICAKICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAgIAogICAgIDx0ZXh0
YXJlYSBuYW1lPSJhcmVhMSIgaWQ9ImFyZWExIiByb3dzPSI1IiBjb2xzPSI0MCI+CiBsaW5lIDEK
IGxpbmUgMgpAQCAtMTQsMzAgKzEyLDY3IEBAIGxpbmUgMwogICAgIDwvdGV4dGFyZWE+CiAKICAg
ICA8dGV4dGFyZWEgbmFtZT0iYXJlYTIiIGlkPSJhcmVhMiIgcm93cz0iNSIgY29scz0iNDAiPjwv
dGV4dGFyZWE+Ci0gICAgIAorCisKKyAgICA8ZGl2IGlkPSJjb250ZW50ZWRpdGFibGUtZGl2IiBy
b2xlPSJ0ZXh0Ym94IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHRhYmluZGV4PSIwIj4KKyAgICAg
IDxkaXYgaWQ9ImNvbnRlbnRlZGl0YWJsZS1saW5lMSI+TGluZTE8L2Rpdj4KKyAgICAgIDx0ZXh0
YXJlYSBpZD0iY29udGVudGVkaXRhYmxlLWxpbmUyIiByb3dzPSIxIiBjb2xzPSI0MCI+TGluZTI8
L3RleHRhcmVhPgorICAgICAgPGRpdiBpZD0iY29udGVudGVkaXRhYmxlLWxpbmUzIj5MaW5lMzwv
ZGl2PgorICAgIDwvZGl2PgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAKICAgICAgICAgICAgIHZhciBhcmVhMSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJhcmVhMSIpOwogICAgICAgICAgICAgYXJlYTEuZm9jdXMoKTsK
KyAgICAgICAgICAgIHZhciBhcmVhMUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IC0yOwogCi0g
ICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgeworICAgICAgICAgICAgZm9y
ICh2YXIgayA9IDA7IGsgPCAzOyBrKysgKSB7CiAgICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0
aW9uU3RhcnQgPSAoayo3KTsKICAgICAgICAgICAgICAgICBhcmVhMS5zZWxlY3Rpb25FbmQgPSAo
ayo3KTsKLSAgICAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0gYXJlYTFBWFVJRWxlbWVudC5pbnNlcnRp
b25Qb2ludExpbmVOdW1iZXI7CiAgICAgICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gaykg
ewotICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJUZXN0OiIgKyBrICsg
IikgTGluZSBOdW1iZXI6IFBhc3MgWyIgKyBhcmVhMS5zZWxlY3Rpb25TdGFydCArICItPiIgKyBs
aW5lTnVtYmVyICsgIl1cbiI7ICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ICs9ICJUZXN0OiIgKyBrICsgIikgTGluZSBOdW1iZXI6IFBhc3MgWyIgKyBhcmVhMS5z
ZWxlY3Rpb25TdGFydCArICItPiIgKyBsaW5lTnVtYmVyICsgIl1cbiI7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQu
aW5uZXJUZXh0ICs9ICJUZXN0OiIgKyBrICsgIikgTGluZSBOdW1iZXI6IEZhaWwgWyIgKyBhcmVh
MS5zZWxlY3Rpb25TdGFydCArICItPiIgKyBsaW5lTnVtYmVyICsgIl1cbiI7ICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJUZXN0OiIgKyBrICsgIikgTGlu
ZSBOdW1iZXI6IEZhaWwgWyIgKyBhcmVhMS5zZWxlY3Rpb25TdGFydCArICItPiIgKyBsaW5lTnVt
YmVyICsgIl1cbiI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICB2YXIgYXJlYTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYTIiKTsKICAgICAg
ICAgICAgIGFyZWEyLmZvY3VzKCk7Ci0gICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJl
cgorICAgICAgICAgICAgbGluZU51bWJlciA9IGFyZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9p
bnRMaW5lTnVtYmVyOwogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiTm90IGZvY3Vz
ZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAiICsgbGluZU51bWJlciArICJcbiI7CisKKyAg
ICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29udGVudGVkaXRhYmxlLWRpdiIpOworICAgICAgICAgICAgY29udGVudGVkaXRhYmxlRGl2
LmZvY3VzKCk7CisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlQVhVSUVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICAgICAgdmFy
IGNvbnRlbnRlZGl0YWJsZUxpbmUxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRl
ZGl0YWJsZS1saW5lMSIpOworICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJh
c2VBbmRFeHRlbnQoY29udGVudGVkaXRhYmxlTGluZTEsIDEsIGNvbnRlbnRlZGl0YWJsZUxpbmUx
LCAxKTsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlNlbGVjdGlvbiBpbiBsaW5l
IDEgb2YgY29udGVudGVkaXRhYmxlIGxpbmVudW1iZXI6IjsKKyAgICAgICAgICAgIGxpbmVOdW1i
ZXIgPSBjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7
CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICIgIiArIGxpbmVOdW1iZXIgKyAiXG4i
OworCisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlTGluZTIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxlLWxpbmUyIik7CisgICAgICAgICAgICBjb250ZW50
ZWRpdGFibGVMaW5lMi5zZWxlY3Rpb25TdGFydCA9IDE7CisgICAgICAgICAgICBjb250ZW50ZWRp
dGFibGVMaW5lMi5zZWxlY3Rpb25FbmQgPSAxOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCArPSAiU2VsZWN0aW9uIGluIGVtYmVkZGVkIHRleHRhcmVhIG9mIGNvbnRlbnRlZGl0YWJsZSBs
aW5lbnVtYmVyOiI7CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gY29udGVudGVkaXRhYmxlQVhV
SUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0Lmlu
bmVyVGV4dCArPSAiICIgKyBsaW5lTnVtYmVyICsgIlxuIjsKKworICAgICAgICAgICAgdmFyIGNv
bnRlbnRlZGl0YWJsZUxpbmUzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0
YWJsZS1saW5lMyIpOworICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VB
bmRFeHRlbnQoY29udGVudGVkaXRhYmxlTGluZTMsIDEsIGNvbnRlbnRlZGl0YWJsZUxpbmUzLCAx
KTsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlNlbGVjdGlvbiBpbiBsaW5lIDMg
b2YgY29udGVudGVkaXRhYmxlIGxpbmVudW1iZXI6IjsKKyAgICAgICAgICAgIGxpbmVOdW1iZXIg
PSBjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7Cisg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICIgIiArIGxpbmVOdW1iZXIgKyAiXG4iOwor
CisgICAgICAgICAgICBjb250ZW50ZWRpdGFibGVMaW5lMi5mb2N1cygpOworICAgICAgICAgICAg
dmFyIHRleHRhcmVhQVhVSUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkxpbmUgbnVtYmVyIGZv
ciBlbWJlZGRlZCB0ZXh0YXJlYToiOworICAgICAgICAgICAgbGluZU51bWJlciA9IHRleHRhcmVh
QVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiICIgKyBsaW5lTnVtYmVyICsgIlxuIjsKICAgICAgICAgfQogICAgIDwv
c2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119565</attachid>
            <date>2011-12-15 22:00:19 -0800</date>
            <delta_ts>2011-12-18 17:12:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71348-20111216170016.patch</filename>
            <type>text/plain</type>
            <size>10970</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVlNDU1OGZmNWJiZWUw
OGNmNjQ3Y2JjNTdjOTQ0MmIzZWVlYzU2Yi4uMGRjODlhOTZjOTdkMzdlMmFlZGYzNWYxNjM4YWRj
ZjQyZTU4NTEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTE1ICBBbGlj
ZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgQWNjZXNz
aWJpbGl0eU9iamVjdDo6bGluZUZvclBvc2l0aW9uIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBm
b3IgY2FzZXMgd2hlcmUgdGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gdGhlIGN1cnJlbnQgb2Jq
ZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEz
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lRm9yUG9zaXRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
XSk6CisKIDIwMTEtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgc2l6ZW9mKFJlbmRlck9iamVjdCkgaXMgMzIgaW5zdGVhZCBvZiAyNCBvbiBXaW5kb3dz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCAzMGJkMzA0MmFhMDU4ZTlmZWE0NzFlN2MxNGY1NWYxOGQ2YTBmM2ZmLi5m
NjA1ZmZmZTVjZjY1YmI4Nzk3M2FkZGMyZGUyNzkwZTcyMGU1YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTEw
MjMsMjQgKzEwMjMsMjkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVj
dDo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFYKIAogaW50IEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmxpbmVGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3MpIGNvbnN0CiB7Ci0gICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpIHx8ICFub2RlKCkpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIHNhbWUg
ZWRpdGFibGUgcmVnaW9uIGFzIHRoaXMgQVggb2JqZWN0LCByZXR1cm4gLTEuCisgICAgTm9kZSog
Y29udGFpbmVyTm9kZSA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKS5jb250YWluZXJOb2Rl
KCk7CisgICAgaWYgKCFjb250YWluZXJOb2RlLT5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShu
b2RlKCkpICYmICFub2RlKCktPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnRhaW5lck5v
ZGUpKQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSAwOwor
ICAgIGludCBsaW5lQ291bnQgPSAtMTsKICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFZpc2li
bGVQb3MgPSB2aXNpYmxlUG9zOwogICAgIFZpc2libGVQb3NpdGlvbiBzYXZlZFZpc2libGVQb3M7
CiAKICAgICAvLyBtb3ZlIHVwIHVudGlsIHdlIGdldCB0byB0aGUgdG9wCiAgICAgLy8gRklYTUU6
IFRoaXMgb25seSB0YWtlcyB1cyB0byB0aGUgdG9wIG9mIHRoZSByb290RWRpdGFibGVFbGVtZW50
LCBub3QgdGhlIHRvcCBvZiB0aGUKICAgICAvLyB0b3AgZG9jdW1lbnQuCi0gICAgd2hpbGUgKGN1
cnJlbnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJs
ZVBvcywgc2F2ZWRWaXNpYmxlUG9zKSkpIHsKLSAgICAgICAgKytsaW5lQ291bnQ7CisgICAgZG8g
ewogICAgICAgICBzYXZlZFZpc2libGVQb3MgPSBjdXJyZW50VmlzaWJsZVBvczsKICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHByZXZWaXNpYmxlUG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24oY3Vy
cmVudFZpc2libGVQb3MsIDApOwogICAgICAgICBjdXJyZW50VmlzaWJsZVBvcyA9IHByZXZWaXNp
YmxlUG9zOwotICAgIH0KKyAgICAgICAgKytsaW5lQ291bnQ7CisgICAgfSAgd2hpbGUgKGN1cnJl
bnRWaXNpYmxlUG9zLmlzTm90TnVsbCgpICYmICEoaW5TYW1lTGluZShjdXJyZW50VmlzaWJsZVBv
cywgc2F2ZWRWaXNpYmxlUG9zKSkpOwogCi0gICAgcmV0dXJuIGxpbmVDb3VudCAtIDE7CisgICAg
cmV0dXJuIGxpbmVDb3VudDsKIH0KIAogLy8gTk9URTogQ29uc2lkZXIgcHJvdmlkaW5nIHRoaXMg
dXRpbGl0eSBtZXRob2QgYXMgQVggQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
CmluZGV4IGE2MDRhZTY0NzhiZDIyNDQ1ZmQxNjhjMzU5MmEwYzFlZWE3MmRmYmYuLjkxOTgzNmM4
MTM2ZTNkOTJmOWQwYWE0MDk3MWU2YjBhODBmMWVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyLm1tCkBAIC0xODg5LDkgKzE4ODksMTYgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xl
VmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAgICAgICAgICAgLy8g
aWYgc2VsZWN0aW9uRW5kID4gMCwgdGhlbiB0aGVyZSBpcyBzZWxlY3RlZCB0ZXh0IGFuZCB0aGlz
IHF1ZXN0aW9uIHNob3VsZCBub3QgYmUgYW5zd2VyZWQKICAgICAgICAgICAgIGlmIChtX29iamVj
dC0+aXNQYXNzd29yZEZpZWxkKCkgfHwgbV9vYmplY3QtPnNlbGVjdGlvbkVuZCgpID4gMCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBt
X29iamVjdC0+bGluZUZvclBvc2l0aW9uKG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRl
eChtX29iamVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1ZSkpOworCisgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkT2JqZWN0ID0gbV9vYmplY3QtPmZvY3VzZWRVSUVsZW1l
bnQoKTsKKyAgICAgICAgICAgIGlmIChmb2N1c2VkT2JqZWN0ICE9IG1fb2JqZWN0KQorICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBmb2N1
c2VkUG9zaXRpb24gPSBmb2N1c2VkT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChmb2N1
c2VkT2JqZWN0LT5zZWxlY3Rpb25TdGFydCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGludCBsaW5l
TnVtYmVyID0gbV9vYmplY3QtPmxpbmVGb3JQb3NpdGlvbihmb2N1c2VkUG9zaXRpb24pOwogICAg
ICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7
CisKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpsaW5lTnVtYmVy
XTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNWQyNTIzNGIzNGM5OTg0ZjlmOGRmZDdmZTdi
MmJjYWFkYmVhMDE0Li5lNWJjMWZlNTlhNjdhYzg3ZTRiOGE2MDRlNzY0ZTU0YmU5OGNlN2E2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTUgIEFsaWNlIEJveGhhbGwgIDxhYm94aGFs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5l
Rm9yUG9zaXRpb24gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBjYXNlcyB3aGVyZSB0aGUg
cG9zaXRpb24gaXMgbm90IHdpdGhpbiB0aGUgY3VycmVudCBvYmplY3QuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90ZXh0YXJl
YS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWw6CisK
IDIwMTEtMTItMTUgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmRleGVkREI6IENhbid0IHBhc3MgRE9NU3RyaW5nTGlzdCB0byBJREJEYXRhYmFzZS50cmFu
c2FjdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVh
LWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51bWJlci1leHBlY3Rl
ZC50eHQKaW5kZXggYTZmYjU0Y2JjYTNhNWRjYjdkNzIzMWM3MmU4OGRmMTY1ZWI3YmM3MC4uMmM5
NmYxOTcxMzNmZjU0MTE5YzA0ZTAyZTU5OGQ5ZDU4MTkwMmEzYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRpb24tcG9pbnQtbGluZS1udW1iZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5z
ZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDIwIEBACi1U
ZXN0OjApIExpbmUgTnVtYmVyOiBQYXNzIFswLT4wXQotVGVzdDoxKSBMaW5lIE51bWJlcjogUGFz
cyBbNy0+MV0KLVRlc3Q6MikgTGluZSBOdW1iZXI6IFBhc3MgWzE0LT4yXQotTm90IGZvY3VzZWQg
b24gdGV4dCBhcmVhIGxpbmUgbnVtYmVyOiAtMQorVGhpcyB0ZXN0cyB0aGF0IGxpbmVOdW1iZXJG
b3JQb3NpdGlvbiBpcyByZXBvcnRlZCBjb3JyZWN0bHkgZm9yIHRleHRhcmVhIGFuZCBjb250ZW50
ZWRpdGFibGUgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGFyZWExLnNlbGVjdGlvblN0YXJ0ID0gKDApOyBhcmVhMS5zZWxlY3Rpb25FbmQgPSAoMCk7IGFy
ZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOyBpcyBjdXJyZW50TGluZQor
UEFTUyBhcmVhMS5zZWxlY3Rpb25TdGFydCA9ICg3KTsgYXJlYTEuc2VsZWN0aW9uRW5kID0gKDcp
OyBhcmVhMUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsgaXMgY3VycmVudExp
bmUKK1BBU1MgYXJlYTEuc2VsZWN0aW9uU3RhcnQgPSAoMTQpOyBhcmVhMS5zZWxlY3Rpb25FbmQg
PSAoMTQpOyBhcmVhMUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsgaXMgY3Vy
cmVudExpbmUKK1BBU1MgYXJlYTIuZm9jdXMoKTsgYXJlYTFBWFVJRWxlbWVudC5pbnNlcnRpb25Q
b2ludExpbmVOdW1iZXI7IGlzIC0xCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNl
QW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUxLCAxLCBjb250ZW50ZWRpdGFibGVMaW5lMSwg
MSk7IGNvbnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsg
aXMgMAorUEFTUyBjb250ZW50ZWRpdGFibGVMaW5lMi5zZWxlY3Rpb25TdGFydCA9IDE7IGNvbnRl
bnRlZGl0YWJsZUxpbmUyLnNlbGVjdGlvbkVuZCA9IDE7Y29udGVudGVkaXRhYmxlQVhVSUVsZW1l
bnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOyBpcyAtMQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0QmFzZUFuZEV4dGVudChjb250ZW50ZWRpdGFibGVMaW5lMywgMSwgY29udGVudGVk
aXRhYmxlTGluZTMsIDEpOyBjb250ZW50ZWRpdGFibGVBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXI7IGlzIDIKK1BBU1MgdGV4dGFyZWFBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXIgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCiAgIAorTGluZTEKKworTGluZTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVtYmVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHRhcmVhLWluc2VydGlvbi1wb2ludC1saW5lLW51
bWJlci5odG1sCmluZGV4IGE1MGY2MzcyNGUzOWFiMThmNDdlMmU1MTMzZjk0NTNjMDQzNWJkYjUu
LjVjOGE5OGZmODg2MTBhNGFjMzJjNWU0MzRmNDg2ZmQ2NjNmYjEwNDAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dGFyZWEtaW5zZXJ0aW9uLXBvaW50LWxpbmUtbnVt
YmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0YXJlYS1pbnNlcnRp
b24tcG9pbnQtbGluZS1udW1iZXIuaHRtbApAQCAtMSwxMiArMSwxMSBAQAogPGh0bWw+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxib2R5PgotICAg
IAotICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Ci0gICAgCisgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiAgICAgPHRleHRhcmVhIG5hbWU9ImFyZWExIiBpZD0iYXJlYTEiIHJvd3M9IjUi
IGNvbHM9IjQwIj4KIGxpbmUgMQogbGluZSAyCkBAIC0xNCwzMSArMTMsNTQgQEAgbGluZSAzCiAg
ICAgPC90ZXh0YXJlYT4KIAogICAgIDx0ZXh0YXJlYSBuYW1lPSJhcmVhMiIgaWQ9ImFyZWEyIiBy
b3dzPSI1IiBjb2xzPSI0MCI+PC90ZXh0YXJlYT4KLSAgICAgCisKKworICAgIDxkaXYgaWQ9ImNv
bnRlbnRlZGl0YWJsZS1kaXYiIHJvbGU9InRleHRib3giIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIg
dGFiaW5kZXg9IjAiPgorICAgICAgPGRpdiBpZD0iY29udGVudGVkaXRhYmxlLWxpbmUxIj5MaW5l
MTwvZGl2PgorICAgICAgPHRleHRhcmVhIGlkPSJjb250ZW50ZWRpdGFibGUtbGluZTIiIHJvd3M9
IjEiIGNvbHM9IjQwIj5MaW5lMjwvdGV4dGFyZWE+CisgICAgICA8ZGl2IGlkPSJjb250ZW50ZWRp
dGFibGUtbGluZTMiPkxpbmUzPC9kaXY+CisgICAgPC9kaXY+CiAgICAgPHNjcmlwdD4KKyAgICAg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBsaW5lTnVtYmVyRm9yUG9zaXRpb24gaXMg
cmVwb3J0ZWQgY29ycmVjdGx5IGZvciB0ZXh0YXJlYSBhbmQgY29udGVudGVkaXRhYmxlIGVsZW1l
bnRzLiIpOworCiAgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
LSAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
Iik7CisgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CiAKICAgICAgICAgICAgIHZhciBhcmVhMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJhcmVhMSIpOwogICAgICAgICAgICAgYXJlYTEuZm9jdXMoKTsKKyAgICAgICAgICAgIHZh
ciBhcmVhMUFYVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IC0yOwogCi0gICAgICAgICAgICBmb3Ig
KHZhciBrID0gMDsgayA8IDM7IGsrKykgewotICAgICAgICAgICAgICAgIGFyZWExLnNlbGVjdGlv
blN0YXJ0ID0gKGsqNyk7Ci0gICAgICAgICAgICAgICAgYXJlYTEuc2VsZWN0aW9uRW5kID0gKGsq
Nyk7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7ICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gaykgewotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJUZXN0OiIgKyBrICsgIikgTGluZSBOdW1iZXI6IFBh
c3MgWyIgKyBhcmVhMS5zZWxlY3Rpb25TdGFydCArICItPiIgKyBsaW5lTnVtYmVyICsgIl1cbiI7
ICAgICAgIAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdDoiICsgayArICIpIExpbmUg
TnVtYmVyOiBGYWlsIFsiICsgYXJlYTEuc2VsZWN0aW9uU3RhcnQgKyAiLT4iICsgbGluZU51bWJl
ciArICJdXG4iOyAgICAgICAKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZh
ciBjdXJyZW50TGluZSA9IDA7IGN1cnJlbnRMaW5lIDwgMzsgY3VycmVudExpbmUrKyApIHsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiYXJlYTEuc2VsZWN0aW9uU3RhcnQgPSAoIiArIChjdXJy
ZW50TGluZSAqIDcpICsgIik7ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICJhcmVhMS5z
ZWxlY3Rpb25FbmQgPSAoIiArIChjdXJyZW50TGluZSAqIDcpICsiKTsgIiArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgImFyZWExQVhVSUVsZW1lbnQuaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVy
OyIsICJjdXJyZW50TGluZSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgYXJl
YTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYTIiKTsKLSAgICAgICAgICAgIGFyZWEy
LmZvY3VzKCk7Ci0gICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcgotICAgICAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCArPSAiTm90IGZvY3VzZWQgb24gdGV4dCBhcmVhIGxpbmUgbnVt
YmVyOiAiICsgbGluZU51bWJlciArICJcbiI7CisgICAgICAgICAgICBzaG91bGRCZSgiYXJlYTIu
Zm9jdXMoKTsgYXJlYTFBWFVJRWxlbWVudC5pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7IiwgIi0x
Iik7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGVEaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxlLWRpdiIpOworICAgICAgICAgICAgY29udGVudGVk
aXRhYmxlRGl2LmZvY3VzKCk7CisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlQVhVSUVs
ZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAg
ICAgICAgdmFyIGNvbnRlbnRlZGl0YWJsZUxpbmUxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnRlZGl0YWJsZS1saW5lMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUxLCAxLCBj
b250ZW50ZWRpdGFibGVMaW5lMSwgMSk7ICIgKworICAgICAgICAgICAgICAgICAgICAgImNvbnRl
bnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsiLCAiMCIpOwor
CisgICAgICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlTGluZTIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29udGVudGVkaXRhYmxlLWxpbmUyIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y29udGVudGVkaXRhYmxlTGluZTIuc2VsZWN0aW9uU3RhcnQgPSAxOyBjb250ZW50ZWRpdGFibGVM
aW5lMi5zZWxlY3Rpb25FbmQgPSAxOyIgKworICAgICAgICAgICAgICAgICAgICAgImNvbnRlbnRl
ZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsiLCAiLTEiKTsKKwor
ICAgICAgICAgICAgdmFyIGNvbnRlbnRlZGl0YWJsZUxpbmUzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnRlZGl0YWJsZS1saW5lMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGNvbnRlbnRlZGl0YWJsZUxpbmUz
LCAxLCBjb250ZW50ZWRpdGFibGVMaW5lMywgMSk7ICIgKworICAgICAgICAgICAgICAgICAgICAg
ImNvbnRlbnRlZGl0YWJsZUFYVUlFbGVtZW50Lmluc2VydGlvblBvaW50TGluZU51bWJlcjsiLCAi
MiIpOworCisgICAgICAgICAgICBjb250ZW50ZWRpdGFibGVMaW5lMi5mb2N1cygpOworICAgICAg
ICAgICAgdmFyIHRleHRhcmVhQVhVSUVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudDsKKyAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0YXJlYUFYVUlFbGVtZW50
Lmluc2VydGlvblBvaW50TGluZU51bWJlciIsICIwIik7CiAgICAgICAgIH0KICAgICA8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>