<?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>93634</bug_id>
          
          <creation_ts>2012-08-09 11:43:18 -0700</creation_ts>
          <short_desc>Speech Input: wrong position was reported for scolled-down elements</short_desc>
          <delta_ts>2012-08-14 02:07:14 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>mifenton</cc>
    
    <cc>satish</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691644</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-09 11:43:18 -0700</bug_when>
    <thetext>Speech Input: wrong position was reported for scolled-down elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691654</commentid>
    <comment_count>1</comment_count>
      <attachid>157505</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-09 11:50:27 -0700</bug_when>
    <thetext>Created attachment 157505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691663</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-09 11:57:43 -0700</bug_when>
    <thetext>Uploaded as a work-in-progress / call for help.

There are two things I need help with here:

First,

+    FrameView* containingView = renderer()-&gt;view()-&gt;frameView();
+    FrameView* mainView = document()-&gt;page()-&gt;mainFrame()-&gt;view();
+    IntRect rect = renderer()-&gt;absoluteBoundingBoxRect();
+    rect = containingView-&gt;contentsToWindow(rect);
+    rect = mainView-&gt;rootViewToContents(rect);

This does not really make sense to me. But it does solve the problem: it works when a page is scrolled down, and also when the input element is in a iframe.

It would be great if someone could provide a pointer to how these coordinate systems work.


Second, the layout test doesn&apos;t really work. I would expect that the rect that the element passes to WebKit when it is clicked would match the coordinates of the mouse click. I would have thought that the mouse position is relative to the &quot;window&quot; (whatever that means for DumpRenderTree).


Any pointers would be very welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692080</commentid>
    <comment_count>3</comment_count>
      <attachid>157505</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-09 18:36:52 -0700</bug_when>
    <thetext>Comment on attachment 157505
Patch

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

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:624
&gt;      if (speechInput()-&gt;startRecognition(m_listenerId, rect, language, grammar, document()-&gt;securityOrigin()))

What coordination do you need here? RootView, window, or screen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692258</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-09 23:43:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 157505 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157505&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:624
&gt; &gt;      if (speechInput()-&gt;startRecognition(m_listenerId, rect, language, grammar, document()-&gt;securityOrigin()))
&gt; 
&gt; What coordination do you need here? RootView, window, or screen?

I think I need window.

I know, the code above doesn&apos;t make sense, so any pointers to how these coordinate systems work would be great. E.g. what exactly is the RootView coordinate system?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692298</commentid>
    <comment_count>5</comment_count>
      <attachid>157505</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-10 00:45:21 -0700</bug_when>
    <thetext>Comment on attachment 157505
Patch

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

&gt;&gt;&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:624
&gt;&gt;&gt;      if (speechInput()-&gt;startRecognition(m_listenerId, rect, language, grammar, document()-&gt;securityOrigin()))
&gt;&gt; 
&gt;&gt; What coordination do you need here? RootView, window, or screen?
&gt; 
&gt; I think I need window.
&gt; 
&gt; I know, the code above doesn&apos;t make sense, so any pointers to how these coordinate systems work would be great. E.g. what exactly is the RootView coordinate system?

* Contents: offset from the top-left corner of a rendered Document.  &quot;absolute&quot; in WebCore means this.
* FrameView: offset from the top-left corner of a visible rectangle for a Document.
   FrameView coordinate = contents coordinate + scroll offset
* RootView:  offset from the top-left corner of the content area of your browser tab. RootView is equivalent to FrameView if a Document is a top-level document. For &lt;frame&gt; or &lt;iframe&gt;, its FrameView is different from RootView.
* Window: offset from the top-left corner of a window containing RootView. The window might be a same area with RootView, might be a rectangle containing the tab content + tab decorations, might be a whole 
browser window.

InputTagSpeechDispatcher::startRecognition() in Chromium subtracts scroll offsets from the rect.  It looks wrong.

My recommendation:
We&apos;re eliminating window coordinate system in WebCore (Bug 71945).  So the argument of startRecognition() should be in the RootView coordinate system. In this case,
  IntRect rect = document()-&gt;view()-&gt;contentsToRootView(getPixelSnappedRect());
should work.  See WebCore/html/ColorInputType.cpp and WebCore/html/shadow/CalendarPickerElement.cpp.
  In Chromium WebKit layer, convert the position in RootView coordination system to the screen coordination system by Chrome::rootViewToScreen().
Chromium code should do nothing against the rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692436</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-10 04:15:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; InputTagSpeechDispatcher::startRecognition() in Chromium subtracts scroll offsets from the rect.  It looks wrong.

Ah! This explains a lot of the brokenness :) Thanks for finding it, I&apos;m removing this from the Chromium side.

&gt; My recommendation:
&gt; We&apos;re eliminating window coordinate system in WebCore (Bug 71945).  So the argument of startRecognition() should be in the RootView coordinate system. In this case,
&gt;   IntRect rect = document()-&gt;view()-&gt;contentsToRootView(getPixelSnappedRect());
&gt; should work.  See WebCore/html/ColorInputType.cpp and WebCore/html/shadow/CalendarPickerElement.cpp.
&gt;   In Chromium WebKit layer, convert the position in RootView coordination system to the screen coordination system by Chrome::rootViewToScreen().
&gt; Chromium code should do nothing against the rect.

Thank you so much for the pointers! This fixes everything. Uploading new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692437</commentid>
    <comment_count>7</comment_count>
      <attachid>157700</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-10 04:15:31 -0700</bug_when>
    <thetext>Created attachment 157700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692503</commentid>
    <comment_count>8</comment_count>
      <attachid>157700</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-08-10 06:00:09 -0700</bug_when>
    <thetext>Comment on attachment 157700
Patch

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

&gt; LayoutTests/fast/speech/bubble-position-scrolled.html:37
&gt; +    window.scrollAmount = 100;

this variable doesn&apos;t seem to be used outside this function. make it a local var?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693452</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-13 01:42:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 157700 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157700&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/speech/bubble-position-scrolled.html:37
&gt; &gt; +    window.scrollAmount = 100;
&gt; 
&gt; this variable doesn&apos;t seem to be used outside this function. make it a local var?
Done.

tkent: does the patch look OK to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693453</commentid>
    <comment_count>10</comment_count>
      <attachid>157940</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-13 01:42:35 -0700</bug_when>
    <thetext>Created attachment 157940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694332</commentid>
    <comment_count>11</comment_count>
      <attachid>157940</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-13 18:09:52 -0700</bug_when>
    <thetext>Comment on attachment 157940
Patch

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

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:620
&gt; +    IntRect rect = document()-&gt;view()-&gt;contentsToRootView(getPixelSnappedRect());
&gt;      if (speechInput()-&gt;startRecognition(m_listenerId, rect, language, grammar, document()-&gt;securityOrigin()))

Let&apos;s update the comments for startRecognition()s in WebCore/page/SpeechInputClient.h and WebKit/chromium/public/WebSpeechInputController.h so that they mentions the coordinate system for elementRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694611</commentid>
    <comment_count>12</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-14 00:43:31 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Let&apos;s update the comments for startRecognition()s in WebCore/page/SpeechInputClient.h and WebKit/chromium/public/WebSpeechInputController.h so that they mentions the coordinate system for elementRect.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694612</commentid>
    <comment_count>13</comment_count>
      <attachid>158247</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-08-14 00:43:47 -0700</bug_when>
    <thetext>Created attachment 158247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694615</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 00:45:57 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694673</commentid>
    <comment_count>15</comment_count>
      <attachid>158247</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-14 01:47:37 -0700</bug_when>
    <thetext>Comment on attachment 158247
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694699</commentid>
    <comment_count>16</comment_count>
      <attachid>158247</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 02:07:09 -0700</bug_when>
    <thetext>Comment on attachment 158247
Patch

Clearing flags on attachment: 158247

Committed r125529: &lt;http://trac.webkit.org/changeset/125529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694700</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 02:07:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157505</attachid>
            <date>2012-08-09 11:50:27 -0700</date>
            <delta_ts>2012-08-10 04:15:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93634-20120809194959.patch</filename>
            <type>text/plain</type>
            <size>6388</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjAxMzRkMmFjMGFlZmRi
N2U1MTI0Y2FjNWNhYjkzYTQ3Y2ZhZjg5Yi4uOGQ4Y2Q5ZTcwMTNkZWQ5MDAzMjUwMzI3ZTJjMTgy
NGIzNGFmNzExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA4LTA5ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiB3
cm9uZyBwb3NpdGlvbiB3YXMgcmVwb3J0ZWQgZm9yIHNjb2xsZWQtZG93biBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNsaWNraW5n
IG9uIGEgc3BlZWNoLWVuYWJsZWQgaW5wdXQgZWxlbWVudCwgV2ViS2l0IHJlcG9ydHMKKyAgICAg
ICAgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IHRvIHRoZSBlbWJlZGRlciwgc28gdGhhdCBp
dCBjYW4gc2hvdworICAgICAgICBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29n
bml0aW9uIGlzIGluIHByb2dyZXNzIGZvcgorICAgICAgICB0aGUgZWxlbWVudCB0aGF0IHRoZSB1
c2VyIGNsaWNrZWQgb24uCisKKyAgICAgICAgT24gYSBwYWdlIHRoYXQgd2FzIHNjcm9sbGVkLCB0
aGlzIHBvc2l0aW9uIHdhcyBiZWluZyByZXBvcnRlZAorICAgICAgICBlcnJvbmVvdXNseTogaXQg
d2FzIGdpdmVuIHJlbGF0aXZlIHRvIHRoZSBmcmFtZSBhcyBvcHBvc2VkIHRvIHRoZQorICAgICAg
ICB3aW5kb3csIGFuZCB0aGUgaW4tcHJvZ3Jlc3MgYnViYmxlIHdvdWxkIGJlIHNob3duIGluIHRo
ZSB3cm9uZyBwbGFjZQorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlv
bi1zY3JvbGxlZC5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQpOgorCiAyMDEyLTA4LTA5ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIERPTUNoYXJhY3RlckRhdGFNb2RpZmllZCBz
aG91bGQgbm90IGJlIGZpcmVkIGluc2lkZSBzaGFkb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBlMDZk
NTZmMmYxN2FiODMwN2NkNTBiNWQ2YjZiYmE3ZTc4ZGEwZjkzLi5jNGYzMmQ4MmM5OTY4OGZmM2M4
ZTllYzVjYjdiYTdmOThlNDc3OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTYxNiw4ICs2MTYsMTEg
QEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCgp
CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KHNoYWRvd0hvc3QoKSk7CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0g
aW5wdXQtPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0g
aW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cik7Ci0gICAgLy8gRklYTUU6IHRo
aXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3QgdHJhbnNmb3JtcwotICAgIEludFJlY3QgcmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29u
dGVudHNUb1dpbmRvdyhyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5n
VHJhbnNmb3JtcygpKSk7CisgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IHJlbmRlcmVy
KCktPnZpZXcoKS0+ZnJhbWVWaWV3KCk7CisgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IGRvY3Vt
ZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBy
ZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIHJlY3QgPSBjb250YWlu
aW5nVmlldy0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKKyAgICByZWN0ID0gbWFpblZpZXctPnJv
b3RWaWV3VG9Db250ZW50cyhyZWN0KTsKICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNv
Z25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3QsIGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxYzc5ZTZiZWUwNDdiYmFlNzM3NjlmMzI5ZDM1MGQ2ZWYzYjdhNTIyLi4xMTdlMTE2OTEz
OTJiNTYyYmYzMjlhZTVhNzk4MmNlOWQ1MWZkNGE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTItMDgtMDkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBT
cGVlY2ggSW5wdXQ6IHdyb25nIHBvc2l0aW9uIHdhcyByZXBvcnRlZCBmb3Igc2NvbGxlZC1kb3du
IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3QgdGhhdCB0aGUgcG9zaXRpb24gb2YgdGhlIHNwZWVjaCBlbGVtZW50IGlzIHBhc3NlZCB0
byB0aGUgZW1iZWRkZXIKKyAgICAgICAgY29yZWN0bHksIGkuZS4gcmVsYXRpdmUgdG8gdGhlIHdp
bmRvdywgd2hlbiB0aGUgcGFnZSBpcyBzY3JvbGxlZCBkb3duLgorCisgICAgICAgICogZmFzdC9z
cGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTA4LTA5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAg
ICAgIERPTUNoYXJhY3RlckRhdGFNb2RpZmllZCBzaG91bGQgbm90IGJlIGZpcmVkIGluc2lkZSBz
aGFkb3dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRp
b24tc2Nyb2xsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxl
LXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTcyZjE4M2RmMTFm
OWE5ZjAyZTQ5YTFmZTFlOTc0MjE2NDZhNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIxIEBACitUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBjbGljayB3aXRoIDxpbnB1dCB0
eXBlPSJ0ZXh0IiBzcGVlY2g+LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2xp
Y2tpbmcgdGhlIHNwZWVjaCBidXR0b24uCitvblNwZWVjaENoYW5nZQorc2Nyb2xsQW1vdW50OiAx
MDAKK2NsaWNrVGFyZ2V0WDogMTU5CitjbGlja1RhcmdldFk6IDIwOQoraW5wdXQub2Zmc2V0VG9w
OiAzNjIKK2lucHV0Lm9mZnNldEhlaWdodDogMjIKK3g6IDE0NQoreTogMzAxCit3OiAxNgoraDog
MTYKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3Jv
bGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9s
bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlhZDU1YjlmODNiMWE3MTNkMWIzMDAxYjExNDgwYmExZWJk
YzQ1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1w
b3NpdGlvbi1zY3JvbGxlZC5odG1sCkBAIC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3Rz
IGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVj
aD4uJyk7CisKK2Z1bmN0aW9uIG9uU3BlZWNoQ2hhbmdlKCkgeworICAgIGRlYnVnKCdvblNwZWVj
aENoYW5nZScpOworICAgIHZhciBwb2ludCA9IGlucHV0LnZhbHVlLnNwbGl0KCcsJyk7CisgICAg
d2luZG93LnggPSBwYXJzZUludChwb2ludFswXSk7CisgICAgd2luZG93LnkgPSBwYXJzZUludChw
b2ludFsxXSk7CisgICAgd2luZG93LncgPSBwYXJzZUludChwb2ludFsyXSk7CisgICAgd2luZG93
LmggPSBwYXJzZUludChwb2ludFszXSk7CisKKyAgICBkZWJ1Zygnc2Nyb2xsQW1vdW50OiAnICsg
c2Nyb2xsQW1vdW50KTsKKyAgICBkZWJ1ZygnY2xpY2tUYXJnZXRYOiAnICsgY2xpY2tUYXJnZXRY
KTsKKyAgICBkZWJ1ZygnY2xpY2tUYXJnZXRZOiAnICsgY2xpY2tUYXJnZXRZKTsKKyAgICBkZWJ1
ZygnaW5wdXQub2Zmc2V0VG9wOiAnICsgaW5wdXQub2Zmc2V0VG9wKTsKKyAgICBkZWJ1ZygnaW5w
dXQub2Zmc2V0SGVpZ2h0OiAnICsgaW5wdXQub2Zmc2V0SGVpZ2h0KTsKKworICAgIGRlYnVnKCd4
OiAnICsgeCk7CisgICAgZGVidWcoJ3k6ICcgKyB5KTsKKyAgICBkZWJ1ZygndzogJyArIHcpOwor
ICAgIGRlYnVnKCdoOiAnICsgaCk7CisKKyAgICAvLyBGSVhNRTogSSB3b3VsZCBleHBlY3QgeCBh
bmQgeSB0byBiZSBjbG9zZSB0byBjbGlja1RhcmdldHtYLFl9LCBidXQgdGhhdCBkb2Vzbid0IHNl
ZW0gdG8gYmUgdGhlIGNhc2UgOi8KKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlv
biBydW4oKSB7CisgICAgd2luZG93LmlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lucHV0JylbMF07CisgICAgaW5wdXQub253ZWJraXRzcGVlY2hjaGFuZ2UgPSBvblNwZWVj
aENoYW5nZTsKKworICAgIHdpbmRvdy5zY3JvbGxBbW91bnQgPSAxMDA7CisgICAgd2luZG93LnNj
cm9sbFRvKDAsIHNjcm9sbEFtb3VudCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYg
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja1NwZWVjaElu
cHV0RHVtcFJlY3QodHJ1ZSk7CisgICAgICAgIGRlYnVnKCdDbGlja2luZyB0aGUgc3BlZWNoIGJ1
dHRvbi4nKTsKKworICAgICAgICB3aW5kb3cuY2xpY2tUYXJnZXRYID0gaW5wdXQub2Zmc2V0TGVm
dCArIGlucHV0Lm9mZnNldFdpZHRoIC0gNDsKKyAgICAgICAgd2luZG93LmNsaWNrVGFyZ2V0WSA9
IGlucHV0Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICAgICAgY2xp
Y2tUYXJnZXRZIC09IHNjcm9sbEFtb3VudDsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhjbGlja1RhcmdldFgsIGNsaWNrVGFyZ2V0WSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQorfQorCit3
aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwMHB4Ij48L2Rpdj4KKzxpbnB1dCB4LXdlYmtpdC1z
cGVlY2g+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157700</attachid>
            <date>2012-08-10 04:15:31 -0700</date>
            <delta_ts>2012-08-13 01:42:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93634-20120810121503.patch</filename>
            <type>text/plain</type>
            <size>5988</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUwMjI5NDEwZmJiMjM5
OTE5MmY5NDNjNDBlNDI2OTYxMjI4Y2ZjMS4uYzIwYzFlNDlhOTMyODMyYmI5OTkxNzE4YjYwN2Jm
NmYyYzcwNzg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTEwICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiB3
cm9uZyBwb3NpdGlvbiB3YXMgcmVwb3J0ZWQgZm9yIHNjb2xsZWQtZG93biBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNsaWNraW5n
IG9uIGEgc3BlZWNoLWVuYWJsZWQgaW5wdXQgZWxlbWVudCwgV2ViS2l0IHJlcG9ydHMKKyAgICAg
ICAgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IHRvIHRoZSBlbWJlZGRlciwgc28gdGhhdCBp
dCBjYW4gc2hvdworICAgICAgICBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29n
bml0aW9uIGlzIGluIHByb2dyZXNzIGZvcgorICAgICAgICB0aGUgZWxlbWVudCB0aGF0IHRoZSB1
c2VyIGNsaWNrZWQgb24uCisKKyAgICAgICAgT24gYSBwYWdlIHRoYXQgd2FzIHNjcm9sbGVkLCB0
aGlzIHBvc2l0aW9uIHdhcyBiZWluZyByZXBvcnRlZAorICAgICAgICBlcnJvbmVvdXNseTogaXQg
d2FzIGdpdmVuIHJlbGF0aXZlIHRvIHRoZSBmcmFtZSBjb250ZW50IGFzIG9wcG9zZWQgdG8KKyAg
ICAgICAgdGhlIHJvb3QgdmlldywgYW5kIHRoZSBpbi1wcm9ncmVzcyBidWJibGUgd291bGQgYmUg
c2hvd24gaW4gdGhlIHdyb25nCisgICAgICAgIHBsYWNlLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
c3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC5odG1sCisKKyAgICAgICAgKiBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQpOgorCiAyMDEyLTA4
LTEwICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Zv
cm1zXSBJbnRyb2R1Y2Ugc2hhZG93IGVsZW1lbnRzIGZvciBtdWx0aXBsZSBmaWVsZHMgdGltZSBp
bnB1dCBVSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggZTA2ZDU2ZjJmMTdhYjgzMDdjZDUwYjVkNmI2YmJh
N2U3OGRhMGY5My4uNTdmNDY5YTcxNjdlY2E4ODc3ZGU5ZmJkYjcyMGQxZmRjNjA2YmMzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCkBAIC02MTYsOCArNjE2LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCgpCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1l
bnQ+IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0hvc3QoKSk7
CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1dGVJbmhlcml0ZWRMYW5n
dWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRn
cmFtbWFyQXR0cik7Ci0gICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHJlc3BlY3Qg
dHJhbnNmb3JtcwotICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVy
ZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZW5kZXJlcigpLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKSk7CisgICAgSW50UmVj
dCByZWN0ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZ2V0UGl4ZWxT
bmFwcGVkUmVjdCgpKTsKICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRSZWNvZ25pdGlvbiht
X2xpc3RlbmVySWQsIHJlY3QsIGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkKICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNGMw
MWRjOTRkOWUwYmViOTAwNjJmMWZiZWE4NWMzYTI4N2EzZDg4Li4wY2U4MWVhMzE0ZDE3YTcxMTEz
MTI2OWQwMjgwMjA0MmMyOWRmZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMTAg
IEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVlY2ggSW5w
dXQ6IHdyb25nIHBvc2l0aW9uIHdhcyByZXBvcnRlZCBmb3Igc2NvbGxlZC1kb3duIGVsZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzYzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdGhh
dCB0aGUgcG9zaXRpb24gb2YgdGhlIHNwZWVjaCBlbGVtZW50IGlzIHBhc3NlZCB0byB0aGUgZW1i
ZWRkZXIKKyAgICAgICAgY29yZWN0bHksIGkuZS4gd2hlcmUgdGhlIHVzZXIgY2xpY2tlZCwgd2hl
biB0aGUgcGFnZSBpcyBzY3JvbGxlZCBkb3duLgorCisgICAgICAgICogZmFzdC9zcGVlY2gvYnVi
YmxlLXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4
LTEwICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCByZWJhc2VsaW5pbmcgbWFya2VkIHRlc3RzIGZy
b20gcjEyNTE2Ny4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1w
b3NpdGlvbi1zY3JvbGxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9i
dWJibGUtcG9zaXRpb24tc2Nyb2xsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMTdjYmQy
Y2VkYWQzMzIzNzFmMjA1NzViNTRhMzZmZmJhYTY3N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tc2Nyb2xsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggPGlu
cHV0IHR5cGU9InRleHQiIHNwZWVjaD4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbi4KK29uU3BlZWNoQ2hhbmdlCit4IE9LCit5IE9L
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tc2Nyb2xs
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA2MGU2MzBkMWFiNGU5Y2QyMjEzODZiMmU2M2ZkNDk4ZmI0MGRk
OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9z
aXRpb24tc2Nyb2xsZWQuaHRtbApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBm
b3Igc3BlZWNoIGJ1dHRvbiBjbGljayB3aXRoICZsdDtpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+
LicpOworCitmdW5jdGlvbiBvblNwZWVjaENoYW5nZSgpIHsKKyAgICBkZWJ1Zygnb25TcGVlY2hD
aGFuZ2UnKTsKKyAgICB2YXIgcmVjdCA9IGlucHV0LnZhbHVlLnNwbGl0KCcsJyk7CisgICAgdmFy
IHggPSBwYXJzZUludChyZWN0WzBdKTsKKyAgICB2YXIgeSA9IHBhcnNlSW50KHJlY3RbMV0pOwor
CisgICAgaWYgKE1hdGguYWJzKHggLSBjbGlja1RhcmdldFgpID4gMjApIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgneCB0b28gZmFyIGF3YXkgZnJvbSBjbGlja1RhcmdldFgnKTsKKyAgICAgICAgZGVi
dWcoJ3g6ICcgKyB4ICsgJyBjbGlja1RhcmdldFg6ICcgKyBjbGlja1RhcmdldFgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGRlYnVnKCd4IE9LJyk7CisgICAgfQorCisgICAgaWYgKE1hdGguYWJz
KHkgLSBjbGlja1RhcmdldFkpID4gMjApIHsKKyAgICAgICAgdGVzdEZhaWxlZCgneSB0b28gZmFy
IGF3YXkgZnJvbSBjbGlja1RhcmdldFknKTsKKyAgICAgICAgZGVidWcoJ3k6ICcgKyB5ICsgJyBj
bGlja1RhcmdldFk6ICcgKyBjbGlja1RhcmdldFkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRl
YnVnKCd5IE9LJyk7CisgICAgfQorCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IHJ1bigpIHsKKyAgICB3aW5kb3cuaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnaW5wdXQnKVswXTsKKyAgICBpbnB1dC5vbndlYmtpdHNwZWVjaGNoYW5nZSA9IG9uU3BlZWNo
Q2hhbmdlOworCisgICAgd2luZG93LnNjcm9sbEFtb3VudCA9IDEwMDsKKyAgICB3aW5kb3cuc2Ny
b2xsVG8oMCwgc2Nyb2xsQW1vdW50KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrU3BlZWNoSW5w
dXREdW1wUmVjdCh0cnVlKTsKKyAgICAgICAgZGVidWcoJ0NsaWNraW5nIHRoZSBzcGVlY2ggYnV0
dG9uLicpOworCisgICAgICAgIHdpbmRvdy5jbGlja1RhcmdldFggPSBpbnB1dC5vZmZzZXRMZWZ0
ICsgaW5wdXQub2Zmc2V0V2lkdGggLSA0OworICAgICAgICB3aW5kb3cuY2xpY2tUYXJnZXRZID0g
aW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgICAgICBjbGlj
a1RhcmdldFkgLT0gc2Nyb2xsQW1vdW50OworCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKGNsaWNrVGFyZ2V0WCwgY2xpY2tUYXJnZXRZKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB9Cit9CisKK3dp
bmRvdy5vbmxvYWQgPSBydW47Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzxkaXYgc3R5bGU9ImhlaWdodDogMjAwcHgiPjwvZGl2PgorPGlucHV0IHgtd2Via2l0LXNw
ZWVjaD4KKzxkaXYgc3R5bGU9ImhlaWdodDogMTAwMHB4Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157940</attachid>
            <date>2012-08-13 01:42:35 -0700</date>
            <delta_ts>2012-08-14 00:43:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93634-20120813094204.patch</filename>
            <type>text/plain</type>
            <size>5986</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE0ZGQ0YTc0ZDdhMzM0
OWY1Mjc4ZjQzZmRjNDE4YzJkNTU1MGI1Zi4uNzZiNDIyOWQ1OWFhNjFmZjFlMmE1MDQzZTFjMzc0
Y2E4NTU2YTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTEzICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiB3
cm9uZyBwb3NpdGlvbiB3YXMgcmVwb3J0ZWQgZm9yIHNjb2xsZWQtZG93biBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNsaWNraW5n
IG9uIGEgc3BlZWNoLWVuYWJsZWQgaW5wdXQgZWxlbWVudCwgV2ViS2l0IHJlcG9ydHMKKyAgICAg
ICAgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IHRvIHRoZSBlbWJlZGRlciwgc28gdGhhdCBp
dCBjYW4gc2hvdworICAgICAgICBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29n
bml0aW9uIGlzIGluIHByb2dyZXNzIGZvcgorICAgICAgICB0aGUgZWxlbWVudCB0aGF0IHRoZSB1
c2VyIGNsaWNrZWQgb24uCisKKyAgICAgICAgT24gYSBwYWdlIHRoYXQgd2FzIHNjcm9sbGVkLCB0
aGlzIHBvc2l0aW9uIHdhcyBiZWluZyByZXBvcnRlZAorICAgICAgICBlcnJvbmVvdXNseTogaXQg
d2FzIGdpdmVuIHJlbGF0aXZlIHRvIHRoZSBmcmFtZSBjb250ZW50IGFzIG9wcG9zZWQgdG8KKyAg
ICAgICAgdGhlIHJvb3QgdmlldywgYW5kIHRoZSBpbi1wcm9ncmVzcyBidWJibGUgd291bGQgYmUg
c2hvd24gaW4gdGhlIHdyb25nCisgICAgICAgIHBsYWNlLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
c3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC5odG1sCisKKyAgICAgICAgKiBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQpOgorCiAyMDEyLTA4
LTEzICBQZXRlciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjEyNDcyMy1yMTI0NzQxKTogNSBpbnNwZWN0b3IvZGVidWdnZXIgdGVz
dHMgZmFpbGluZyBvbiBBcHBsZSBMaW9uIERlYnVnIFdLMSAoVGVzdHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApp
bmRleCBlMDZkNTZmMmYxN2FiODMwN2NkNTBiNWQ2YjZiYmE3ZTc4ZGEwZjkzLi41N2Y0NjlhNzE2
N2VjYTg4NzdkZTlmYmRiNzIwZDFmZGM2MDZiYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTYxNiw4
ICs2MTYsNyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVj
aElucHV0KCkKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93SG9zdCgpKTsKICAgICBBdG9taWNTdHJpbmcgbGFu
Z3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5nIGdy
YW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKLSAgICAvLyBG
SVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCi0gICAgSW50UmVj
dCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmll
dygpLT5jb250ZW50c1RvV2luZG93KHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
SWdub3JpbmdUcmFuc2Zvcm1zKCkpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBkb2N1bWVudCgpLT52
aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhnZXRQaXhlbFNuYXBwZWRSZWN0KCkpOwogICAgIGlm
IChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFu
Z3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBz
ZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0NzJjY2RlMGY1NjBjNGExN2Y2NzJhY2Fl
M2YxZDkwNTcwYTA5MDIuLjNkNGFhMTlkOWZkYTgxYjQ2MDMxYWEyODUyN2JhZTliZjk1NjNhYzIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0xMyAgSGFucyBXZW5uYm9yZyAgPGhhbnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWVjaCBJbnB1dDogd3JvbmcgcG9zaXRpb24gd2Fz
IHJlcG9ydGVkIGZvciBzY29sbGVkLWRvd24gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUg
c3BlZWNoIGVsZW1lbnQgaXMgcGFzc2VkIHRvIHRoZSBlbWJlZGRlcgorICAgICAgICBjb3JlY3Rs
eSwgaS5lLiB3aGVyZSB0aGUgdXNlciBjbGlja2VkLCB3aGVuIHRoZSBwYWdlIGlzIHNjcm9sbGVk
IGRvd24uCisKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tc2Nyb2xsZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9idWJibGUtcG9zaXRp
b24tc2Nyb2xsZWQuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMTIgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMjUzOTIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUt
cG9zaXRpb24tc2Nyb2xsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gv
YnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE3Y2Jk
MmNlZGFkMzMyMzcxZjIwNTc1YjU0YTM2ZmZiYWE2NzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBjbGljayB3aXRoIDxp
bnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworQ2xpY2tpbmcgdGhlIHNwZWVjaCBidXR0b24uCitvblNwZWVjaENoYW5nZQoreCBPSworeSBP
SworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLXNjcm9s
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tc2Nyb2xs
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YWU4NDEwZmY3ZjhkN2JhZjE2YzEzNWQ4ZjRiMWNmMTc3OTM4
MTJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBv
c2l0aW9uLXNjcm9sbGVkLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdHMg
Zm9yIHNwZWVjaCBidXR0b24gY2xpY2sgd2l0aCAmbHQ7aW5wdXQgdHlwZT0idGV4dCIgc3BlZWNo
Pi4nKTsKKworZnVuY3Rpb24gb25TcGVlY2hDaGFuZ2UoKSB7CisgICAgZGVidWcoJ29uU3BlZWNo
Q2hhbmdlJyk7CisgICAgdmFyIHJlY3QgPSBpbnB1dC52YWx1ZS5zcGxpdCgnLCcpOworICAgIHZh
ciB4ID0gcGFyc2VJbnQocmVjdFswXSk7CisgICAgdmFyIHkgPSBwYXJzZUludChyZWN0WzFdKTsK
KworICAgIGlmIChNYXRoLmFicyh4IC0gY2xpY2tUYXJnZXRYKSA+IDIwKSB7CisgICAgICAgIHRl
c3RGYWlsZWQoJ3ggdG9vIGZhciBhd2F5IGZyb20gY2xpY2tUYXJnZXRYJyk7CisgICAgICAgIGRl
YnVnKCd4OiAnICsgeCArICcgY2xpY2tUYXJnZXRYOiAnICsgY2xpY2tUYXJnZXRYKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBkZWJ1ZygneCBPSycpOworICAgIH0KKworICAgIGlmIChNYXRoLmFi
cyh5IC0gY2xpY2tUYXJnZXRZKSA+IDIwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ3kgdG9vIGZh
ciBhd2F5IGZyb20gY2xpY2tUYXJnZXRZJyk7CisgICAgICAgIGRlYnVnKCd5OiAnICsgeSArICcg
Y2xpY2tUYXJnZXRZOiAnICsgY2xpY2tUYXJnZXRZKTsKKyAgICB9IGVsc2UgeworICAgICAgICBk
ZWJ1ZygneSBPSycpOworICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlv
biBydW4oKSB7CisgICAgd2luZG93LmlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lucHV0JylbMF07CisgICAgaW5wdXQub253ZWJraXRzcGVlY2hjaGFuZ2UgPSBvblNwZWVj
aENoYW5nZTsKKworICAgIHZhciBzY3JvbGxBbW91bnQgPSAxMDA7CisgICAgd2luZG93LnNjcm9s
bFRvKDAsIHNjcm9sbEFtb3VudCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3QodHJ1ZSk7CisgICAgICAgIGRlYnVnKCdDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRv
bi4nKTsKKworICAgICAgICB3aW5kb3cuY2xpY2tUYXJnZXRYID0gaW5wdXQub2Zmc2V0TGVmdCAr
IGlucHV0Lm9mZnNldFdpZHRoIC0gNDsKKyAgICAgICAgd2luZG93LmNsaWNrVGFyZ2V0WSA9IGlu
cHV0Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICAgICAgY2xpY2tU
YXJnZXRZIC09IHNjcm9sbEFtb3VudDsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhjbGlja1RhcmdldFgsIGNsaWNrVGFyZ2V0WSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQorfQorCit3aW5k
b3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwMHB4Ij48L2Rpdj4KKzxpbnB1dCB4LXdlYmtpdC1zcGVl
Y2g+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158247</attachid>
            <date>2012-08-14 00:43:47 -0700</date>
            <delta_ts>2012-08-14 02:07:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93634-20120814084314.patch</filename>
            <type>text/plain</type>
            <size>7934</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJmMDgxNzEwMDhiZWNm
YTBjMDVlM2Y3MTVjY2I3OWU0ZDIwYzA2Zi4uMmJkOWZlZmJjMWVmYWQwMWFiNGE2YjExNWRjNTNm
MGFlZTkxMzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTE0ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiB3
cm9uZyBwb3NpdGlvbiB3YXMgcmVwb3J0ZWQgZm9yIHNjb2xsZWQtZG93biBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNsaWNraW5n
IG9uIGEgc3BlZWNoLWVuYWJsZWQgaW5wdXQgZWxlbWVudCwgV2ViS2l0IHJlcG9ydHMKKyAgICAg
ICAgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IHRvIHRoZSBlbWJlZGRlciwgc28gdGhhdCBp
dCBjYW4gc2hvdworICAgICAgICBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29n
bml0aW9uIGlzIGluIHByb2dyZXNzIGZvcgorICAgICAgICB0aGUgZWxlbWVudCB0aGF0IHRoZSB1
c2VyIGNsaWNrZWQgb24uCisKKyAgICAgICAgT24gYSBwYWdlIHRoYXQgd2FzIHNjcm9sbGVkLCB0
aGlzIHBvc2l0aW9uIHdhcyBiZWluZyByZXBvcnRlZAorICAgICAgICBlcnJvbmVvdXNseTogaXQg
d2FzIGdpdmVuIHJlbGF0aXZlIHRvIHRoZSBmcmFtZSBjb250ZW50IGFzIG9wcG9zZWQgdG8KKyAg
ICAgICAgdGhlIHJvb3QgdmlldywgYW5kIHRoZSBpbi1wcm9ncmVzcyBidWJibGUgd291bGQgYmUg
c2hvd24gaW4gdGhlIHdyb25nCisgICAgICAgIHBsYWNlLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
c3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC5odG1sCisKKyAgICAgICAgKiBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQpOgorCiAyMDEyLTA4
LTE0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAg
ICAgICAgcmVncmVzc2lvbihyMTI0NTEwKSB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25z
dHJ1Y3Rvci5odG1sIGlzIGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBlMDZkNTZmMmYxN2Fi
ODMwN2NkNTBiNWQ2YjZiYmE3ZTc4ZGEwZjkzLi41N2Y0NjlhNzE2N2VjYTg4NzdkZTlmYmRiNzIw
ZDFmZGM2MDZiYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTYxNiw4ICs2MTYsNyBAQCB2b2lkIElu
cHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBSZWZQ
dHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50
Kj4oc2hhZG93SG9zdCgpKTsKICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29t
cHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0
QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKLSAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
cHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChyZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvV2lu
ZG93KHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KCkpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9S
b290VmlldyhnZXRQaXhlbFNuYXBwZWRSZWN0KCkpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5z
dGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oCmluZGV4IGUyNmY5Nzlm
ODdiOGJmMzAwNWMyM2FhYTMwNDYwMTQ5ODU5NWQ1NjQuLjY5OTJmYmE0M2JhZmJhNTQxNDkyOTZk
NDZjN2ZmM2E2MTc5YTFhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BlZWNo
SW5wdXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0Q2xpZW50
LmgKQEAgLTUxLDcgKzUxLDggQEAgcHVibGljOgogICAgIC8vIFRoZSBjbGllbnQgZG9lcyBub3Qg
dGFrZSBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIuCiAgICAgdmlydHVhbCB2b2lkIHNldExpc3Rl
bmVyKFNwZWVjaElucHV0TGlzdGVuZXIqKSA9IDA7CiAKLSAgICAvLyBTdGFydHMgc3BlZWNoIHJl
Y29nbml0aW9uIGFuZCBhdWRpbyByZWNvcmRpbmcuCisgICAgLy8gU3RhcnRzIHNwZWVjaCByZWNv
Z25pdGlvbiBhbmQgYXVkaW8gcmVjb3JkaW5nLiBlbGVtZW50UmVjdCBpcyB0aGUgcG9zaXRpb24K
KyAgICAvLyBvZiB0aGUgZWxlbWVudCB3aGVyZSB0aGUgdXNlciBjbGlja2VkIGluIHRoZSBSb290
VmlldyBjb29yZGluYXRlIHN5c3RlbS4KICAgICB2aXJ0dWFsIGJvb2wgc3RhcnRSZWNvZ25pdGlv
bihpbnQgcmVxdWVzdElkLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgU3RyaW5nJiBncmFtbWFyLCBTZWN1cml0eU9yaWdpbiop
ID0gMDsKIAogICAgIC8vIFN0b3BzIGF1ZGlvIHJlY29yZGluZyBhbmQgcGVyZm9ybXMgcmVjb2du
aXRpb24gd2l0aCB0aGUgYXVkaW8gcmVjb3JkZWQgdW50aWwgbm93CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCmlu
ZGV4IGVkOTMwZGMyYjU1M2NkYjdjZTJlMDE5NTQwNmY1NTM1ODQ4YWVmZjIuLjM4NmI4YWMxYTli
ODZkOGVkZmM5NGU5Yjg3ZDE4MDgzMGQwODUwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCkBAIC00NCw3
ICs0NCw4IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAg
Ly8gU3RhcnRzIHNwZWVjaCByZWNvZ25pdGlvbi4gU3BlZWNoIHdpbGwgZ2V0IHJlY29yZGVkIHVu
dGlsIHRoZSBlbmRwb2ludGVyIGRldGVjdHMgc2lsZW5jZSwKICAgICAvLyBydW5zIHRvIHRoZSBs
aW1pdCBvciBzdG9wUmVjb3JkaW5nIGlzIGNhbGxlZC4gUHJvZ3Jlc3MgaW5kaWNhdGlvbnMgYW5k
IHRoZSByZWNvZ25pemVkCi0gICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5l
ciBpbnRlcmZhY2UuCisgICAgLy8gdGV4dCBhcmUgcmV0dXJuZWQgdmlhIHRoZSBsaXN0ZW5lciBp
bnRlcmZhY2UuIGVsZW1lbnRSZWN0IGlzIHRoZSBwb3NpdGlvbgorICAgIC8vIG9mIHRoZSBlbGVt
ZW50IHdoZXJlIHRoZSB1c2VyIGNsaWNrZWQgaW4gdGhlIFJvb3RWaWV3IGNvb3JkaW5hdGUgc3lz
dGVtLgogICAgIHZpcnR1YWwgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNv
bnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlLCBjb25z
dCBXZWJTdHJpbmcmIGdyYW1tYXIsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAg
ICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGM2Nzg3
NThmNmMxNDhkZTlhYjYwMTE1ZjkwYzdkOTE2YWI4YzEyYy4uMjI0MTQ1NDk5NjA1NGE2NTlhODc0
YmQ5NmQ4MDZkMDIyOTY0MDk2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTE0ICBI
YW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0
OiB3cm9uZyBwb3NpdGlvbiB3YXMgcmVwb3J0ZWQgZm9yIHNjb2xsZWQtZG93biBlbGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRoYXQg
dGhlIHBvc2l0aW9uIG9mIHRoZSBzcGVlY2ggZWxlbWVudCBpcyBwYXNzZWQgdG8gdGhlIGVtYmVk
ZGVyCisgICAgICAgIGNvcmVjdGx5LCBpLmUuIHdoZXJlIHRoZSB1c2VyIGNsaWNrZWQsIHdoZW4g
dGhlIHBhZ2UgaXMgc2Nyb2xsZWQgZG93bi4KKworICAgICAgICAqIGZhc3Qvc3BlZWNoL2J1YmJs
ZS1wb3NpdGlvbi1zY3JvbGxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0x
NCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAg
ICAgIHJlZ3Jlc3Npb24ocjEyNDUxMCkgd2ViaW50ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3Ry
dWN0b3IuaHRtbCBpcyBjcmFzaGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvYnViYmxlLXBvc2l0aW9uLXNjcm9sbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmQxN2NiZDJjZWRhZDMzMjM3MWYyMDU3NWI1NGEzNmZmYmFhNjc3YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgZm9yIHNwZWVjaCBidXR0b24gY2xp
Y2sgd2l0aCA8aW5wdXQgdHlwZT0idGV4dCIgc3BlZWNoPi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK0NsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uLgorb25TcGVlY2hDaGFuZ2UK
K3ggT0sKK3kgT0sKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi1zY3JvbGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0
aW9uLXNjcm9sbGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFlODQxMGZmN2Y4ZDdiYWYxNmMxMzVkOGY0
YjFjZjE3NzkzODEyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2J1YmJsZS1wb3NpdGlvbi1zY3JvbGxlZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRp
b24oJ1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRl
eHQiIHNwZWVjaD4uJyk7CisKK2Z1bmN0aW9uIG9uU3BlZWNoQ2hhbmdlKCkgeworICAgIGRlYnVn
KCdvblNwZWVjaENoYW5nZScpOworICAgIHZhciByZWN0ID0gaW5wdXQudmFsdWUuc3BsaXQoJywn
KTsKKyAgICB2YXIgeCA9IHBhcnNlSW50KHJlY3RbMF0pOworICAgIHZhciB5ID0gcGFyc2VJbnQo
cmVjdFsxXSk7CisKKyAgICBpZiAoTWF0aC5hYnMoeCAtIGNsaWNrVGFyZ2V0WCkgPiAyMCkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCd4IHRvbyBmYXIgYXdheSBmcm9tIGNsaWNrVGFyZ2V0WCcpOwor
ICAgICAgICBkZWJ1ZygneDogJyArIHggKyAnIGNsaWNrVGFyZ2V0WDogJyArIGNsaWNrVGFyZ2V0
WCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoJ3ggT0snKTsKKyAgICB9CisKKyAgICBp
ZiAoTWF0aC5hYnMoeSAtIGNsaWNrVGFyZ2V0WSkgPiAyMCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCd5IHRvbyBmYXIgYXdheSBmcm9tIGNsaWNrVGFyZ2V0WScpOworICAgICAgICBkZWJ1ZygneTog
JyArIHkgKyAnIGNsaWNrVGFyZ2V0WTogJyArIGNsaWNrVGFyZ2V0WSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGVidWcoJ3kgT0snKTsKKyAgICB9CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KworZnVuY3Rpb24gcnVuKCkgeworICAgIHdpbmRvdy5pbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgIGlucHV0Lm9ud2Via2l0c3BlZWNoY2hhbmdl
ID0gb25TcGVlY2hDaGFuZ2U7CisKKyAgICB2YXIgc2Nyb2xsQW1vdW50ID0gMTAwOworICAgIHdp
bmRvdy5zY3JvbGxUbygwLCBzY3JvbGxBbW91bnQpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tT
cGVlY2hJbnB1dER1bXBSZWN0KHRydWUpOworICAgICAgICBkZWJ1ZygnQ2xpY2tpbmcgdGhlIHNw
ZWVjaCBidXR0b24uJyk7CisKKyAgICAgICAgd2luZG93LmNsaWNrVGFyZ2V0WCA9IGlucHV0Lm9m
ZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgICAgIHdpbmRvdy5jbGlja1Rh
cmdldFkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQgLyAyOworCisgICAg
ICAgIGNsaWNrVGFyZ2V0WSAtPSBzY3JvbGxBbW91bnQ7CisKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oY2xpY2tUYXJnZXRYLCBjbGlja1RhcmdldFkpOworICAgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIH0K
K30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPGRpdiBzdHlsZT0iaGVpZ2h0OiAyMDBweCI+PC9kaXY+Cis8aW5wdXQgeC13
ZWJraXQtc3BlZWNoPgorPGRpdiBzdHlsZT0iaGVpZ2h0OiAxMDAwcHgiPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>