<?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>25002</bug_id>
          
          <creation_ts>2009-04-02 08:13:11 -0700</creation_ts>
          <short_desc>Repeated copy/paste can lead to deeply nested divs</short_desc>
          <delta_ts>2010-02-04 18:38:36 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.mozilla.org/editor/midasdemo/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Annie Sullivan">sullivan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>michaelthomas</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116277</commentid>
    <comment_count>0</comment_count>
    <who name="Annie Sullivan">sullivan</who>
    <bug_when>2009-04-02 08:13:11 -0700</bug_when>
    <thetext>Steps to reproduce:
1. Go to Midas demo: http://www.mozilla.org/editor/midasdemo/
2. Type the following:
a
b
c

3. Highlight &quot;b&quot; and press Indent button. Resulting HTML:
a&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;
4. Select everything and copy. Paste in newline after &quot;c&quot;.
5. Now select pasted content and paste in newline at end.
6. Repeat step 5 a couple of times

Actual result:
Each paste ends up in a nested div. Resulting HTML (blockquote styles removed for readability):
a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;&lt;div&gt;a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;&lt;div&gt;a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;&lt;div&gt;a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

Expected result:
No extra divs should be added:
a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;a&lt;blockquote class=&quot;webkit-indent-blockquote&quot;&gt;b&lt;/blockquote&gt;&lt;div&gt;c&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186304</commentid>
    <comment_count>1</comment_count>
      <attachid>47813</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-31 22:41:43 -0800</bug_when>
    <thetext>Created attachment 47813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186307</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-31 22:50:01 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=47813) [details]
&gt; Patch

When inserting a new line, we grab the last block node and clone it as a sibling. For example, in the original bug report, the last block is the &lt;div&gt; around &quot;c&quot; and it gets cloned as a sibling of c.  This causes a problem in this test case because the pasted content includes a &lt;div&gt; at the end.  When we create a new line after a paste, we are now one level deeper than before.

For tags other than divs, this is what we want because we want to keep our indention level.  For example, for blockquote tags, when you insert a newline, you want to stay at the same depth as before (i.e., you want nested blockquotes).  The same is true for lists.

The patch just special cases nested divs and breaks out of them when inserting a new line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186480</commentid>
    <comment_count>3</comment_count>
      <attachid>47813</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-02-01 10:35:06 -0800</bug_when>
    <thetext>Comment on attachment 47813
Patch

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index b3b56b3..7a80056 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,25 @@
&gt; +2010-01-31  Tony Chang  &lt;tony@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25002
&gt; +        When inserting a new paragraph, avoid nesting empty divs.  When
&gt; +        pasting near the end of a paragraph, this prevents each paste
&gt; +        command for getting nested one level deeper.
&gt; +
&gt; +        Three paste tests have been rebaselined since this causes the pasted
&gt; +        content to be outside the last div instead of inside.  E.g.,
&gt; +        &lt;div&gt;foo&lt;div&gt;bar&lt;/div&gt;[pasted content]&lt;/div&gt; is now
&gt; +        &lt;div&gt;foo&lt;div&gt;bar&lt;/div&gt;&lt;/div&gt;&lt;div&gt;[pasted content]&lt;/div&gt;
&gt; +
&gt; +        The new test verifies this behavior.
&gt; +
&gt; +        * editing/inserting/paragraph-outside-nested-divs-expected.txt: Added.
&gt; +        * editing/inserting/paragraph-outside-nested-divs.html: Added.
&gt; +        * platform/mac/editing/pasteboard/paste-text-012-expected.txt:
&gt; +        * platform/mac/editing/pasteboard/paste-text-013-expected.txt:
&gt; +        * platform/mac/editing/pasteboard/paste-text-017-expected.txt:
&gt; +
&gt;  2010-01-31  Kent Tamura  &lt;tkent@chromium.org&gt;
&gt;  
&gt;          Reviewed by Darin Adler.
&gt; diff --git a/LayoutTests/editing/inserting/paragraph-outside-nested-divs-expected.txt b/LayoutTests/editing/inserting/paragraph-outside-nested-divs-expected.txt
&gt; new file mode 100644
&gt; index 0000000..7f1d2d5
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/inserting/paragraph-outside-nested-divs-expected.txt
&gt; @@ -0,0 +1,9 @@
&gt; +When inserting a new line, we should break out of nested divs.
&gt; +
&gt; +SUCCESS
&gt; +
&gt; +first
&gt; +second
&gt; +This should be in nested divs.
&gt; +third
&gt; +This should be in a single div.
&gt; diff --git a/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html b/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html
&gt; new file mode 100644
&gt; index 0000000..c366b6d
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html
&gt; @@ -0,0 +1,45 @@
&gt; +&lt;body contentEditable=&quot;true&quot;&gt;
&gt; +&lt;p&gt;When inserting a new line, we should break out of nested divs.&lt;/p&gt;
&gt; +&lt;p id=&quot;results&quot;&gt;&lt;p&gt;
&gt; +&lt;div&gt;first&lt;div&gt;second&lt;/div&gt;&lt;div&gt;third&lt;/div&gt;&lt;/div&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;script src=&quot;../editing.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;script&gt;
&gt; +    if (window.layoutTestController)
&gt; +        window.layoutTestController.dumpAsText();
&gt; +
&gt; +    function fail(msg) {
&gt; +        document.getElementById(&quot;results&quot;).innerText = &quot;FAIL&quot;;
&gt; +        throw msg;
&gt; +    }
&gt; +
&gt; +    // Try inserting a new line after the last div.
&gt; +    var div2 = document.getElementsByTagName(&quot;div&quot;)[1];
&gt; +    var div3 = document.getElementsByTagName(&quot;div&quot;)[2];
&gt; +    execSetSelectionCommand(div3, 0, div3, 0);
&gt; +    execMoveSelectionForwardByWordCommand();
&gt; +
&gt; +    execTypeCharacterCommand(&quot;\n&quot;);
&gt; +    execInsertHTMLCommand(&quot;This should be in a single div.&quot;);
&gt; +
&gt; +    var div4 = document.getElementsByTagName(&quot;div&quot;)[3];
&gt; +    if (div4.innerHTML != &quot;This should be in a single div.&quot;)
&gt; +        fail(&quot;wrong div4? &quot; + div4.innerHTML);
&gt; +    if (div4.parentNode.tagName != &quot;BODY&quot;)
&gt; +        fail(&quot;div should not be nested: &quot; + div4.parentNode.tagName);
&gt; +
&gt; +    // Try inserting a new line after the second div.  This should be nested.
&gt; +    execSetSelectionCommand(div2, 0, div2, 0);
&gt; +    execMoveSelectionForwardByWordCommand();
&gt; +
&gt; +    execTypeCharacterCommand(&quot;\n&quot;);
&gt; +    execInsertHTMLCommand(&quot;This should be in nested divs.&quot;);
&gt; +
&gt; +    var nestedDiv = document.getElementsByTagName(&quot;div&quot;)[2];
&gt; +    if (nestedDiv.innerHTML != &quot;This should be in nested divs.&quot;)
&gt; +        fail(&quot;wrong nestedDiv? &quot; + nestedDiv.innerHTML);
&gt; +    if (nestedDiv.parentNode.tagName != &quot;DIV&quot;)
&gt; +        fail(&quot;div should be nested: &quot; + nestedDiv.parentNode.tagName);
&gt; +
&gt; +    document.getElementById(&quot;results&quot;).innerText = &quot;SUCCESS&quot;;
&gt; +&lt;/script&gt;
&gt; diff --git a/LayoutTests/platform/mac/editing/pasteboard/paste-text-012-expected.txt b/LayoutTests/platform/mac/editing/pasteboard/paste-text-012-expected.txt
&gt; index 429e300..7916c24 100644
&gt; --- a/LayoutTests/platform/mac/editing/pasteboard/paste-text-012-expected.txt
&gt; +++ b/LayoutTests/platform/mac/editing/pasteboard/paste-text-012-expected.txt
&gt; @@ -7,7 +7,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 0 of DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; BODY &gt; HTML &gt; #document givenAction:WebViewInsertActionPasted
&gt; -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; BODY &gt; HTML &gt; #document toDOMRange:range from 0 of DIV &gt; DIV &gt; DIV &gt; SPAN &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; DIV &gt; SPAN &gt; DIV &gt; BODY &gt; HTML &gt; #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
&gt; +EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; BODY &gt; HTML &gt; #document toDOMRange:range from 0 of DIV &gt; DIV &gt; SPAN &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; SPAN &gt; DIV &gt; BODY &gt; HTML &gt; #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
&gt;  layer at (0,0) size 800x600
&gt; @@ -36,12 +36,12 @@ layer at (0,0) size 800x600
&gt;            RenderInline {SPAN} at (0,0) size 0x0
&gt;          RenderBlock (anonymous) at (14,14) size 756x132
&gt;            RenderBlock {DIV} at (0,0) size 756x132 [border: (2px solid #FF0000)]
&gt; -            RenderBlock {DIV} at (14,38) size 728x80
&gt; +            RenderBlock {DIV} at (14,38) size 728x28
&gt;                RenderBlock {BLOCKQUOTE} at (40,0) size 648x28
&gt;                  RenderText {#text} at (0,0) size 32x28
&gt;                    text run at (0,0) width 32: &quot;foo&quot;
&gt; -              RenderBlock {DIV} at (0,52) size 728x28
&gt; -                RenderBR {BR} at (0,0) size 0x28
&gt; +            RenderBlock {DIV} at (14,90) size 728x28
&gt; +              RenderBR {BR} at (0,0) size 0x28
&gt;          RenderBlock (anonymous) at (14,146) size 756x0
&gt;            RenderInline {SPAN} at (0,0) size 0x0
&gt; -caret: position 0 of child 0 {BR} of child 1 {DIV} of child 0 {DIV} of child 0 {DIV} of child 0 {SPAN} of child 7 {DIV} of child 1 {BODY} of child 0 {HTML} of document
&gt; +caret: position 0 of child 0 {BR} of child 1 {DIV} of child 0 {DIV} of child 0 {SPAN} of child 7 {DIV} of child 1 {BODY} of child 0 {HTML} of document
&gt; diff --git a/LayoutTests/platform/mac/editing/pasteboard/paste-text-013-expected.txt b/LayoutTests/platform/mac/editing/pasteboard/paste-text-013-expected.txt
&gt; index 3c1bbda..b0bd9e1 100644
&gt; --- a/LayoutTests/platform/mac/editing/pasteboard/paste-text-013-expected.txt
&gt; +++ b/LayoutTests/platform/mac/editing/pasteboard/paste-text-013-expected.txt
&gt; @@ -10,7 +10,7 @@ EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV &gt; BODY &gt; HTML
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
&gt;  EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 1 of #text &gt; DIV &gt; BODY &gt; HTML &gt; #document to 1 of #text &gt; DIV &gt; BODY &gt; HTML &gt; #document givenAction:WebViewInsertActionPasted
&gt; -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text &gt; DIV &gt; BODY &gt; HTML &gt; #document to 1 of #text &gt; DIV &gt; BODY &gt; HTML &gt; #document toDOMRange:range from 0 of DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
&gt; +EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text &gt; DIV &gt; BODY &gt; HTML &gt; #document to 1 of #text &gt; DIV &gt; BODY &gt; HTML &gt; #document toDOMRange:range from 0 of DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
&gt;  layer at (0,0) size 800x600
&gt; @@ -40,10 +40,10 @@ layer at (0,0) size 800x600
&gt;          RenderText {#text} at (14,14) size 12x28
&gt;            text run at (14,14) width 12: &quot;x&quot;
&gt;        RenderBlock {DIV} at (0,238) size 784x132 [border: (2px solid #FF0000)]
&gt; -        RenderBlock {DIV} at (14,38) size 756x80
&gt; +        RenderBlock {DIV} at (14,38) size 756x28
&gt;            RenderBlock {BLOCKQUOTE} at (40,0) size 676x28
&gt;              RenderText {#text} at (0,0) size 32x28
&gt;                text run at (0,0) width 32: &quot;foo&quot;
&gt; -          RenderBlock {DIV} at (0,52) size 756x28
&gt; -            RenderBR {BR} at (0,0) size 0x28
&gt; -caret: position 0 of child 0 {BR} of child 1 {DIV} of child 0 {DIV} of child 8 {DIV} of child 1 {BODY} of child 0 {HTML} of document
&gt; +        RenderBlock {DIV} at (14,90) size 756x28
&gt; +          RenderBR {BR} at (0,0) size 0x28
&gt; +caret: position 0 of child 0 {BR} of child 1 {DIV} of child 8 {DIV} of child 1 {BODY} of child 0 {HTML} of document
&gt; diff --git a/LayoutTests/platform/mac/editing/pasteboard/paste-text-017-expected.txt b/LayoutTests/platform/mac/editing/pasteboard/paste-text-017-expected.txt
&gt; index b1fff1c..af6d2a0 100644
&gt; --- a/LayoutTests/platform/mac/editing/pasteboard/paste-text-017-expected.txt
&gt; +++ b/LayoutTests/platform/mac/editing/pasteboard/paste-text-017-expected.txt
&gt; @@ -6,7 +6,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 5 of #text &gt; DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document givenAction:WebViewInsertActionPasted
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt; -EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV &gt; DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
&gt; +EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 0 of DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document to 0 of DIV &gt; DIV &gt; DIV &gt; BODY &gt; HTML &gt; #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
&gt;  EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
&gt;  EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
&gt;  layer at (0,0) size 800x600
&gt; @@ -40,14 +40,14 @@ layer at (0,0) size 800x600
&gt;                text run at (0,0) width 35: &quot;one&quot;
&gt;            RenderBlock {DIV} at (2,30) size 780x28
&gt;              RenderBR {BR} at (0,0) size 0x28
&gt; -          RenderBlock {DIV} at (2,58) size 780x56
&gt; +          RenderBlock {DIV} at (2,58) size 780x28
&gt;              RenderBlock {DIV} at (0,0) size 780x28
&gt;                RenderText {#text} at (0,0) size 36x28
&gt;                  text run at (0,0) width 36: &quot;two&quot;
&gt;              RenderBlock (anonymous) at (0,28) size 780x0
&gt; -            RenderBlock {DIV} at (0,28) size 780x28
&gt; -              RenderBR {BR} at (0,0) size 0x28
&gt; +          RenderBlock {DIV} at (2,86) size 780x28
&gt; +            RenderBR {BR} at (0,0) size 0x28
&gt;            RenderBlock {DIV} at (2,114) size 780x28
&gt;              RenderText {#text} at (0,0) size 49x28
&gt;                text run at (0,0) width 49: &quot;three&quot;
&gt; -caret: position 0 of child 0 {BR} of child 1 {DIV} of child 5 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
&gt; +caret: position 0 of child 0 {BR} of child 6 {DIV} of child 1 {DIV} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 240f69c..d7d1e72 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,18 @@
&gt; +2010-01-31  Tony Chang  &lt;tony@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25002
&gt; +        When inserting a new paragraph, avoid nesting empty divs.  When
&gt; +        pasting near the end of a paragraph, this prevents each paste
&gt; +        command for getting nested one level deeper.
&gt; +
&gt; +        Test: editing/inserting/paragraph-outside-nested-divs.html
&gt; +
&gt; +        * editing/InsertParagraphSeparatorCommand.cpp:
&gt; +        (WebCore::findInsertionSibling):
&gt; +        (WebCore::InsertParagraphSeparatorCommand::doApply):
&gt; +
&gt;  2010-01-31  Kent Tamura  &lt;tkent@chromium.org&gt;
&gt;  
&gt;          Reviewed by Darin Adler.
&gt; diff --git a/WebCore/editing/InsertParagraphSeparatorCommand.cpp b/WebCore/editing/InsertParagraphSeparatorCommand.cpp
&gt; index 695f46a..75b85a3 100644
&gt; --- a/WebCore/editing/InsertParagraphSeparatorCommand.cpp
&gt; +++ b/WebCore/editing/InsertParagraphSeparatorCommand.cpp
&gt; @@ -44,6 +44,25 @@ namespace WebCore {
&gt;  
&gt;  using namespace HTMLNames;
&gt;  
&gt; +// When inserting a new line, we want to avoid nesting empty divs if we can.  Otherwise, when
&gt; +// pasting, it&apos;s easy to have each new line be a div deeper than the previous.  E.g., in the case
&gt; +// below, we want to insert at ^ instead of |.
&gt; +// &lt;div&gt;foo&lt;div&gt;bar&lt;/div&gt;|&lt;/div&gt;^
&gt; +static Element* findInsertionSibling(Element* startBlock, const Element* blockToInsert)
&gt; +{
&gt; +    if (!blockToInsert-&gt;hasTagName(divTag))
&gt; +        return startBlock;
&gt; +
&gt; +    Element* curBlock = startBlock;
&gt; +    while (!curBlock-&gt;nextSibling() &amp;&amp; curBlock-&gt;parentElement()-&gt;hasTagName(divTag)) {
&gt; +        NamedNodeMap* attributes = curBlock-&gt;parentElement()-&gt;attributes(true);
&gt; +        if (attributes &amp;&amp; !attributes-&gt;isEmpty())
&gt; +            break;
&gt; +        curBlock = curBlock-&gt;parentElement();
&gt; +    }
&gt; +    return curBlock;
&gt; +}
&gt; +
&gt;  InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand(Document *document, bool mustUseDefaultParagraphElement) 
&gt;      : CompositeEditCommand(document)
&gt;      , m_mustUseDefaultParagraphElement(mustUseDefaultParagraphElement)
&gt; @@ -214,7 +233,11 @@ void InsertParagraphSeparatorCommand::doApply()
&gt;                  // When inserting the newline after the blockquote, we don&apos;t want to apply the original style after the insertion
&gt;                  shouldApplyStyleAfterInsertion = false;
&gt;              }
&gt; -            insertNodeAfter(blockToInsert, startBlock);
&gt; +
&gt; +            // Most of the time we want to stay at the nesting level of the startBlock (e.g., when nesting within lists).  However,
&gt; +            // for div nodes, this can result in nested div tags that are hard to break out of.
&gt; +            Element* siblingNode = findInsertionSibling(startBlock, blockToInsert.get());
&gt; +            insertNodeAfter(blockToInsert, siblingNode);
&gt;          }
&gt;  
&gt;          // Recreate the same structure in the new paragraph.

The change looks ok to me. I don&apos;t really like the name of the new method. You should come up with something more descriptive.
What you are looking for is a visually equivalent position that avoids the nesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186730</commentid>
    <comment_count>4</comment_count>
      <attachid>47890</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 17:46:11 -0800</bug_when>
    <thetext>Created attachment 47890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186734</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 17:49:30 -0800</bug_when>
    <thetext>Attachment 47890 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/230114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186737</commentid>
    <comment_count>6</comment_count>
      <attachid>47890</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 17:53:11 -0800</bug_when>
    <thetext>Comment on attachment 47890
Patch

sorry, fixing compile errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186739</commentid>
    <comment_count>7</comment_count>
      <attachid>47892</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 17:57:20 -0800</bug_when>
    <thetext>Created attachment 47892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187994</commentid>
    <comment_count>8</comment_count>
      <attachid>47892</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-04 16:23:30 -0800</bug_when>
    <thetext>Comment on attachment 47892
Patch

Not your fault, but I hate it when code uses bools when we should be using Enums:
 55         NamedNodeMap* attributes = curBlock-&gt;parentElement()-&gt;attributes(true);

I have no idea what that does w/o looking at the original function.

Turns out it means &quot;readonly&quot;:
    NamedNodeMap* attributes(bool readonly) const;

But then that makes me wonder what plain old &quot;attributes()&quot; returns.  Bah!

Your change itself looks fine.  Looks like it does what it says it does, and the test looks functional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188045</commentid>
    <comment_count>9</comment_count>
      <attachid>47892</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-04 18:38:29 -0800</bug_when>
    <thetext>Comment on attachment 47892
Patch

Clearing flags on attachment: 47892

Committed r54395: &lt;http://trac.webkit.org/changeset/54395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188046</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-04 18:38:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47813</attachid>
            <date>2010-01-31 22:41:43 -0800</date>
            <delta_ts>2010-02-01 17:46:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25002-20100201154141.patch</filename>
            <type>text/plain</type>
            <size>14733</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiM2I1NmIzLi43YTgwMDU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDEt
MzEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUwMDIKKyAgICAgICAgV2hlbiBpbnNlcnRpbmcgYSBuZXcgcGFyYWdyYXBo
LCBhdm9pZCBuZXN0aW5nIGVtcHR5IGRpdnMuICBXaGVuCisgICAgICAgIHBhc3RpbmcgbmVhciB0
aGUgZW5kIG9mIGEgcGFyYWdyYXBoLCB0aGlzIHByZXZlbnRzIGVhY2ggcGFzdGUKKyAgICAgICAg
Y29tbWFuZCBmb3IgZ2V0dGluZyBuZXN0ZWQgb25lIGxldmVsIGRlZXBlci4KKworICAgICAgICBU
aHJlZSBwYXN0ZSB0ZXN0cyBoYXZlIGJlZW4gcmViYXNlbGluZWQgc2luY2UgdGhpcyBjYXVzZXMg
dGhlIHBhc3RlZAorICAgICAgICBjb250ZW50IHRvIGJlIG91dHNpZGUgdGhlIGxhc3QgZGl2IGlu
c3RlYWQgb2YgaW5zaWRlLiAgRS5nLiwKKyAgICAgICAgPGRpdj5mb288ZGl2PmJhcjwvZGl2Pltw
YXN0ZWQgY29udGVudF08L2Rpdj4gaXMgbm93CisgICAgICAgIDxkaXY+Zm9vPGRpdj5iYXI8L2Rp
dj48L2Rpdj48ZGl2PltwYXN0ZWQgY29udGVudF08L2Rpdj4KKworICAgICAgICBUaGUgbmV3IHRl
c3QgdmVyaWZpZXMgdGhpcyBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5n
L3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNpZGUtbmVzdGVkLWRpdnMuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQ6CisK
IDIwMTAtMDEtMzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNpZGUtbmVzdGVkLWRpdnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNpZGUtbmVzdGVkLWRp
dnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMWQy
ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9wYXJh
Z3JhcGgtb3V0c2lkZS1uZXN0ZWQtZGl2cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitX
aGVuIGluc2VydGluZyBhIG5ldyBsaW5lLCB3ZSBzaG91bGQgYnJlYWsgb3V0IG9mIG5lc3RlZCBk
aXZzLgorCitTVUNDRVNTCisKK2ZpcnN0CitzZWNvbmQKK1RoaXMgc2hvdWxkIGJlIGluIG5lc3Rl
ZCBkaXZzLgordGhpcmQKK1RoaXMgc2hvdWxkIGJlIGluIGEgc2luZ2xlIGRpdi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3BhcmFncmFwaC1vdXRzaWRlLW5lc3Rl
ZC1kaXZzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9wYXJhZ3JhcGgtb3V0
c2lkZS1uZXN0ZWQtZGl2cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmMzNjZiNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGlu
Zy9wYXJhZ3JhcGgtb3V0c2lkZS1uZXN0ZWQtZGl2cy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxi
b2R5IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+Cis8cD5XaGVuIGluc2VydGluZyBhIG5ldyBsaW5l
LCB3ZSBzaG91bGQgYnJlYWsgb3V0IG9mIG5lc3RlZCBkaXZzLjwvcD4KKzxwIGlkPSJyZXN1bHRz
Ij48cD4KKzxkaXY+Zmlyc3Q8ZGl2PnNlY29uZDwvZGl2PjxkaXY+dGhpcmQ8L2Rpdj48L2Rpdj4K
KzwvYm9keT4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIGZhaWwobXNn
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuaW5uZXJUZXh0
ID0gIkZBSUwiOworICAgICAgICB0aHJvdyBtc2c7CisgICAgfQorCisgICAgLy8gVHJ5IGluc2Vy
dGluZyBhIG5ldyBsaW5lIGFmdGVyIHRoZSBsYXN0IGRpdi4KKyAgICB2YXIgZGl2MiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVsxXTsKKyAgICB2YXIgZGl2MyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVsyXTsKKyAgICBleGVjU2V0U2VsZWN0aW9u
Q29tbWFuZChkaXYzLCAwLCBkaXYzLCAwKTsKKyAgICBleGVjTW92ZVNlbGVjdGlvbkZvcndhcmRC
eVdvcmRDb21tYW5kKCk7CisKKyAgICBleGVjVHlwZUNoYXJhY3RlckNvbW1hbmQoIlxuIik7Cisg
ICAgZXhlY0luc2VydEhUTUxDb21tYW5kKCJUaGlzIHNob3VsZCBiZSBpbiBhIHNpbmdsZSBkaXYu
Iik7CisKKyAgICB2YXIgZGl2NCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYi
KVszXTsKKyAgICBpZiAoZGl2NC5pbm5lckhUTUwgIT0gIlRoaXMgc2hvdWxkIGJlIGluIGEgc2lu
Z2xlIGRpdi4iKQorICAgICAgICBmYWlsKCJ3cm9uZyBkaXY0PyAiICsgZGl2NC5pbm5lckhUTUwp
OworICAgIGlmIChkaXY0LnBhcmVudE5vZGUudGFnTmFtZSAhPSAiQk9EWSIpCisgICAgICAgIGZh
aWwoImRpdiBzaG91bGQgbm90IGJlIG5lc3RlZDogIiArIGRpdjQucGFyZW50Tm9kZS50YWdOYW1l
KTsKKworICAgIC8vIFRyeSBpbnNlcnRpbmcgYSBuZXcgbGluZSBhZnRlciB0aGUgc2Vjb25kIGRp
di4gIFRoaXMgc2hvdWxkIGJlIG5lc3RlZC4KKyAgICBleGVjU2V0U2VsZWN0aW9uQ29tbWFuZChk
aXYyLCAwLCBkaXYyLCAwKTsKKyAgICBleGVjTW92ZVNlbGVjdGlvbkZvcndhcmRCeVdvcmRDb21t
YW5kKCk7CisKKyAgICBleGVjVHlwZUNoYXJhY3RlckNvbW1hbmQoIlxuIik7CisgICAgZXhlY0lu
c2VydEhUTUxDb21tYW5kKCJUaGlzIHNob3VsZCBiZSBpbiBuZXN0ZWQgZGl2cy4iKTsKKworICAg
IHZhciBuZXN0ZWREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2IilbMl07
CisgICAgaWYgKG5lc3RlZERpdi5pbm5lckhUTUwgIT0gIlRoaXMgc2hvdWxkIGJlIGluIG5lc3Rl
ZCBkaXZzLiIpCisgICAgICAgIGZhaWwoIndyb25nIG5lc3RlZERpdj8gIiArIG5lc3RlZERpdi5p
bm5lckhUTUwpOworICAgIGlmIChuZXN0ZWREaXYucGFyZW50Tm9kZS50YWdOYW1lICE9ICJESVYi
KQorICAgICAgICBmYWlsKCJkaXYgc2hvdWxkIGJlIG5lc3RlZDogIiArIG5lc3RlZERpdi5wYXJl
bnROb2RlLnRhZ05hbWUpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMi
KS5pbm5lclRleHQgPSAiU1VDQ0VTUyI7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQKaW5kZXggNDI5ZTMwMC4uNzkxNmMyNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LTAxMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQKQEAgLTcsNyArNyw3IEBAIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9j
dW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAotRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBESVYgPiBTUEFOID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBESVYgPiBTUEFO
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gU1BBTiA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gU1BBTiA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC0zNiwxMiArMzYsMTIgQEAgbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MAogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMTQsMTQpIHNpemUg
NzU2eDEzMgogICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzU2eDEz
MiBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDE0LDM4KSBzaXplIDcyOHg4MAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDE0LDM4KSBzaXplIDcyOHgyOAogICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7QkxP
Q0tRVU9URX0gYXQgKDQwLDApIHNpemUgNjQ4eDI4CiAgICAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzJ4MjgKICAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDMyOiAiZm9vIgotICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCw1Mikgc2l6ZSA3Mjh4MjgKLSAgICAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgyOAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDE0LDkw
KSBzaXplIDcyOHgyOAorICAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUg
MHgyOAogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMTQsMTQ2KSBzaXplIDc1
NngwCiAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotY2Fy
ZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQg
MCB7RElWfSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDcge0RJ
Vn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK2NhcmV0
OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAge0JSfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDAg
e0RJVn0gb2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hpbGQgNyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZ
fSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRl
eHQtMDEzLWV4cGVjdGVkLnR4dAppbmRleCAzYzFiYmRhLi5iMGJkOWUxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLXRleHQtMDEzLWV4cGVjdGVkLnR4dApAQCAtMTAsNyArMTAsNyBAQCBFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiBESVYgPiBCT0RZID4gSFRNTAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxh
Y2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBn
aXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6
V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CkBAIC00MCwxMCArNDAsMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMTJ4MjgKICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDEyOiAieCIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDIzOCkgc2l6ZSA3ODR4MTMyIFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxNCwzOCkgc2l6ZSA3NTZ4ODAKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDE0LDM4KSBzaXplIDc1NngyOAogICAgICAgICAgIFJlbmRlckJs
b2NrIHtCTE9DS1FVT1RFfSBhdCAoNDAsMCkgc2l6ZSA2NzZ4MjgKICAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMyeDI4CiAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDMyOiAiZm9vIgotICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDUyKSBzaXplIDc1NngyOAotICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MjgKLWNhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAge0JSfSBvZiBjaGlsZCAxIHtE
SVZ9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgOCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBv
ZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMTQsOTApIHNpemUgNzU2eDI4CisgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MjgKK2NhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAge0JSfSBvZiBjaGlsZCAxIHtE
SVZ9IG9mIGNoaWxkIDgge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0g
b2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQK
aW5kZXggYjFmZmYxYy4uYWY2ZDJhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAx
Ny1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5v
ZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAj
dGV4dCA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2Yg
RElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2Vi
Vmlld0luc2VydEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5H
IERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC00MCwxNCArNDAsMTQgQEAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCiAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM1OiAi
b25lIgogICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDMwKSBzaXplIDc4MHgyOAog
ICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MjgKLSAgICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiw1OCkgc2l6ZSA3ODB4NTYKKyAgICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiw1OCkgc2l6ZSA3ODB4MjgKICAgICAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgNzgweDI4CiAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDM2eDI4CiAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMzY6ICJ0d28iCiAgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwyOCkgc2l6ZSA3ODB4MAotICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MjgpIHNpemUgNzgweDI4Ci0gICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6
ZSAweDI4CisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsODYpIHNpemUgNzgweDI4
CisgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgyOAogICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDExNCkgc2l6ZSA3ODB4MjgKICAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQ5eDI4CiAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDQ5OiAidGhyZWUiCi1jYXJldDogcG9zaXRpb24gMCBvZiBjaGls
ZCAwIHtCUn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCA1IHtESVZ9IG9mIGNoaWxkIDEge0RJ
Vn0gb2YgY2hpbGQgMyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBv
ZiBkb2N1bWVudAorY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNoaWxkIDYg
e0RJVn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9
IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI0MGY2OWMuLmQ3ZDFlNzIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTAtMDEtMzEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUwMDIKKyAgICAgICAgV2hlbiBpbnNlcnRpbmcg
YSBuZXcgcGFyYWdyYXBoLCBhdm9pZCBuZXN0aW5nIGVtcHR5IGRpdnMuICBXaGVuCisgICAgICAg
IHBhc3RpbmcgbmVhciB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoLCB0aGlzIHByZXZlbnRzIGVhY2gg
cGFzdGUKKyAgICAgICAgY29tbWFuZCBmb3IgZ2V0dGluZyBuZXN0ZWQgb25lIGxldmVsIGRlZXBl
ci4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2luc2VydGluZy9wYXJhZ3JhcGgtb3V0c2lkZS1u
ZXN0ZWQtZGl2cy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEluc2VydGlvblNpYmxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9B
cHBseSk6CisKIDIwMTAtMDEtMzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IDY5NWY0NmEuLjc1
Yjg1YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZC5jcHAKQEAgLTQ0LDYgKzQ0LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gV2hlbiBpbnNlcnRpbmcgYSBuZXcgbGlu
ZSwgd2Ugd2FudCB0byBhdm9pZCBuZXN0aW5nIGVtcHR5IGRpdnMgaWYgd2UgY2FuLiAgT3RoZXJ3
aXNlLCB3aGVuCisvLyBwYXN0aW5nLCBpdCdzIGVhc3kgdG8gaGF2ZSBlYWNoIG5ldyBsaW5lIGJl
IGEgZGl2IGRlZXBlciB0aGFuIHRoZSBwcmV2aW91cy4gIEUuZy4sIGluIHRoZSBjYXNlCisvLyBi
ZWxvdywgd2Ugd2FudCB0byBpbnNlcnQgYXQgXiBpbnN0ZWFkIG9mIHwuCisvLyA8ZGl2PmZvbzxk
aXY+YmFyPC9kaXY+fDwvZGl2Pl4KK3N0YXRpYyBFbGVtZW50KiBmaW5kSW5zZXJ0aW9uU2libGlu
ZyhFbGVtZW50KiBzdGFydEJsb2NrLCBjb25zdCBFbGVtZW50KiBibG9ja1RvSW5zZXJ0KQorewor
ICAgIGlmICghYmxvY2tUb0luc2VydC0+aGFzVGFnTmFtZShkaXZUYWcpKQorICAgICAgICByZXR1
cm4gc3RhcnRCbG9jazsKKworICAgIEVsZW1lbnQqIGN1ckJsb2NrID0gc3RhcnRCbG9jazsKKyAg
ICB3aGlsZSAoIWN1ckJsb2NrLT5uZXh0U2libGluZygpICYmIGN1ckJsb2NrLT5wYXJlbnRFbGVt
ZW50KCktPmhhc1RhZ05hbWUoZGl2VGFnKSkgeworICAgICAgICBOYW1lZE5vZGVNYXAqIGF0dHJp
YnV0ZXMgPSBjdXJCbG9jay0+cGFyZW50RWxlbWVudCgpLT5hdHRyaWJ1dGVzKHRydWUpOworICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmJiAhYXR0cmlidXRlcy0+aXNFbXB0eSgpKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGN1ckJsb2NrID0gY3VyQmxvY2stPnBhcmVudEVsZW1lbnQoKTsK
KyAgICB9CisgICAgcmV0dXJuIGN1ckJsb2NrOworfQorCiBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kKERvY3VtZW50ICpkb2N1
bWVudCwgYm9vbCBtdXN0VXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQpIAogICAgIDogQ29tcG9z
aXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX211c3RVc2VEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudChtdXN0VXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQpCkBAIC0yMTQsNyArMjMzLDEx
IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
ICAgICAgICAgICAgLy8gV2hlbiBpbnNlcnRpbmcgdGhlIG5ld2xpbmUgYWZ0ZXIgdGhlIGJsb2Nr
cXVvdGUsIHdlIGRvbid0IHdhbnQgdG8gYXBwbHkgdGhlIG9yaWdpbmFsIHN0eWxlIGFmdGVyIHRo
ZSBpbnNlcnRpb24KICAgICAgICAgICAgICAgICBzaG91bGRBcHBseVN0eWxlQWZ0ZXJJbnNlcnRp
b24gPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihi
bG9ja1RvSW5zZXJ0LCBzdGFydEJsb2NrKTsKKworICAgICAgICAgICAgLy8gTW9zdCBvZiB0aGUg
dGltZSB3ZSB3YW50IHRvIHN0YXkgYXQgdGhlIG5lc3RpbmcgbGV2ZWwgb2YgdGhlIHN0YXJ0Qmxv
Y2sgKGUuZy4sIHdoZW4gbmVzdGluZyB3aXRoaW4gbGlzdHMpLiAgSG93ZXZlciwKKyAgICAgICAg
ICAgIC8vIGZvciBkaXYgbm9kZXMsIHRoaXMgY2FuIHJlc3VsdCBpbiBuZXN0ZWQgZGl2IHRhZ3Mg
dGhhdCBhcmUgaGFyZCB0byBicmVhayBvdXQgb2YuCisgICAgICAgICAgICBFbGVtZW50KiBzaWJs
aW5nTm9kZSA9IGZpbmRJbnNlcnRpb25TaWJsaW5nKHN0YXJ0QmxvY2ssIGJsb2NrVG9JbnNlcnQu
Z2V0KCkpOworICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKGJsb2NrVG9JbnNlcnQsIHNpYmxp
bmdOb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBzYW1lIHN0cnVj
dHVyZSBpbiB0aGUgbmV3IHBhcmFncmFwaC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47890</attachid>
            <date>2010-02-01 17:46:11 -0800</date>
            <delta_ts>2010-02-01 17:57:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25002-20100202104609.patch</filename>
            <type>text/plain</type>
            <size>14852</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YzU2MTE0Li45MTU4N2M2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDIt
MDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUwMDIKKyAgICAgICAgV2hlbiBpbnNlcnRpbmcgYSBuZXcgcGFyYWdyYXBo
LCBhdm9pZCBuZXN0aW5nIGVtcHR5IGRpdnMuICBXaGVuCisgICAgICAgIHBhc3RpbmcgbmVhciB0
aGUgZW5kIG9mIGEgcGFyYWdyYXBoLCB0aGlzIHByZXZlbnRzIGVhY2ggcGFzdGUKKyAgICAgICAg
Y29tbWFuZCBmb3IgZ2V0dGluZyBuZXN0ZWQgb25lIGxldmVsIGRlZXBlci4KKworICAgICAgICBU
aHJlZSBwYXN0ZSB0ZXN0cyBoYXZlIGJlZW4gcmViYXNlbGluZWQgc2luY2UgdGhpcyBjYXVzZXMg
dGhlIHBhc3RlZAorICAgICAgICBjb250ZW50IHRvIGJlIG91dHNpZGUgdGhlIGxhc3QgZGl2IGlu
c3RlYWQgb2YgaW5zaWRlLiAgRS5nLiwKKyAgICAgICAgPGRpdj5mb288ZGl2PmJhcjwvZGl2Pltw
YXN0ZWQgY29udGVudF08L2Rpdj4gaXMgbm93CisgICAgICAgIDxkaXY+Zm9vPGRpdj5iYXI8L2Rp
dj48L2Rpdj48ZGl2PltwYXN0ZWQgY29udGVudF08L2Rpdj4KKworICAgICAgICBUaGUgbmV3IHRl
c3QgdmVyaWZpZXMgdGhpcyBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5n
L3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNpZGUtbmVzdGVkLWRpdnMuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQ6CisK
IDIwMTAtMDItMDEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9wYXJhZ3JhcGgtb3V0c2lkZS1uZXN0ZWQtZGl2cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9wYXJhZ3JhcGgtb3V0c2lkZS1u
ZXN0ZWQtZGl2cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2YxZDJkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nL3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDkgQEAKK1doZW4gaW5zZXJ0aW5nIGEgbmV3IGxpbmUsIHdlIHNob3VsZCBicmVhayBvdXQgb2Yg
bmVzdGVkIGRpdnMuCisKK1NVQ0NFU1MKKworZmlyc3QKK3NlY29uZAorVGhpcyBzaG91bGQgYmUg
aW4gbmVzdGVkIGRpdnMuCit0aGlyZAorVGhpcyBzaG91bGQgYmUgaW4gYSBzaW5nbGUgZGl2Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNp
ZGUtbmVzdGVkLWRpdnMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3BhcmFn
cmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzM2NmI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLmh0bWwKQEAgLTAsMCArMSw0
NSBAQAorPGJvZHkgY29udGVudEVkaXRhYmxlPSJ0cnVlIj4KKzxwPldoZW4gaW5zZXJ0aW5nIGEg
bmV3IGxpbmUsIHdlIHNob3VsZCBicmVhayBvdXQgb2YgbmVzdGVkIGRpdnMuPC9wPgorPHAgaWQ9
InJlc3VsdHMiPjxwPgorPGRpdj5maXJzdDxkaXY+c2Vjb25kPC9kaXY+PGRpdj50aGlyZDwvZGl2
PjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24g
ZmFpbChtc2cpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5p
bm5lclRleHQgPSAiRkFJTCI7CisgICAgICAgIHRocm93IG1zZzsKKyAgICB9CisKKyAgICAvLyBU
cnkgaW5zZXJ0aW5nIGEgbmV3IGxpbmUgYWZ0ZXIgdGhlIGxhc3QgZGl2LgorICAgIHZhciBkaXYy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzFdOworICAgIHZhciBkaXYz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzJdOworICAgIGV4ZWNTZXRT
ZWxlY3Rpb25Db21tYW5kKGRpdjMsIDAsIGRpdjMsIDApOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9u
Rm9yd2FyZEJ5V29yZENvbW1hbmQoKTsKKworICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgi
XG4iKTsKKyAgICBleGVjSW5zZXJ0SFRNTENvbW1hbmQoIlRoaXMgc2hvdWxkIGJlIGluIGEgc2lu
Z2xlIGRpdi4iKTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImRpdiIpWzNdOworICAgIGlmIChkaXY0LmlubmVySFRNTCAhPSAiVGhpcyBzaG91bGQgYmUg
aW4gYSBzaW5nbGUgZGl2LiIpCisgICAgICAgIGZhaWwoIndyb25nIGRpdjQ/ICIgKyBkaXY0Lmlu
bmVySFRNTCk7CisgICAgaWYgKGRpdjQucGFyZW50Tm9kZS50YWdOYW1lICE9ICJCT0RZIikKKyAg
ICAgICAgZmFpbCgiZGl2IHNob3VsZCBub3QgYmUgbmVzdGVkOiAiICsgZGl2NC5wYXJlbnROb2Rl
LnRhZ05hbWUpOworCisgICAgLy8gVHJ5IGluc2VydGluZyBhIG5ldyBsaW5lIGFmdGVyIHRoZSBz
ZWNvbmQgZGl2LiAgVGhpcyBzaG91bGQgYmUgbmVzdGVkLgorICAgIGV4ZWNTZXRTZWxlY3Rpb25D
b21tYW5kKGRpdjIsIDAsIGRpdjIsIDApOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9uRm9yd2FyZEJ5
V29yZENvbW1hbmQoKTsKKworICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAg
ICBleGVjSW5zZXJ0SFRNTENvbW1hbmQoIlRoaXMgc2hvdWxkIGJlIGluIG5lc3RlZCBkaXZzLiIp
OworCisgICAgdmFyIG5lc3RlZERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJk
aXYiKVsyXTsKKyAgICBpZiAobmVzdGVkRGl2LmlubmVySFRNTCAhPSAiVGhpcyBzaG91bGQgYmUg
aW4gbmVzdGVkIGRpdnMuIikKKyAgICAgICAgZmFpbCgid3JvbmcgbmVzdGVkRGl2PyAiICsgbmVz
dGVkRGl2LmlubmVySFRNTCk7CisgICAgaWYgKG5lc3RlZERpdi5wYXJlbnROb2RlLnRhZ05hbWUg
IT0gIkRJViIpCisgICAgICAgIGZhaWwoImRpdiBzaG91bGQgYmUgbmVzdGVkOiAiICsgbmVzdGVk
RGl2LnBhcmVudE5vZGUudGFnTmFtZSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0cyIpLmlubmVyVGV4dCA9ICJTVUNDRVNTIjsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAx
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAppbmRleCA0MjllMzAwLi43OTE2YzI0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3
LDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRO
b2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5H
IERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJViA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IERJ
ViA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBTUEFOID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBTUEFOID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25z
dHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTM2LDEyICszNiwxMiBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgMHgwCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxNCwx
NCkgc2l6ZSA3NTZ4MTMyCiAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA3NTZ4MTMyIFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMTQsMzgpIHNpemUgNzI4eDgwCisgICAgICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMTQsMzgpIHNpemUgNzI4eDI4CiAgICAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtCTE9DS1FVT1RFfSBhdCAoNDAsMCkgc2l6ZSA2NDh4MjgKICAgICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMngyOAogICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzI6ICJmb28iCi0gICAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDcyOHgyOAotICAgICAgICAgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMCkgc2l6ZSAweDI4CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMTQsOTApIHNpemUgNzI4eDI4CisgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDI4CiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxNCwxNDYp
IHNpemUgNzU2eDAKICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi1jYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHtCUn0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hp
bGQgNyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVu
dAorY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Y2hpbGQgMCB7RElWfSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCA3IHtESVZ9IG9mIGNoaWxk
IDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtdGV4dC0wMTMtZXhwZWN0ZWQudHh0CmluZGV4IDNjMWJiZGEuLmIwYmQ5ZTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
dGV4dC0wMTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTMtZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3
IEBAIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21l
bnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKLUVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJ
ViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKQEAgLTQwLDEwICs0MCwxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAxMngyOAogICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxNCwxNCkgd2lkdGggMTI6ICJ4IgogICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsMjM4KSBzaXplIDc4NHgxMzIgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAw
KV0KLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDE0LDM4KSBzaXplIDc1Nng4MAorICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTQsMzgpIHNpemUgNzU2eDI4CiAgICAgICAgICAg
UmVuZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0ICg0MCwwKSBzaXplIDY3NngyOAogICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzJ4MjgKICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzI6ICJmb28iCi0gICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsNTIpIHNpemUgNzU2eDI4Ci0gICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgyOAotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNo
aWxkIDEge0RJVn0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCA4IHtESVZ9IG9mIGNoaWxkIDEg
e0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgxNCw5MCkgc2l6ZSA3NTZ4MjgKKyAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgyOAorY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNo
aWxkIDEge0RJVn0gb2YgY2hpbGQgOCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAw
IHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE3LWV4cGVj
dGVkLnR4dAppbmRleCBiMWZmZjFjLi5hZjZkMmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE3LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXRleHQtMDE3LWV4cGVjdGVkLnR4dApAQCAtNiw3ICs2LDcgQEAgRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxk
SW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA1IG9mICN0ZXh0ID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFj
dGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTQwLDE0ICs0MCwxNCBAQCBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMzU6ICJvbmUiCiAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMzApIHNpemUg
NzgweDI4CiAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgyOAotICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDU4KSBzaXplIDc4MHg1NgorICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDU4KSBzaXplIDc4MHgyOAogICAgICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODB4MjgKICAgICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzZ4MjgKICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAzNjogInR3byIKICAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDI4KSBzaXplIDc4MHgwCi0gICAgICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwyOCkgc2l6ZSA3ODB4MjgKLSAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MjgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw4Nikgc2l6
ZSA3ODB4MjgKKyAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDI4CiAg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMTE0KSBzaXplIDc4MHgyOAogICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDl4MjgKICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDk6ICJ0aHJlZSIKLWNhcmV0OiBwb3NpdGlvbiAw
IG9mIGNoaWxkIDAge0JSfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDUge0RJVn0gb2YgY2hp
bGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAg
e0hUTUx9IG9mIGRvY3VtZW50CitjYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHtCUn0gb2Yg
Y2hpbGQgNiB7RElWfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQg
MSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgxMzRlNy4uZmM2Y2ZjOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMC0wMi0wMSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTAwMgorICAgICAgICBXaGVuIGlu
c2VydGluZyBhIG5ldyBwYXJhZ3JhcGgsIGF2b2lkIG5lc3RpbmcgZW1wdHkgZGl2cy4gIFdoZW4K
KyAgICAgICAgcGFzdGluZyBuZWFyIHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGgsIHRoaXMgcHJldmVu
dHMgZWFjaCBwYXN0ZQorICAgICAgICBjb21tYW5kIGZvciBnZXR0aW5nIG5lc3RlZCBvbmUgbGV2
ZWwgZGVlcGVyLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL3BhcmFncmFwaC1v
dXRzaWRlLW5lc3RlZC1kaXZzLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoaWdoZXN0VmlzdWFs
bHlFcXVpdmFsZW50RGl2KToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDEwLTAxLTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
ICsgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXggNjk1ZjQ2YS4uODQ4NGJhYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAt
NDQsNiArNDQsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCisvLyBXaGVuIGluc2VydGluZyBhIG5ldyBsaW5lLCB3ZSB3YW50IHRvIGF2b2lk
IG5lc3RpbmcgZW1wdHkgZGl2cyBpZiB3ZSBjYW4uICBPdGhlcndpc2UsIHdoZW4KKy8vIHBhc3Rp
bmcsIGl0J3MgZWFzeSB0byBoYXZlIGVhY2ggbmV3IGxpbmUgYmUgYSBkaXYgZGVlcGVyIHRoYW4g
dGhlIHByZXZpb3VzLiAgRS5nLiwgaW4gdGhlIGNhc2UKKy8vIGJlbG93LCB3ZSB3YW50IHRvIGlu
c2VydCBhdCBeIGluc3RlYWQgb2YgfC4KKy8vIDxkaXY+Zm9vPGRpdj5iYXI8L2Rpdj58PC9kaXY+
Xgorc3RhdGljIEVsZW1lbnQqIGhpZ2hlc3RWaXN1YWxseUVxdWl2YWxlbnREaXYoRWxlbWVudCog
c3RhcnRCbG9jaykKK3sKKyAgICBpZiAoIWJsb2NrVG9JbnNlcnQtPmhhc1RhZ05hbWUoZGl2VGFn
KSkKKyAgICAgICAgcmV0dXJuIHN0YXJ0QmxvY2s7CisKKyAgICBFbGVtZW50KiBjdXJCbG9jayA9
IHN0YXJ0QmxvY2s7CisgICAgd2hpbGUgKCFjdXJCbG9jay0+bmV4dFNpYmxpbmcoKSAmJiBjdXJC
bG9jay0+cGFyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGRpdlRhZykpIHsKKyAgICAgICAgTmFt
ZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gY3VyQmxvY2stPnBhcmVudEVsZW1lbnQoKS0+YXR0cmli
dXRlcyh0cnVlKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiYgIWF0dHJpYnV0ZXMtPmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjdXJCbG9jayA9IGN1ckJsb2NrLT5w
YXJlbnRFbGVtZW50KCk7CisgICAgfQorICAgIHJldHVybiBjdXJCbG9jazsKK30KKwogSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZChEb2N1bWVudCAqZG9jdW1lbnQsIGJvb2wgbXVzdFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50
KSAKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogICAgICwgbV9tdXN0VXNl
RGVmYXVsdFBhcmFncmFwaEVsZW1lbnQobXVzdFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KQpA
QCAtMjE0LDcgKzIzMywxMyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgICAgICAgICAgICAgIC8vIFdoZW4gaW5zZXJ0aW5nIHRoZSBuZXdsaW5l
IGFmdGVyIHRoZSBibG9ja3F1b3RlLCB3ZSBkb24ndCB3YW50IHRvIGFwcGx5IHRoZSBvcmlnaW5h
bCBzdHlsZSBhZnRlciB0aGUgaW5zZXJ0aW9uCiAgICAgICAgICAgICAgICAgc2hvdWxkQXBwbHlT
dHlsZUFmdGVySW5zZXJ0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
bnNlcnROb2RlQWZ0ZXIoYmxvY2tUb0luc2VydCwgc3RhcnRCbG9jayk7CisKKyAgICAgICAgICAg
IC8vIE1vc3Qgb2YgdGhlIHRpbWUgd2Ugd2FudCB0byBzdGF5IGF0IHRoZSBuZXN0aW5nIGxldmVs
IG9mIHRoZSBzdGFydEJsb2NrIChlLmcuLCB3aGVuIG5lc3Rpbmcgd2l0aGluIGxpc3RzKS4gIEhv
d2V2ZXIsCisgICAgICAgICAgICAvLyBmb3IgZGl2IG5vZGVzLCB0aGlzIGNhbiByZXN1bHQgaW4g
bmVzdGVkIGRpdiB0YWdzIHRoYXQgYXJlIGhhcmQgdG8gYnJlYWsgb3V0IG9mLgorICAgICAgICAg
ICAgRWxlbWVudCogc2libGluZ05vZGUgPSBzdGFydEJsb2NrOworICAgICAgICAgICAgaWYgKGJs
b2NrVG9JbnNlcnQtPmhhc1RhZ05hbWUoZGl2VGFnKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Tm9kZSA9IGhpZ2hlc3RWaXN1YWxseUVxdWl2YWxlbnREaXYoc3RhcnRCbG9jaywgYmxvY2tUb0lu
c2VydC5nZXQoKSk7CisgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoYmxvY2tUb0luc2VydCwg
c2libGluZ05vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gUmVjcmVhdGUgdGhlIHNhbWUg
c3RydWN0dXJlIGluIHRoZSBuZXcgcGFyYWdyYXBoLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47892</attachid>
            <date>2010-02-01 17:57:20 -0800</date>
            <delta_ts>2010-02-04 18:38:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-25002-20100202105718.patch</filename>
            <type>text/plain</type>
            <size>14756</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YzU2MTE0Li45MTU4N2M2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDIt
MDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUwMDIKKyAgICAgICAgV2hlbiBpbnNlcnRpbmcgYSBuZXcgcGFyYWdyYXBo
LCBhdm9pZCBuZXN0aW5nIGVtcHR5IGRpdnMuICBXaGVuCisgICAgICAgIHBhc3RpbmcgbmVhciB0
aGUgZW5kIG9mIGEgcGFyYWdyYXBoLCB0aGlzIHByZXZlbnRzIGVhY2ggcGFzdGUKKyAgICAgICAg
Y29tbWFuZCBmb3IgZ2V0dGluZyBuZXN0ZWQgb25lIGxldmVsIGRlZXBlci4KKworICAgICAgICBU
aHJlZSBwYXN0ZSB0ZXN0cyBoYXZlIGJlZW4gcmViYXNlbGluZWQgc2luY2UgdGhpcyBjYXVzZXMg
dGhlIHBhc3RlZAorICAgICAgICBjb250ZW50IHRvIGJlIG91dHNpZGUgdGhlIGxhc3QgZGl2IGlu
c3RlYWQgb2YgaW5zaWRlLiAgRS5nLiwKKyAgICAgICAgPGRpdj5mb288ZGl2PmJhcjwvZGl2Pltw
YXN0ZWQgY29udGVudF08L2Rpdj4gaXMgbm93CisgICAgICAgIDxkaXY+Zm9vPGRpdj5iYXI8L2Rp
dj48L2Rpdj48ZGl2PltwYXN0ZWQgY29udGVudF08L2Rpdj4KKworICAgICAgICBUaGUgbmV3IHRl
c3QgdmVyaWZpZXMgdGhpcyBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5n
L3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNpZGUtbmVzdGVkLWRpdnMuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQ6CisK
IDIwMTAtMDItMDEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9wYXJhZ3JhcGgtb3V0c2lkZS1uZXN0ZWQtZGl2cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9wYXJhZ3JhcGgtb3V0c2lkZS1u
ZXN0ZWQtZGl2cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2YxZDJkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nL3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDkgQEAKK1doZW4gaW5zZXJ0aW5nIGEgbmV3IGxpbmUsIHdlIHNob3VsZCBicmVhayBvdXQgb2Yg
bmVzdGVkIGRpdnMuCisKK1NVQ0NFU1MKKworZmlyc3QKK3NlY29uZAorVGhpcyBzaG91bGQgYmUg
aW4gbmVzdGVkIGRpdnMuCit0aGlyZAorVGhpcyBzaG91bGQgYmUgaW4gYSBzaW5nbGUgZGl2Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFyYWdyYXBoLW91dHNp
ZGUtbmVzdGVkLWRpdnMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3BhcmFn
cmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzM2NmI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL3BhcmFncmFwaC1vdXRzaWRlLW5lc3RlZC1kaXZzLmh0bWwKQEAgLTAsMCArMSw0
NSBAQAorPGJvZHkgY29udGVudEVkaXRhYmxlPSJ0cnVlIj4KKzxwPldoZW4gaW5zZXJ0aW5nIGEg
bmV3IGxpbmUsIHdlIHNob3VsZCBicmVhayBvdXQgb2YgbmVzdGVkIGRpdnMuPC9wPgorPHAgaWQ9
InJlc3VsdHMiPjxwPgorPGRpdj5maXJzdDxkaXY+c2Vjb25kPC9kaXY+PGRpdj50aGlyZDwvZGl2
PjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24g
ZmFpbChtc2cpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5p
bm5lclRleHQgPSAiRkFJTCI7CisgICAgICAgIHRocm93IG1zZzsKKyAgICB9CisKKyAgICAvLyBU
cnkgaW5zZXJ0aW5nIGEgbmV3IGxpbmUgYWZ0ZXIgdGhlIGxhc3QgZGl2LgorICAgIHZhciBkaXYy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzFdOworICAgIHZhciBkaXYz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzJdOworICAgIGV4ZWNTZXRT
ZWxlY3Rpb25Db21tYW5kKGRpdjMsIDAsIGRpdjMsIDApOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9u
Rm9yd2FyZEJ5V29yZENvbW1hbmQoKTsKKworICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgi
XG4iKTsKKyAgICBleGVjSW5zZXJ0SFRNTENvbW1hbmQoIlRoaXMgc2hvdWxkIGJlIGluIGEgc2lu
Z2xlIGRpdi4iKTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImRpdiIpWzNdOworICAgIGlmIChkaXY0LmlubmVySFRNTCAhPSAiVGhpcyBzaG91bGQgYmUg
aW4gYSBzaW5nbGUgZGl2LiIpCisgICAgICAgIGZhaWwoIndyb25nIGRpdjQ/ICIgKyBkaXY0Lmlu
bmVySFRNTCk7CisgICAgaWYgKGRpdjQucGFyZW50Tm9kZS50YWdOYW1lICE9ICJCT0RZIikKKyAg
ICAgICAgZmFpbCgiZGl2IHNob3VsZCBub3QgYmUgbmVzdGVkOiAiICsgZGl2NC5wYXJlbnROb2Rl
LnRhZ05hbWUpOworCisgICAgLy8gVHJ5IGluc2VydGluZyBhIG5ldyBsaW5lIGFmdGVyIHRoZSBz
ZWNvbmQgZGl2LiAgVGhpcyBzaG91bGQgYmUgbmVzdGVkLgorICAgIGV4ZWNTZXRTZWxlY3Rpb25D
b21tYW5kKGRpdjIsIDAsIGRpdjIsIDApOworICAgIGV4ZWNNb3ZlU2VsZWN0aW9uRm9yd2FyZEJ5
V29yZENvbW1hbmQoKTsKKworICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAg
ICBleGVjSW5zZXJ0SFRNTENvbW1hbmQoIlRoaXMgc2hvdWxkIGJlIGluIG5lc3RlZCBkaXZzLiIp
OworCisgICAgdmFyIG5lc3RlZERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJk
aXYiKVsyXTsKKyAgICBpZiAobmVzdGVkRGl2LmlubmVySFRNTCAhPSAiVGhpcyBzaG91bGQgYmUg
aW4gbmVzdGVkIGRpdnMuIikKKyAgICAgICAgZmFpbCgid3JvbmcgbmVzdGVkRGl2PyAiICsgbmVz
dGVkRGl2LmlubmVySFRNTCk7CisgICAgaWYgKG5lc3RlZERpdi5wYXJlbnROb2RlLnRhZ05hbWUg
IT0gIkRJViIpCisgICAgICAgIGZhaWwoImRpdiBzaG91bGQgYmUgbmVzdGVkOiAiICsgbmVzdGVk
RGl2LnBhcmVudE5vZGUudGFnTmFtZSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0cyIpLmlubmVyVGV4dCA9ICJTVUNDRVNTIjsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAx
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAppbmRleCA0MjllMzAwLi43OTE2YzI0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3
LDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRO
b2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5H
IERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJViA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IERJ
ViA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBTUEFOID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBTUEFOID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25z
dHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTM2LDEyICszNiwxMiBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgMHgwCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxNCwx
NCkgc2l6ZSA3NTZ4MTMyCiAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSA3NTZ4MTMyIFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMTQsMzgpIHNpemUgNzI4eDgwCisgICAgICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMTQsMzgpIHNpemUgNzI4eDI4CiAgICAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtCTE9DS1FVT1RFfSBhdCAoNDAsMCkgc2l6ZSA2NDh4MjgKICAgICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMngyOAogICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzI6ICJmb28iCi0gICAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDcyOHgyOAotICAgICAgICAgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMCkgc2l6ZSAweDI4CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMTQsOTApIHNpemUgNzI4eDI4CisgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDI4CiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxNCwxNDYp
IHNpemUgNzU2eDAKICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi1jYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHtCUn0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hp
bGQgNyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVu
dAorY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Y2hpbGQgMCB7RElWfSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCA3IHtESVZ9IG9mIGNoaWxk
IDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtdGV4dC0wMTMtZXhwZWN0ZWQudHh0CmluZGV4IDNjMWJiZGEuLmIwYmQ5ZTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
dGV4dC0wMTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTMtZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3
IEBAIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21l
bnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKLUVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJ
ViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKQEAgLTQwLDEwICs0MCwxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAxMngyOAogICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxNCwxNCkgd2lkdGggMTI6ICJ4IgogICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsMjM4KSBzaXplIDc4NHgxMzIgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAw
KV0KLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDE0LDM4KSBzaXplIDc1Nng4MAorICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTQsMzgpIHNpemUgNzU2eDI4CiAgICAgICAgICAg
UmVuZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0ICg0MCwwKSBzaXplIDY3NngyOAogICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzJ4MjgKICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzI6ICJmb28iCi0gICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsNTIpIHNpemUgNzU2eDI4Ci0gICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgyOAotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNo
aWxkIDEge0RJVn0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCA4IHtESVZ9IG9mIGNoaWxkIDEg
e0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgxNCw5MCkgc2l6ZSA3NTZ4MjgKKyAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgyOAorY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNo
aWxkIDEge0RJVn0gb2YgY2hpbGQgOCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAw
IHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE3LWV4cGVj
dGVkLnR4dAppbmRleCBiMWZmZjFjLi5hZjZkMmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE3LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXRleHQtMDE3LWV4cGVjdGVkLnR4dApAQCAtNiw3ICs2LDcgQEAgRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxk
SW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA1IG9mICN0ZXh0ID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFj
dGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTQwLDE0ICs0MCwxNCBAQCBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMzU6ICJvbmUiCiAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMzApIHNpemUg
NzgweDI4CiAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgyOAotICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDU4KSBzaXplIDc4MHg1NgorICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDU4KSBzaXplIDc4MHgyOAogICAgICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODB4MjgKICAgICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzZ4MjgKICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAzNjogInR3byIKICAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDI4KSBzaXplIDc4MHgwCi0gICAgICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwyOCkgc2l6ZSA3ODB4MjgKLSAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MjgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw4Nikgc2l6
ZSA3ODB4MjgKKyAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDI4CiAg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMTE0KSBzaXplIDc4MHgyOAogICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDl4MjgKICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDk6ICJ0aHJlZSIKLWNhcmV0OiBwb3NpdGlvbiAw
IG9mIGNoaWxkIDAge0JSfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDUge0RJVn0gb2YgY2hp
bGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAg
e0hUTUx9IG9mIGRvY3VtZW50CitjYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHtCUn0gb2Yg
Y2hpbGQgNiB7RElWfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQg
MSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgxMzRlNy4uZmM2Y2ZjOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMC0wMi0wMSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTAwMgorICAgICAgICBXaGVuIGlu
c2VydGluZyBhIG5ldyBwYXJhZ3JhcGgsIGF2b2lkIG5lc3RpbmcgZW1wdHkgZGl2cy4gIFdoZW4K
KyAgICAgICAgcGFzdGluZyBuZWFyIHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGgsIHRoaXMgcHJldmVu
dHMgZWFjaCBwYXN0ZQorICAgICAgICBjb21tYW5kIGZvciBnZXR0aW5nIG5lc3RlZCBvbmUgbGV2
ZWwgZGVlcGVyLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL3BhcmFncmFwaC1v
dXRzaWRlLW5lc3RlZC1kaXZzLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoaWdoZXN0VmlzdWFs
bHlFcXVpdmFsZW50RGl2KToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDEwLTAxLTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
ICsgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXggNjk1ZjQ2YS4uMDU4Yjk2MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAt
NDQsNiArNDQsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCisvLyBXaGVuIGluc2VydGluZyBhIG5ldyBsaW5lLCB3ZSB3YW50IHRvIGF2b2lk
IG5lc3RpbmcgZW1wdHkgZGl2cyBpZiB3ZSBjYW4uICBPdGhlcndpc2UsIHdoZW4KKy8vIHBhc3Rp
bmcsIGl0J3MgZWFzeSB0byBoYXZlIGVhY2ggbmV3IGxpbmUgYmUgYSBkaXYgZGVlcGVyIHRoYW4g
dGhlIHByZXZpb3VzLiAgRS5nLiwgaW4gdGhlIGNhc2UKKy8vIGJlbG93LCB3ZSB3YW50IHRvIGlu
c2VydCBhdCBeIGluc3RlYWQgb2YgfC4KKy8vIDxkaXY+Zm9vPGRpdj5iYXI8L2Rpdj58PC9kaXY+
Xgorc3RhdGljIEVsZW1lbnQqIGhpZ2hlc3RWaXN1YWxseUVxdWl2YWxlbnREaXYoRWxlbWVudCog
c3RhcnRCbG9jaykKK3sKKyAgICBFbGVtZW50KiBjdXJCbG9jayA9IHN0YXJ0QmxvY2s7CisgICAg
d2hpbGUgKCFjdXJCbG9jay0+bmV4dFNpYmxpbmcoKSAmJiBjdXJCbG9jay0+cGFyZW50RWxlbWVu
dCgpLT5oYXNUYWdOYW1lKGRpdlRhZykpIHsKKyAgICAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1
dGVzID0gY3VyQmxvY2stPnBhcmVudEVsZW1lbnQoKS0+YXR0cmlidXRlcyh0cnVlKTsKKyAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiYgIWF0dHJpYnV0ZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjdXJCbG9jayA9IGN1ckJsb2NrLT5wYXJlbnRFbGVtZW50KCk7Cisg
ICAgfQorICAgIHJldHVybiBjdXJCbG9jazsKK30KKwogSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZChEb2N1bWVudCAqZG9jdW1l
bnQsIGJvb2wgbXVzdFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KSAKICAgICA6IENvbXBvc2l0
ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogICAgICwgbV9tdXN0VXNlRGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnQobXVzdFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KQpAQCAtMjE0LDcgKzIzMCwxMyBA
QCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAg
ICAgICAgICAgIC8vIFdoZW4gaW5zZXJ0aW5nIHRoZSBuZXdsaW5lIGFmdGVyIHRoZSBibG9ja3F1
b3RlLCB3ZSBkb24ndCB3YW50IHRvIGFwcGx5IHRoZSBvcmlnaW5hbCBzdHlsZSBhZnRlciB0aGUg
aW5zZXJ0aW9uCiAgICAgICAgICAgICAgICAgc2hvdWxkQXBwbHlTdHlsZUFmdGVySW5zZXJ0aW9u
ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoYmxv
Y2tUb0luc2VydCwgc3RhcnRCbG9jayk7CisKKyAgICAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIHRp
bWUgd2Ugd2FudCB0byBzdGF5IGF0IHRoZSBuZXN0aW5nIGxldmVsIG9mIHRoZSBzdGFydEJsb2Nr
IChlLmcuLCB3aGVuIG5lc3Rpbmcgd2l0aGluIGxpc3RzKS4gIEhvd2V2ZXIsCisgICAgICAgICAg
ICAvLyBmb3IgZGl2IG5vZGVzLCB0aGlzIGNhbiByZXN1bHQgaW4gbmVzdGVkIGRpdiB0YWdzIHRo
YXQgYXJlIGhhcmQgdG8gYnJlYWsgb3V0IG9mLgorICAgICAgICAgICAgRWxlbWVudCogc2libGlu
Z05vZGUgPSBzdGFydEJsb2NrOworICAgICAgICAgICAgaWYgKGJsb2NrVG9JbnNlcnQtPmhhc1Rh
Z05hbWUoZGl2VGFnKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5nTm9kZSA9IGhpZ2hlc3RWaXN1
YWxseUVxdWl2YWxlbnREaXYoc3RhcnRCbG9jayk7CisgICAgICAgICAgICBpbnNlcnROb2RlQWZ0
ZXIoYmxvY2tUb0luc2VydCwgc2libGluZ05vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
UmVjcmVhdGUgdGhlIHNhbWUgc3RydWN0dXJlIGluIHRoZSBuZXcgcGFyYWdyYXBoLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>