<?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>96325</bug_id>
          
          <creation_ts>2012-09-10 14:59:19 -0700</creation_ts>
          <short_desc>VO issues with hidden &lt;legend&gt; and last explicitly labelled element within a group &lt;fieldset&gt;</short_desc>
          <delta_ts>2012-10-25 11:04:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>716556</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-10 14:59:19 -0700</bug_when>
    <thetext>&lt;legend&gt; hidden off screen by CSS is not announced by VoiceOver when moving focus to group options within the &lt;fieldset&gt;.

Would expect display:none to hide from screen readers, but not when positioned off screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716612</commentid>
    <comment_count>1</comment_count>
      <attachid>163234</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-10 15:41:26 -0700</bug_when>
    <thetext>Created attachment 163234
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716822</commentid>
    <comment_count>2</comment_count>
      <attachid>163234</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 21:35:44 -0700</bug_when>
    <thetext>Comment on attachment 163234
patch

Attachment 163234 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13810478

New failing tests:
accessibility/hidden-legend.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717270</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 09:33:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 163234 [details])
&gt; Attachment 163234 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/13810478
&gt; 
&gt; New failing tests:
&gt; accessibility/hidden-legend.html

Is there a way to get what the failure was?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717534</commentid>
    <comment_count>4</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-11 14:09:18 -0700</bug_when>
    <thetext>I&apos;m not sure if there&apos;s a way to download the test results from the ews bots, but here&apos;s the error:

Pick your favourite colour:
 red  yellow
Pick your favourite colour: red  yellow
 red  yellow
This tests that the legend is still used as the title UI element even when off-screen (but not when display:none is used)

On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.


FAIL fieldset1.titleUIElement().isEqual(fieldset1.childAtIndex(0)) should be true. Threw exception TypeError: Cannot call method &apos;isEqual&apos; of null
FAIL fieldset2.titleUIElement().isEqual(fieldset2.childAtIndex(0)) should be true. Threw exception TypeError: Cannot call method &apos;isEqual&apos; of null
FAIL fieldset3.titleUIElement().isValid should be false. Threw exception TypeError: Cannot read property &apos;isValid&apos; of null
PASS successfullyParsed is true

TEST COMPLETE


Also, I did a quick dump of the accessibility tree - role, description, title, value - in case that helps.

Is it a difference of what&apos;s ignored? We really need a method to identify elements in the tree even if the hierarchy is slightly different.

CONSOLE MESSAGE: line 53:     AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:         AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:             AXRole: AXStaticText AXDescription:  AXTitle:  AXValue: Pick your favourite colour:
CONSOLE MESSAGE: line 53:         AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:             AXRole: AXRadioButton AXDescription:  AXTitle: red AXValue: 
CONSOLE MESSAGE: line 53:             AXRole: AXRadioButton AXDescription:  AXTitle: yellow AXValue: 
CONSOLE MESSAGE: line 53:     AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:         AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:             AXRole: AXStaticText AXDescription:  AXTitle:  AXValue: Pick your favourite colour:
CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:     AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:     AXRole: AXParagraph AXDescription:  AXTitle:  AXValue: 
CONSOLE MESSAGE: line 53:         AXRole: AXStaticText AXDescription:  AXTitle:  AXValue: This test makes sure that a generic focusable div can get accessibility focus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717568</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 14:42:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;m not sure if there&apos;s a way to download the test results from the ews bots, but here&apos;s the error:
&gt; 
&gt; Pick your favourite colour:
&gt;  red  yellow
&gt; Pick your favourite colour: red  yellow
&gt;  red  yellow
&gt; This tests that the legend is still used as the title UI element even when off-screen (but not when display:none is used)
&gt; 
&gt; On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
&gt; 
&gt; 
&gt; FAIL fieldset1.titleUIElement().isEqual(fieldset1.childAtIndex(0)) should be true. Threw exception TypeError: Cannot call method &apos;isEqual&apos; of null
&gt; FAIL fieldset2.titleUIElement().isEqual(fieldset2.childAtIndex(0)) should be true. Threw exception TypeError: Cannot call method &apos;isEqual&apos; of null
&gt; FAIL fieldset3.titleUIElement().isValid should be false. Threw exception TypeError: Cannot read property &apos;isValid&apos; of null
&gt; PASS successfullyParsed is true
&gt; 
&gt; TEST COMPLETE
&gt; 
&gt; 
&gt; Also, I did a quick dump of the accessibility tree - role, description, title, value - in case that helps.
&gt; 
&gt; Is it a difference of what&apos;s ignored? We really need a method to identify elements in the tree even if the hierarchy is slightly different.
&gt; 
&gt; CONSOLE MESSAGE: line 53:     AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:             AXRole: AXStaticText AXDescription:  AXTitle:  AXValue: Pick your favourite colour:
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:             AXRole: AXRadioButton AXDescription:  AXTitle: red AXValue: 
&gt; CONSOLE MESSAGE: line 53:             AXRole: AXRadioButton AXDescription:  AXTitle: yellow AXValue: 
&gt; CONSOLE MESSAGE: line 53:     AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:             AXRole: AXStaticText AXDescription:  AXTitle:  AXValue: Pick your favourite colour:
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:     AXRole: AXGroup AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXRadioButton AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:     AXRole: AXParagraph AXDescription:  AXTitle:  AXValue: 
&gt; CONSOLE MESSAGE: line 53:         AXRole: AXStaticText AXDescription:  AXTitle:  AXValue: This test makes sure that a generic focusable div can get accessibility focus.

I think the problem is that chromium doesn&apos;t implement titleUIElement()  (maybe?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718023</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-12 01:00:18 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think the problem is that chromium doesn&apos;t implement titleUIElement()  (maybe?)

You&apos;re right. Actually Chromium implements it, just DumpRenderTree&apos;s chromium port doesn&apos;t support it from JavaScript yet.

Just skip this test on Chromium for now. I&apos;ve been meaning to go through and implement a bunch more methods in DumpRenderTree and see if I can enable a lot more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718426</commentid>
    <comment_count>7</comment_count>
      <attachid>163644</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-12 09:02:54 -0700</bug_when>
    <thetext>Created attachment 163644
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718948</commentid>
    <comment_count>8</comment_count>
      <attachid>163644</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-12 18:08:48 -0700</bug_when>
    <thetext>Comment on attachment 163644
patch 

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore):

Please remove bogus lines like this one.

&gt; Source/WebCore/ChangeLog:19
&gt; +        (AccessibilityRenderObject):

Please remove bogus lines like this one.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:249
&gt; +    virtual RenderObject* findLegend(RenderObject*) const;

Why virtual?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1054
&gt; +    // This is very similar to RenderFieldset::findLegend, except that it allows using legends
&gt; +    // that are positioned off-screen for accessibility.
&gt; +    for (RenderObject* legend = fieldset-&gt;firstChild(); legend; legend = legend-&gt;nextSibling()) {
&gt; +        if (legend-&gt;style()-&gt;visibility() == VISIBLE &amp;&amp; legend-&gt;node() &amp;&amp; legend-&gt;node()-&gt;hasTagName(legendTag))
&gt; +            return legend;
&gt; +    }
&gt; +    return 0;

We may want this new function to be a RenderFieldset member even though its use is accessibility-specific. I’m concerned that this code will get out of sync of RenderFieldset::findLegend if the logic has reason to change there.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1065
&gt;      if (isFieldset())
&gt; -        return axObjectCache()-&gt;getOrCreate(toRenderFieldset(m_renderer)-&gt;findLegend());
&gt; +        if (RenderObject* legend = findLegend(m_renderer))
&gt; +            return axObjectCache()-&gt;getOrCreate(legend);

Need braces since the body of the isFieldset() if is now more than one line.

The old code did not check for 0, but the new code does. Is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719831</commentid>
    <comment_count>9</comment_count>
      <attachid>163944</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-13 13:03:18 -0700</bug_when>
    <thetext>Created attachment 163944
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719836</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-13 13:04:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 163644 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163644&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        (WebCore):
&gt; 
&gt; Please remove bogus lines like this one.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        (AccessibilityRenderObject):
&gt; 
&gt; Please remove bogus lines like this one.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:249
&gt; &gt; +    virtual RenderObject* findLegend(RenderObject*) const;
&gt; 
&gt; Why virtual?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1054
&gt; &gt; +    // This is very similar to RenderFieldset::findLegend, except that it allows using legends
&gt; &gt; +    // that are positioned off-screen for accessibility.
&gt; &gt; +    for (RenderObject* legend = fieldset-&gt;firstChild(); legend; legend = legend-&gt;nextSibling()) {
&gt; &gt; +        if (legend-&gt;style()-&gt;visibility() == VISIBLE &amp;&amp; legend-&gt;node() &amp;&amp; legend-&gt;node()-&gt;hasTagName(legendTag))
&gt; &gt; +            return legend;
&gt; &gt; +    }
&gt; &gt; +    return 0;
&gt; 
&gt; We may want this new function to be a RenderFieldset member even though its use is accessibility-specific. I’m concerned that this code will get out of sync of RenderFieldset::findLegend if the logic has reason to change there.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1065
&gt; &gt;      if (isFieldset())
&gt; &gt; -        return axObjectCache()-&gt;getOrCreate(toRenderFieldset(m_renderer)-&gt;findLegend());
&gt; &gt; +        if (RenderObject* legend = findLegend(m_renderer))
&gt; &gt; +            return axObjectCache()-&gt;getOrCreate(legend);
&gt; 
&gt; Need braces since the body of the isFieldset() if is now more than one line.
&gt; 
&gt; The old code did not check for 0, but the new code does. Is that OK?

Thanks for the feedback. I updated to modify the existing findLegend() function so that it could support this need. That simplified the patch a bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746040</commentid>
    <comment_count>11</comment_count>
      <attachid>163944</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 23:21:20 -0700</bug_when>
    <thetext>Comment on attachment 163944
patch 

Rejecting attachment 163944 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:
ceeded at 1 with fuzz 3.
patching file LayoutTests/accessibility/hidden-legend.html
patching file LayoutTests/accessibility/hidden-legend-expected.txt
patching file LayoutTests/platform/chromium/TestExpectations
Hunk #1 FAILED at 1398.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/chromium/TestExpectations.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Beth Dakin&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14461317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746379</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-19 09:51:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/131908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746380</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-19 09:51:50 -0700</bug_when>
    <thetext>rdar://11769140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751017</commentid>
    <comment_count>14</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-25 10:57:48 -0700</bug_when>
    <thetext>Is accessibility/hidden-legend.html another test that should be skipped on Windows or get Windows specific results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751022</commentid>
    <comment_count>15</comment_count>
      <attachid>163944</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-25 11:00:41 -0700</bug_when>
    <thetext>Comment on attachment 163944
patch 

my guess is that it should be skipped on windows until titleUIElement() is implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751030</commentid>
    <comment_count>16</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-10-25 11:04:58 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 163944 [details])
&gt; my guess is that it should be skipped on windows until titleUIElement() is implemented

Ok I&apos;ll stick it on the list.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163234</attachid>
            <date>2012-09-10 15:41:26 -0700</date>
            <delta_ts>2012-09-12 09:02:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7574</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTEwICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgVk8gaXNzdWVzIHdpdGgg
aGlkZGVuIDxsZWdlbmQ+IGFuZCBsYXN0IGV4cGxpY2l0bHkgbGFiZWxsZWQgZWxlbWVudCB3aXRo
aW4gYSBncm91cCA8ZmllbGRzZXQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZvciBhY2Nlc3NpYmlsaXR5LCB3ZSBuZWVkIHRvIGFsbG93IHRoZSB1c2Ug
b2YgPGxlZ2VuZD5zIHRoYXQgYXJlIG9mZnNjcmVlbi4gVGhpcyBtZWFucyBhY2Nlc3NpYmlsaXR5
CisgICAgICAgIGNvZGUgc2hvdWxkIHVzZSBpdHMgb3duIG1ldGhvZCB0byBmaW5kIHRoZSBsZWdl
bmQsIHdoaWNoIHVubGlrZSB0aGUgb3JpZ2luYWwsIHdpbGwgYWxsb3cgZm9yIG9mZnNjcmVlbgor
ICAgICAgICBlbGVtZW50cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2hpZGRlbi1s
ZWdlbmQuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZmluZExlZ2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KToKKwogMjAxMi0wOS0xMCAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IGNhbnZhcyB2NSBsaW5lIGRhc2ggZmVh
dHVyZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEyODExMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDMsNyArMzAzLDggQEAKICAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiBp
dCdzIGZvY3VzYWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJsZSBhbmQgaXQncyBub3Qg
YSBjb250cm9sIG9yIEFSSUEgY29udHJvbC4KICAgICBib29sIGlzR2VuZXJpY0ZvY3VzYWJsZUVs
ZW1lbnQoKSBjb25zdDsKICAgICBib29sIGlzQVJJQVJhbmdlKCkgY29uc3Q7Ci0KKyAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogZmluZExlZ2VuZChSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICAK
ICAgICB2b2lkIGFkZFRleHRGaWVsZENoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRJbWFnZU1hcENo
aWxkcmVuKCk7CiAgICAgdm9pZCBhZGRDYW52YXNDaGlsZHJlbigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxMjgxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc0
LDcgKzE3NzQsMjEgQEAKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKworUmVuZGVyT2JqZWN0
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpmaW5kTGVnZW5kKFJlbmRlck9iamVjdCogZmll
bGRzZXQpIGNvbnN0Cit7CisgICAgaWYgKCFmaWVsZHNldCkKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCisgICAgLy8gVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gUmVuZGVyRmllbGRzZXQ6OmZpbmRM
ZWdlbmQsIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyB1c2luZyBsZWdlbmRzCisgICAgLy8gdGhhdCBh
cmUgcG9zaXRpb25lZCBvZmYtc2NyZWVuIGZvciBhY2Nlc3NpYmlsaXR5LgorICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBsZWdlbmQgPSBmaWVsZHNldC0+Zmlyc3RDaGlsZCgpOyBsZWdlbmQ7IGxlZ2Vu
ZCA9IGxlZ2VuZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAobGVnZW5kLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiBsZWdlbmQtPm5vZGUoKSAmJiBsZWdlbmQtPm5v
ZGUoKS0+aGFzVGFnTmFtZShsZWdlbmRUYWcpKQorICAgICAgICAgICAgcmV0dXJuIGxlZ2VuZDsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxlVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIpCkBAIC0xNzgyLDcgKzE3OTYsOCBAQAogICAgIAogICAgIC8vIGlmIGlzRmllbGRz
ZXQgaXMgdHJ1ZSwgdGhlIHJlbmRlcmVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBSZW5kZXJGaWVs
ZHNldAogICAgIGlmIChpc0ZpZWxkc2V0KCkpCi0gICAgICAgIHJldHVybiBheE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKHRvUmVuZGVyRmllbGRzZXQobV9yZW5kZXJlciktPmZpbmRMZWdlbmQo
KSk7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGxlZ2VuZCA9IGZpbmRMZWdlbmQobV9yZW5k
ZXJlcikpCisgICAgICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShs
ZWdlbmQpOwogICAgIAogICAgIE5vZGUqIGVsZW1lbnQgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CiAg
ICAgaWYgKCFlbGVtZW50KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4MTIwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMTAg
IENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBWTyBpc3N1
ZXMgd2l0aCBoaWRkZW4gPGxlZ2VuZD4gYW5kIGxhc3QgZXhwbGljaXRseSBsYWJlbGxlZCBlbGVt
ZW50IHdpdGhpbiBhIGdyb3VwIDxmaWVsZHNldD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdl
IHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVz
Y3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hpZGRl
bi1sZWdlbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hp
ZGRlbi1sZWdlbmQuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMTAgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdHJheSBDaGFuZ2Vsb2cgbWVzc2FnZS4KSW5k
ZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGlkZGVuLWxlZ2VuZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGlkZGVuLWxlZ2VuZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oaWRkZW4tbGVnZW5kLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisKKzxzdHlsZT4JCisjZm9ybTIgbGVnZW5kIHtwb3NpdGlvbjphYnNvbHV0ZTsg
bGVmdDotOTk5OXB4O30KKyNmb3JtMyBsZWdlbmQge2Rpc3BsYXk6bm9uZTt9Cis8L3N0eWxlPgor
Cis8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0xIj4KKzxmaWVsZHNldCB0
YWJpbmRleD0wIHJvbGU9Imdyb3VwIiBpZD0iZmllbGRzZXQxIj4KKzxsZWdlbmQ+UGljayB5b3Vy
IGZhdm91cml0ZSBjb2xvdXI6PC9sZWdlbmQ+Cis8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNv
bG91cnMzIiB2YWx1ZT0icmVkMyIgaWQ9InJlZDMiPiA8bGFiZWwgZm9yPSJyZWQzIj5yZWQ8L2xh
YmVsPgorPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb2xvdXJzMyIgdmFsdWU9InllbGxvdzMi
IGlkPSJ5ZWxsb3czIj4gPGxhYmVsIGZvcj0ieWVsbG93MyI+eWVsbG93PC9sYWJlbD4KKzwvZmll
bGRzZXQ+Cis8L2Zvcm0+CisKKzxmb3JtIGFjdGlvbj0iIyIgbWV0aG9kPSJwb3N0IiBpZD0iZm9y
bTIiPgorPGZpZWxkc2V0IHRhYmluZGV4PTAgcm9sZT0iZ3JvdXAiIGlkPSJmaWVsZHNldDIiPgor
PGxlZ2VuZD5QaWNrIHlvdXIgZmF2b3VyaXRlIGNvbG91cjo8L2xlZ2VuZD4KKzxpbnB1dCB0eXBl
PSJyYWRpbyIgbmFtZT0iY29sb3VyczMiIHZhbHVlPSJyZWQzIiBpZD0icmVkMyI+IDxsYWJlbCBm
b3I9InJlZDMiPnJlZDwvbGFiZWw+Cis8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNvbG91cnMz
IiB2YWx1ZT0ieWVsbG93MyIgaWQ9InllbGxvdzMiPiA8bGFiZWwgZm9yPSJ5ZWxsb3czIj55ZWxs
b3c8L2xhYmVsPgorPC9maWVsZHNldD4KKzwvZm9ybT4KKworPGZvcm0gYWN0aW9uPSIjIiBtZXRo
b2Q9InBvc3QiIGlkPSJmb3JtMyI+Cis8ZmllbGRzZXQgdGFiaW5kZXg9MCByb2xlPSJncm91cCIg
aWQ9ImZpZWxkc2V0MyI+Cis8bGVnZW5kPlBpY2sgeW91ciBmYXZvdXJpdGUgY29sb3VyOjwvbGVn
ZW5kPgorPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb2xvdXJzMyIgdmFsdWU9InJlZDMiIGlk
PSJyZWQzIj4gPGxhYmVsIGZvcj0icmVkMyI+cmVkPC9sYWJlbD4KKzxpbnB1dCB0eXBlPSJyYWRp
byIgbmFtZT0iY29sb3VyczMiIHZhbHVlPSJ5ZWxsb3czIiBpZD0ieWVsbG93MyI+IDxsYWJlbCBm
b3I9InllbGxvdzMiPnllbGxvdzwvbGFiZWw+Cis8L2ZpZWxkc2V0PgorPC9mb3JtPgorCis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IHRoZSBsZWdlbmQgaXMgc3RpbGwgdXNlZCBhcyB0aGUgdGl0bGUgVUkgZWxlbWVudCBldmVu
IHdoZW4gb2ZmLXNjcmVlbiAoYnV0IG5vdCB3aGVuIGRpc3BsYXk6bm9uZSBpcyB1c2VkKSIpCisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKKworICAgIC8vIDFzdCBjYXNlOiB0ZXN0aW5nIHdoZW4gYSBmaWVsZHNldCB1c2VzIGFuIHVu
bW9kaWZpZWQgbGVnZW5kLiBUaGUgdGl0bGUgVUkgZWxlbWVudAorICAgIC8vIHNob3VsZCBiZSB0
aGUgbGVnZW5kICh3aGljaCBpcyB0aGUgZmlyc3QgY2hpbGQpLgorICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmaWVsZHNldDEnKS5mb2N1cygpOworICAgIHZhciBmaWVsZHNldDEgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZVRydWUoImZp
ZWxkc2V0MS50aXRsZVVJRWxlbWVudCgpLmlzRXF1YWwoZmllbGRzZXQxLmNoaWxkQXRJbmRleCgw
KSkiKTsKKworICAgIC8vIDJuZCBjYXNlOiBhIGhpZGRlbiBsZWdlbmQgc2hvdWxkIHN0aWxsIGJl
IHRoZSB0aXRsZSBVSSBlbGVtZW50LgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWVs
ZHNldDInKS5mb2N1cygpOworICAgIHZhciBmaWVsZHNldDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZVRydWUoImZpZWxkc2V0Mi50aXRsZVVJ
RWxlbWVudCgpLmlzRXF1YWwoZmllbGRzZXQyLmNoaWxkQXRJbmRleCgwKSkiKTsKKworICAgIC8v
IDNyZCBjYXNlOiBhIGxlZ2VuZCB3aXRoIGRpc3BsYXk6bm9uZSBzaG91bGQgbm90IGJlIGEgdGl0
bGUgVUkgZWxlbWVudC4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGRzZXQzJyku
Zm9jdXMoKTsKKyAgICB2YXIgZmllbGRzZXQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiZmllbGRzZXQzLnRpdGxlVUlFbGVtZW50
KCkuaXNWYWxpZCIpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGlkZGVuLWxlZ2VuZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hp
ZGRlbi1sZWdlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitQ
aWNrIHlvdXIgZmF2b3VyaXRlIGNvbG91cjoKKyByZWQgIHllbGxvdworUGljayB5b3VyIGZhdm91
cml0ZSBjb2xvdXI6IHJlZCAgeWVsbG93CisgcmVkICB5ZWxsb3cKK1RoaXMgdGVzdHMgdGhhdCB0
aGUgbGVnZW5kIGlzIHN0aWxsIHVzZWQgYXMgdGhlIHRpdGxlIFVJIGVsZW1lbnQgZXZlbiB3aGVu
IG9mZi1zY3JlZW4gKGJ1dCBub3Qgd2hlbiBkaXNwbGF5Om5vbmUgaXMgdXNlZCkKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmllbGRzZXQxLnRpdGxlVUlFbGVtZW50KCku
aXNFcXVhbChmaWVsZHNldDEuY2hpbGRBdEluZGV4KDApKSBpcyB0cnVlCitQQVNTIGZpZWxkc2V0
Mi50aXRsZVVJRWxlbWVudCgpLmlzRXF1YWwoZmllbGRzZXQyLmNoaWxkQXRJbmRleCgwKSkgaXMg
dHJ1ZQorUEFTUyBmaWVsZHNldDMudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIGZhbHNlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>
<flag name="commit-queue"
          id="174655"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163644</attachid>
            <date>2012-09-12 09:02:54 -0700</date>
            <delta_ts>2012-09-13 13:03:18 -0700</delta_ts>
            <desc>patch </desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>7501</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTEyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgVk8gaXNzdWVzIHdpdGgg
aGlkZGVuIDxsZWdlbmQ+IGFuZCBsYXN0IGV4cGxpY2l0bHkgbGFiZWxsZWQgZWxlbWVudCB3aXRo
aW4gYSBncm91cCA8ZmllbGRzZXQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZvciBhY2Nlc3NpYmlsaXR5LCB3ZSBuZWVkIHRvIGFsbG93IHRoZSB1c2Ug
b2YgPGxlZ2VuZD5zIHRoYXQgYXJlIG9mZnNjcmVlbi4gVGhpcyBtZWFucyBhY2Nlc3NpYmlsaXR5
CisgICAgICAgIGNvZGUgc2hvdWxkIHVzZSBpdHMgb3duIG1ldGhvZCB0byBmaW5kIHRoZSBsZWdl
bmQsIHdoaWNoIHVubGlrZSB0aGUgb3JpZ2luYWwsIHdpbGwgYWxsb3cgZm9yIG9mZnNjcmVlbgor
ICAgICAgICBlbGVtZW50cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2hpZGRlbi1s
ZWdlbmQuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZmluZExlZ2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KToKKwogMjAxMi0wOS0xMiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpv
bmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogUmVmYWN0b3IgbW9zdCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0IGNvZGUgaW50byBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEyODMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYs
NyArMjQ2LDggQEAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0
OwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZFbGVtZW50VHlwZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lKSBjb25zdDsKICAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiBpdCdzIGZvY3Vz
YWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJsZSBhbmQgaXQncyBub3QgYSBjb250cm9s
IG9yIEFSSUEgY29udHJvbC4KLQorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBmaW5kTGVnZW5k
KFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIAogICAgIHZvaWQgYWRkVGV4dEZpZWxkQ2hpbGRy
ZW4oKTsKICAgICB2b2lkIGFkZEltYWdlTWFwQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZENhbnZh
c0NoaWxkcmVuKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEyODMxOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzksNyArMTAzOSwyMSBAQAogICAgIAogICAgIHJl
dHVybiB0cnVlOwogfQorCitSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmZpbmRMZWdlbmQoUmVuZGVyT2JqZWN0KiBmaWVsZHNldCkgY29uc3QKK3sKKyAgICBpZiAoIWZp
ZWxkc2V0KQorICAgICAgICByZXR1cm4gMDsKICAgICAKKyAgICAvLyBUaGlzIGlzIHZlcnkgc2lt
aWxhciB0byBSZW5kZXJGaWVsZHNldDo6ZmluZExlZ2VuZCwgZXhjZXB0IHRoYXQgaXQgYWxsb3dz
IHVzaW5nIGxlZ2VuZHMKKyAgICAvLyB0aGF0IGFyZSBwb3NpdGlvbmVkIG9mZi1zY3JlZW4gZm9y
IGFjY2Vzc2liaWxpdHkuCisgICAgZm9yIChSZW5kZXJPYmplY3QqIGxlZ2VuZCA9IGZpZWxkc2V0
LT5maXJzdENoaWxkKCk7IGxlZ2VuZDsgbGVnZW5kID0gbGVnZW5kLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIGlmIChsZWdlbmQtPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYm
IGxlZ2VuZC0+bm9kZSgpICYmIGxlZ2VuZC0+bm9kZSgpLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykp
CisgICAgICAgICAgICByZXR1cm4gbGVnZW5kOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwog
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGVVSUVs
ZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTEwNDcsNyArMTA2MSw4
IEBACiAgICAgCiAgICAgLy8gaWYgaXNGaWVsZHNldCBpcyB0cnVlLCB0aGUgcmVuZGVyZXIgaXMg
Z3VhcmFudGVlZCB0byBiZSBhIFJlbmRlckZpZWxkc2V0CiAgICAgaWYgKGlzRmllbGRzZXQoKSkK
LSAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUodG9SZW5kZXJGaWVs
ZHNldChtX3JlbmRlcmVyKS0+ZmluZExlZ2VuZCgpKTsKKyAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogbGVnZW5kID0gZmluZExlZ2VuZChtX3JlbmRlcmVyKSkKKyAgICAgICAgICAgIHJldHVybiBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGxlZ2VuZCk7CiAgICAgCiAgICAgTm9kZSogZWxl
bWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIWVsZW1lbnQpCkluZGV4OiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGlkZGVuLWxlZ2VuZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorCis8c3R5bGU+CQorI2Zvcm0yIGxlZ2VuZCB7cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTk5
OTlweDt9CisjZm9ybTMgbGVnZW5kIHtkaXNwbGF5Om5vbmU7fQorPC9zdHlsZT4KKworPGZvcm0g
YWN0aW9uPSIjIiBtZXRob2Q9InBvc3QiIGlkPSJmb3JtMSI+Cis8ZmllbGRzZXQgdGFiaW5kZXg9
MCByb2xlPSJncm91cCIgaWQ9ImZpZWxkc2V0MSI+Cis8bGVnZW5kPlBpY2sgeW91ciBmYXZvdXJp
dGUgY29sb3VyOjwvbGVnZW5kPgorPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb2xvdXJzMyIg
dmFsdWU9InJlZDMiIGlkPSJyZWQzIj4gPGxhYmVsIGZvcj0icmVkMyI+cmVkPC9sYWJlbD4KKzxp
bnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY29sb3VyczMiIHZhbHVlPSJ5ZWxsb3czIiBpZD0ieWVs
bG93MyI+IDxsYWJlbCBmb3I9InllbGxvdzMiPnllbGxvdzwvbGFiZWw+Cis8L2ZpZWxkc2V0Pgor
PC9mb3JtPgorCis8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0yIj4KKzxm
aWVsZHNldCB0YWJpbmRleD0wIHJvbGU9Imdyb3VwIiBpZD0iZmllbGRzZXQyIj4KKzxsZWdlbmQ+
UGljayB5b3VyIGZhdm91cml0ZSBjb2xvdXI6PC9sZWdlbmQ+Cis8aW5wdXQgdHlwZT0icmFkaW8i
IG5hbWU9ImNvbG91cnMzIiB2YWx1ZT0icmVkMyIgaWQ9InJlZDMiPiA8bGFiZWwgZm9yPSJyZWQz
Ij5yZWQ8L2xhYmVsPgorPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb2xvdXJzMyIgdmFsdWU9
InllbGxvdzMiIGlkPSJ5ZWxsb3czIj4gPGxhYmVsIGZvcj0ieWVsbG93MyI+eWVsbG93PC9sYWJl
bD4KKzwvZmllbGRzZXQ+Cis8L2Zvcm0+CisKKzxmb3JtIGFjdGlvbj0iIyIgbWV0aG9kPSJwb3N0
IiBpZD0iZm9ybTMiPgorPGZpZWxkc2V0IHRhYmluZGV4PTAgcm9sZT0iZ3JvdXAiIGlkPSJmaWVs
ZHNldDMiPgorPGxlZ2VuZD5QaWNrIHlvdXIgZmF2b3VyaXRlIGNvbG91cjo8L2xlZ2VuZD4KKzxp
bnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY29sb3VyczMiIHZhbHVlPSJyZWQzIiBpZD0icmVkMyI+
IDxsYWJlbCBmb3I9InJlZDMiPnJlZDwvbGFiZWw+Cis8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9
ImNvbG91cnMzIiB2YWx1ZT0ieWVsbG93MyIgaWQ9InllbGxvdzMiPiA8bGFiZWwgZm9yPSJ5ZWxs
b3czIj55ZWxsb3c8L2xhYmVsPgorPC9maWVsZHNldD4KKzwvZm9ybT4KKworPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUg
bGVnZW5kIGlzIHN0aWxsIHVzZWQgYXMgdGhlIHRpdGxlIFVJIGVsZW1lbnQgZXZlbiB3aGVuIG9m
Zi1zY3JlZW4gKGJ1dCBub3Qgd2hlbiBkaXNwbGF5Om5vbmUgaXMgdXNlZCkiKQorCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAg
ICAvLyAxc3QgY2FzZTogdGVzdGluZyB3aGVuIGEgZmllbGRzZXQgdXNlcyBhbiB1bm1vZGlmaWVk
IGxlZ2VuZC4gVGhlIHRpdGxlIFVJIGVsZW1lbnQKKyAgICAvLyBzaG91bGQgYmUgdGhlIGxlZ2Vu
ZCAod2hpY2ggaXMgdGhlIGZpcnN0IGNoaWxkKS4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZmllbGRzZXQxJykuZm9jdXMoKTsKKyAgICB2YXIgZmllbGRzZXQxID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJmaWVsZHNldDEu
dGl0bGVVSUVsZW1lbnQoKS5pc0VxdWFsKGZpZWxkc2V0MS5jaGlsZEF0SW5kZXgoMCkpIik7CisK
KyAgICAvLyAybmQgY2FzZTogYSBoaWRkZW4gbGVnZW5kIHNob3VsZCBzdGlsbCBiZSB0aGUgdGl0
bGUgVUkgZWxlbWVudC4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGRzZXQyJyku
Zm9jdXMoKTsKKyAgICB2YXIgZmllbGRzZXQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJmaWVsZHNldDIudGl0bGVVSUVsZW1lbnQo
KS5pc0VxdWFsKGZpZWxkc2V0Mi5jaGlsZEF0SW5kZXgoMCkpIik7CisKKyAgICAvLyAzcmQgY2Fz
ZTogYSBsZWdlbmQgd2l0aCBkaXNwbGF5Om5vbmUgc2hvdWxkIG5vdCBiZSBhIHRpdGxlIFVJIGVs
ZW1lbnQuCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkc2V0MycpLmZvY3VzKCk7
CisgICAgdmFyIGZpZWxkc2V0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgIHNob3VsZEJlRmFsc2UoImZpZWxkc2V0My50aXRsZVVJRWxlbWVudCgpLmlzVmFs
aWQiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oaWRkZW4tbGVnZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oaWRkZW4tbGVn
ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorUGljayB5b3Vy
IGZhdm91cml0ZSBjb2xvdXI6CisgcmVkICB5ZWxsb3cKK1BpY2sgeW91ciBmYXZvdXJpdGUgY29s
b3VyOiByZWQgIHllbGxvdworIHJlZCAgeWVsbG93CitUaGlzIHRlc3RzIHRoYXQgdGhlIGxlZ2Vu
ZCBpcyBzdGlsbCB1c2VkIGFzIHRoZSB0aXRsZSBVSSBlbGVtZW50IGV2ZW4gd2hlbiBvZmYtc2Ny
ZWVuIChidXQgbm90IHdoZW4gZGlzcGxheTpub25lIGlzIHVzZWQpCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGZpZWxkc2V0MS50aXRsZVVJRWxlbWVudCgpLmlzRXF1YWwo
ZmllbGRzZXQxLmNoaWxkQXRJbmRleCgwKSkgaXMgdHJ1ZQorUEFTUyBmaWVsZHNldDIudGl0bGVV
SUVsZW1lbnQoKS5pc0VxdWFsKGZpZWxkc2V0Mi5jaGlsZEF0SW5kZXgoMCkpIGlzIHRydWUKK1BB
U1MgZmllbGRzZXQzLnRpdGxlVUlFbGVtZW50KCkuaXNWYWxpZCBpcyBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTI4
MzE4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwko
d29ya2luZyBjb3B5KQpAQCAtMTM5OCw2ICsxMzk4LDcgQEAKIEJVR0NSMTAzMjIgU0tJUCA6IGFj
Y2Vzc2liaWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVudC5odG1sID0gVEVYVAogQlVHQ1IxMDMyMiBT
S0lQIDogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWVsZW1lbnRzLmh0bWwgPSBURVhUCiAKK0JVR1dL
OTY1MjkgU0tJUCA6IGFjY2Vzc2liaWxpdHkvaGlkZGVuLWxlZ2VuZC5odG1sID0gVEVYVAogQlVH
V0s3MzkxMiBTS0lQIDogYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXRleHQuaHRtbCA9IFRJ
TUVPVVQgUEFTUwogCiBCVUdXSzczOTEyIDogYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNl
bmRzLW5vdGlmaWNhdGlvbi5odG1sID0gVEVYVCBQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163944</attachid>
            <date>2012-09-13 13:03:18 -0700</date>
            <delta_ts>2012-10-25 11:00:41 -0700</delta_ts>
            <desc>patch </desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>8294</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgVk8gaXNzdWVzIHdpdGgg
aGlkZGVuIDxsZWdlbmQ+IGFuZCBsYXN0IGV4cGxpY2l0bHkgbGFiZWxsZWQgZWxlbWVudCB3aXRo
aW4gYSBncm91cCA8ZmllbGRzZXQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdoZW4gZmluZGluZyBhIDxsZWdlbmQ+IGZvciBhY2Nlc3NpYmlsaXR5LCB3
ZSBuZWVkIHRvIGNvbnNpZGVyIHRob3NlIHRoYXQgYXJlIG9mZnNjcmVlbi4gVGhpcyBwYXRjaAor
ICAgICAgICBtb2RpZmllcyB0aGUgb3JpZ2luYWwgZmluZExlZ2VuZCBtZXRob2QgdG8gdGFrZSBh
IHBhcmFtZXRlciB0byBkZXRlcm1pbmUgd2hhdCBzaG91bGQgYmUgZG9uZS4KKworICAgICAgICBU
ZXN0OiBhY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQuaHRtbAorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRpdGxlVUlFbGVtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmll
bGRzZXQ6OmZpbmRMZWdlbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5o
OgorCiAyMDEyLTA5LTEzICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgRmxleGl0ZW0gbWFyZ2lucyBzaG91bGQgYmUgYmFzZWQgb24gY29udGVudCB3aWR0aCwgbm90
IHdpZHRoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEyODQ3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNDcsNyArMTA0Nyw3IEBACiAgICAgCiAgICAgLy8gaWYgaXNG
aWVsZHNldCBpcyB0cnVlLCB0aGUgcmVuZGVyZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIFJlbmRl
ckZpZWxkc2V0CiAgICAgaWYgKGlzRmllbGRzZXQoKSkKLSAgICAgICAgcmV0dXJuIGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUodG9SZW5kZXJGaWVsZHNldChtX3JlbmRlcmVyKS0+ZmluZExl
Z2VuZCgpKTsKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUodG9S
ZW5kZXJGaWVsZHNldChtX3JlbmRlcmVyKS0+ZmluZExlZ2VuZChSZW5kZXJGaWVsZHNldDo6SW5j
bHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cpKTsKICAgICAKICAgICBOb2RlKiBlbGVtZW50ID0gbV9y
ZW5kZXJlci0+bm9kZSgpOwogICAgIGlmICghZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCShyZXZpc2lvbiAxMjg0NzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsOCBAQAogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlckZpZWxkc2V0KE5vZGUqKTsK
IAotICAgIFJlbmRlckJveCogZmluZExlZ2VuZCgpIGNvbnN0OworICAgIGVudW0gRmluZExlZ2Vu
ZE9wdGlvbiB7IElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEluY2x1ZGVGbG9hdGluZ09yT3V0
T2ZGbG93IH07CisgICAgUmVuZGVyQm94KiBmaW5kTGVnZW5kKEZpbmRMZWdlbmRPcHRpb24gPSBJ
Z25vcmVGbG9hdGluZ09yT3V0T2ZGbG93KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRmllbGRTZXQi
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAJ
KHJldmlzaW9uIDEyODQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMCArMTIzLDEzIEBACiAgICAgcmV0dXJu
IGxlZ2VuZDsKIH0KIAotUmVuZGVyQm94KiBSZW5kZXJGaWVsZHNldDo6ZmluZExlZ2VuZCgpIGNv
bnN0CitSZW5kZXJCb3gqIFJlbmRlckZpZWxkc2V0OjpmaW5kTGVnZW5kKEZpbmRMZWdlbmRPcHRp
b24gb3B0aW9uKSBjb25zdAogewogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBsZWdlbmQgPSBmaXJz
dENoaWxkKCk7IGxlZ2VuZDsgbGVnZW5kID0gbGVnZW5kLT5uZXh0U2libGluZygpKSB7Ci0gICAg
ICAgIGlmICghbGVnZW5kLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbGVn
ZW5kLT5ub2RlKCkgJiYgKGxlZ2VuZC0+bm9kZSgpLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykpKQor
ICAgICAgICBpZiAob3B0aW9uID09IElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3cgJiYgbGVnZW5k
LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChsZWdlbmQtPm5vZGUoKSAmJiAobGVnZW5kLT5ub2Rl
KCktPmhhc1RhZ05hbWUobGVnZW5kVGFnKSkpCiAgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJC
b3gobGVnZW5kKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjg0
ODcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxMi0wOS0xMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgor
CisgICAgICAgIFZPIGlzc3VlcyB3aXRoIGhpZGRlbiA8bGVnZW5kPiBhbmQgbGFzdCBleHBsaWNp
dGx5IGxhYmVsbGVkIGVsZW1lbnQgd2l0aGluIGEgZ3JvdXAgPGZpZWxkc2V0PgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYzMjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaGlk
ZGVuLWxlZ2VuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
aGlkZGVuLWxlZ2VuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA5LTEzICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRmxleGl0ZW0gbWFyZ2lucyBzaG91bGQgYmUgYmFzZWQgb24gY29u
dGVudCB3aWR0aCwgbm90IHdpZHRoCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hp
ZGRlbi1sZWdlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2hpZGRlbi1sZWdlbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaGlkZGVuLWxlZ2VuZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CQorI2Zvcm0yIGxl
Z2VuZCB7cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTk5OTlweDt9CisjZm9ybTMgbGVnZW5kIHtk
aXNwbGF5Om5vbmU7fQorPC9zdHlsZT4KKworPGZvcm0gYWN0aW9uPSIjIiBtZXRob2Q9InBvc3Qi
IGlkPSJmb3JtMSI+Cis8ZmllbGRzZXQgdGFiaW5kZXg9MCByb2xlPSJncm91cCIgaWQ9ImZpZWxk
c2V0MSI+Cis8bGVnZW5kPlBpY2sgeW91ciBmYXZvdXJpdGUgY29sb3VyOjwvbGVnZW5kPgorPGlu
cHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb2xvdXJzMyIgdmFsdWU9InJlZDMiIGlkPSJyZWQzIj4g
PGxhYmVsIGZvcj0icmVkMyI+cmVkPC9sYWJlbD4KKzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0i
Y29sb3VyczMiIHZhbHVlPSJ5ZWxsb3czIiBpZD0ieWVsbG93MyI+IDxsYWJlbCBmb3I9InllbGxv
dzMiPnllbGxvdzwvbGFiZWw+Cis8L2ZpZWxkc2V0PgorPC9mb3JtPgorCis8Zm9ybSBhY3Rpb249
IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0yIj4KKzxmaWVsZHNldCB0YWJpbmRleD0wIHJvbGU9
Imdyb3VwIiBpZD0iZmllbGRzZXQyIj4KKzxsZWdlbmQ+UGljayB5b3VyIGZhdm91cml0ZSBjb2xv
dXI6PC9sZWdlbmQ+Cis8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNvbG91cnMzIiB2YWx1ZT0i
cmVkMyIgaWQ9InJlZDMiPiA8bGFiZWwgZm9yPSJyZWQzIj5yZWQ8L2xhYmVsPgorPGlucHV0IHR5
cGU9InJhZGlvIiBuYW1lPSJjb2xvdXJzMyIgdmFsdWU9InllbGxvdzMiIGlkPSJ5ZWxsb3czIj4g
PGxhYmVsIGZvcj0ieWVsbG93MyI+eWVsbG93PC9sYWJlbD4KKzwvZmllbGRzZXQ+Cis8L2Zvcm0+
CisKKzxmb3JtIGFjdGlvbj0iIyIgbWV0aG9kPSJwb3N0IiBpZD0iZm9ybTMiPgorPGZpZWxkc2V0
IHRhYmluZGV4PTAgcm9sZT0iZ3JvdXAiIGlkPSJmaWVsZHNldDMiPgorPGxlZ2VuZD5QaWNrIHlv
dXIgZmF2b3VyaXRlIGNvbG91cjo8L2xlZ2VuZD4KKzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0i
Y29sb3VyczMiIHZhbHVlPSJyZWQzIiBpZD0icmVkMyI+IDxsYWJlbCBmb3I9InJlZDMiPnJlZDwv
bGFiZWw+Cis8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNvbG91cnMzIiB2YWx1ZT0ieWVsbG93
MyIgaWQ9InllbGxvdzMiPiA8bGFiZWwgZm9yPSJ5ZWxsb3czIj55ZWxsb3c8L2xhYmVsPgorPC9m
aWVsZHNldD4KKzwvZm9ybT4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgbGVnZW5kIGlzIHN0aWxsIHVzZWQgYXMg
dGhlIHRpdGxlIFVJIGVsZW1lbnQgZXZlbiB3aGVuIG9mZi1zY3JlZW4gKGJ1dCBub3Qgd2hlbiBk
aXNwbGF5Om5vbmUgaXMgdXNlZCkiKQorCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAgICAvLyAxc3QgY2FzZTogdGVzdGluZyB3
aGVuIGEgZmllbGRzZXQgdXNlcyBhbiB1bm1vZGlmaWVkIGxlZ2VuZC4gVGhlIHRpdGxlIFVJIGVs
ZW1lbnQKKyAgICAvLyBzaG91bGQgYmUgdGhlIGxlZ2VuZCAod2hpY2ggaXMgdGhlIGZpcnN0IGNo
aWxkKS4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGRzZXQxJykuZm9jdXMoKTsK
KyAgICB2YXIgZmllbGRzZXQxID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgc2hvdWxkQmVUcnVlKCJmaWVsZHNldDEudGl0bGVVSUVsZW1lbnQoKS5pc0VxdWFs
KGZpZWxkc2V0MS5jaGlsZEF0SW5kZXgoMCkpIik7CisKKyAgICAvLyAybmQgY2FzZTogYSBoaWRk
ZW4gbGVnZW5kIHNob3VsZCBzdGlsbCBiZSB0aGUgdGl0bGUgVUkgZWxlbWVudC4KKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGRzZXQyJykuZm9jdXMoKTsKKyAgICB2YXIgZmllbGRz
ZXQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxk
QmVUcnVlKCJmaWVsZHNldDIudGl0bGVVSUVsZW1lbnQoKS5pc0VxdWFsKGZpZWxkc2V0Mi5jaGls
ZEF0SW5kZXgoMCkpIik7CisKKyAgICAvLyAzcmQgY2FzZTogYSBsZWdlbmQgd2l0aCBkaXNwbGF5
Om5vbmUgc2hvdWxkIG5vdCBiZSBhIHRpdGxlIFVJIGVsZW1lbnQuCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2ZpZWxkc2V0MycpLmZvY3VzKCk7CisgICAgdmFyIGZpZWxkc2V0MyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlVHJ1ZSgi
ZmllbGRzZXQzLnRpdGxlVUlFbGVtZW50KCkgPT0gbnVsbCB8fCAhZmllbGRzZXQzLnRpdGxlVUlF
bGVtZW50KCkuaXNWYWxpZCIpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGlkZGVuLWxl
Z2VuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2hpZGRlbi1sZWdlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
IEBACitQaWNrIHlvdXIgZmF2b3VyaXRlIGNvbG91cjoKKyByZWQgIHllbGxvdworUGljayB5b3Vy
IGZhdm91cml0ZSBjb2xvdXI6IHJlZCAgeWVsbG93CisgcmVkICB5ZWxsb3cKK1RoaXMgdGVzdHMg
dGhhdCB0aGUgbGVnZW5kIGlzIHN0aWxsIHVzZWQgYXMgdGhlIHRpdGxlIFVJIGVsZW1lbnQgZXZl
biB3aGVuIG9mZi1zY3JlZW4gKGJ1dCBub3Qgd2hlbiBkaXNwbGF5Om5vbmUgaXMgdXNlZCkKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmllbGRzZXQxLnRpdGxlVUlFbGVt
ZW50KCkuaXNFcXVhbChmaWVsZHNldDEuY2hpbGRBdEluZGV4KDApKSBpcyB0cnVlCitQQVNTIGZp
ZWxkc2V0Mi50aXRsZVVJRWxlbWVudCgpLmlzRXF1YWwoZmllbGRzZXQyLmNoaWxkQXRJbmRleCgw
KSkgaXMgdHJ1ZQorUEFTUyBmaWVsZHNldDMudGl0bGVVSUVsZW1lbnQoKSA9PSBudWxsIHx8ICFm
aWVsZHNldDMudGl0bGVVSUVsZW1lbnQoKS5pc1ZhbGlkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDEyODQ3OSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtp
bmcgY29weSkKQEAgLTEzOTgsNiArMTM5OCw3IEBACiBCVUdDUjEwMzIyIFNLSVAgOiBhY2Nlc3Np
YmlsaXR5L3RyYW5zZm9ybWVkLWVsZW1lbnQuaHRtbCA9IFRFWFQKIEJVR0NSMTAzMjIgU0tJUCA6
IGFjY2Vzc2liaWxpdHkvdmlzaWJsZS1lbGVtZW50cy5odG1sID0gVEVYVAogCitCVUdXSzk2NTI5
IFNLSVAgOiBhY2Nlc3NpYmlsaXR5L2hpZGRlbi1sZWdlbmQuaHRtbCA9IFRFWFQKIEJVR1dLNzM5
MTIgU0tJUCA6IGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC10ZXh0Lmh0bWwgPSBUSU1FT1VU
IFBBU1MKIAogQlVHV0s3MzkxMiA6IGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1u
b3RpZmljYXRpb24uaHRtbCA9IFRFWFQgUEFTUwo=
</data>
<flag name="review"
          id="175574"
          type_id="1"
          status="+"
          setter="bdakin"
    />
    <flag name="commit-queue"
          id="182904"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>