<?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>60278</bug_id>
          
          <creation_ts>2011-05-05 10:18:35 -0700</creation_ts>
          <short_desc>Removing the full screen element via parent.innerHTML=&quot;&quot; does not result in a webkitfullscreenchange event.</short_desc>
          <delta_ts>2011-06-03 14:08:27 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>ademar</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398799</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 10:18:35 -0700</bug_when>
    <thetext>Removing the full screen element via parent.innerHTML=&quot;&quot; does not result in a webkitfullscreenchange event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398816</commentid>
    <comment_count>1</comment_count>
      <attachid>92432</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 10:36:52 -0700</bug_when>
    <thetext>Created attachment 92432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398819</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 10:39:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/9390280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398826</commentid>
    <comment_count>3</comment_count>
      <attachid>92432</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-05 10:43:05 -0700</bug_when>
    <thetext>Comment on attachment 92432
Patch

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

&gt; Source/WebCore/dom/Document.cpp:3378
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    // If the current full screen element or any of its ancestors is removed, set the current
&gt; +    // full screen element to the document root, and fire a fullscreenchange event to inform 
&gt; +    // clients of the DOM.

It’s really inelegant to have to put full-screen-specific code right into the basic DOM manipulation. I also expect that calling the contains function every time a node is removed will have a measurable performance impact.

Is there a better way to do this?

Maybe m_fullScreenElement should be 0 rather than the document element, when there is no special element. Then there would be a quick null check.

Or maybe you should add a check that m_fullScreenElement is != documentElement() before you check anything else for less performance impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398873</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 11:39:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 92432 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92432&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:3378
&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +    // If the current full screen element or any of its ancestors is removed, set the current
&gt; &gt; +    // full screen element to the document root, and fire a fullscreenchange event to inform 
&gt; &gt; +    // clients of the DOM.
&gt; 
&gt; It’s really inelegant to have to put full-screen-specific code right into the basic DOM manipulation. I also expect that calling the contains function every time a node is removed will have a measurable performance impact.

In the most frequent case, where m_fullScreenElement is 0; contains bails out immediately.  So for that case, the performance impact is negligable.  For the case where we&apos;re in full screen, the performace hit is walking up the tree from the full screen element to the removed one, once.

&gt; Is there a better way to do this?

Signs point to yes!  I believe this code can be moved into Node::willRemove(), which can do a simple &quot;am I the full screen element?&quot; pointer equality check.

&gt; Maybe m_fullScreenElement should be 0 rather than the document element, when there is no special element. Then there would be a quick null check.

That&apos;s possible, though it might introduce other problems.  And it probably won&apos;t be necessary if I move things into the function listed above.

&gt; Or maybe you should add a check that m_fullScreenElement is != documentElement() before you check anything else for less performance impact.

Lets see if it&apos;s necessary after moving things around a bit.

I&apos;ll get a new patch up soon.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399076</commentid>
    <comment_count>5</comment_count>
      <attachid>92479</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 14:59:05 -0700</bug_when>
    <thetext>Created attachment 92479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399331</commentid>
    <comment_count>6</comment_count>
      <attachid>92479</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-05 22:29:22 -0700</bug_when>
    <thetext>Comment on attachment 92479
Patch

 void Node::willRemove()
 {
+#if ENABLE(FULLSCREEN_API)
+    if (document()-&gt;webkitCurrentFullScreenElement() == this)
+        document()-&gt;fullScreenElementWillBeRemoved();
+#endif
 }

Can an arbitrary node be full screen? Even an attribute node?

Other elements need special handling when being removed, e.g. a focused one. The situation seems similar at a first glance - can the same technique be used to detect when a fullscreen node is being removed?

Also, fullscreen looks very much like a renderer behavior, not a DOM one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399344</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 22:58:42 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 92479 [details])
&gt;  void Node::willRemove()
&gt;  {
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    if (document()-&gt;webkitCurrentFullScreenElement() == this)
&gt; +        document()-&gt;fullScreenElementWillBeRemoved();
&gt; +#endif
&gt;  }
&gt; 
&gt; Can an arbitrary node be full screen? Even an attribute node?

Any element.  I doubt anyone would try taking an attribute node full screen, but if they tried, we&apos;d dutifully show the full screen UI.

&gt; Other elements need special handling when being removed, e.g. a focused one. The situation seems similar at a first glance - can the same technique be used to detect when a fullscreen node is being removed?

We could, in theory, add an ivar to Element called m_isFullScreen (or something), and check that instead of querying the document.  But would that be advantageous at all?

&gt; Also, fullscreen looks very much like a renderer behavior, not a DOM one.

What do you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399347</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-05 23:12:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Other elements need special handling when being removed, e.g. a focused one. The situation seems similar at a first glance - can the same technique be used to detect when a fullscreen node is being removed?
&gt; 
&gt; We could, in theory, add an ivar to Element called m_isFullScreen (or something), and check that instead of querying the document.  But would that be advantageous at all?


It looks like focused nodes are removed in ContainerNode::removeChild() and ContainerNode::removeChildren().  ContainerNode uncritically calls document()-&gt;removeFocusedNodeOfSubtree(...) with a pointer to the child being removed.  What we are doing here is functionally identical, however, it could be refactored to be technically identical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399407</commentid>
    <comment_count>9</comment_count>
      <attachid>92557</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-06 00:58:33 -0700</bug_when>
    <thetext>Created attachment 92557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400974</commentid>
    <comment_count>10</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-05-09 18:50:05 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 92479 [details] [details])
&gt; &gt;  void Node::willRemove()
&gt; &gt;  {
&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +    if (document()-&gt;webkitCurrentFullScreenElement() == this)
&gt; &gt; +        document()-&gt;fullScreenElementWillBeRemoved();
&gt; &gt; +#endif
&gt; &gt;  }
&gt; &gt; 
&gt; &gt; Can an arbitrary node be full screen? Even an attribute node?
&gt; 
&gt; Any element.  I doubt anyone would try taking an attribute node full screen, but if they tried, we&apos;d dutifully show the full screen UI.

I don&apos;t think so - the fullscreen API only exists in Element.idl. You could probably limit this to Element::willRemove()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401433</commentid>
    <comment_count>11</comment_count>
      <attachid>92557</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-05-10 13:11:01 -0700</bug_when>
    <thetext>Comment on attachment 92557
Patch

Since this exactly matches what we do for focus, I see no reason to object. If there is a better way to do this, we can refactor both these code paths in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401576</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-05-10 15:39:01 -0700</bug_when>
    <thetext>Committed r86185: &lt;http://trac.webkit.org/changeset/86185&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415184</commentid>
    <comment_count>13</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-06-03 14:08:27 -0700</bug_when>
    <thetext>Revision r86185 cherry-picked into qtwebkit-2.2 with commit 2cacab2 &lt;http://gitorious.org/webkit/qtwebkit/commit/2cacab2&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92432</attachid>
            <date>2011-05-05 10:36:52 -0700</date>
            <delta_ts>2011-05-05 14:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60278-20110505103651.patch</filename>
            <type>text/plain</type>
            <size>5163</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU4MTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzJiMzJjOTMzMTQyM2YzY2IxMjg5
ZGUwNGQ5MmU5ZmNiOTgzMGEzLi4wZTAzYzdkMDRmMTg5NDk5ZTBiOWMzMjcxZDFhODc0OTQ5OTMx
MzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZpbmcgdGhlIGZ1bGwgc2NyZWVuIGVsZW1lbnQgdmlhIHBhcmVudC5pbm5l
ckhUTUw9IiIgZG9lcyBub3QgcmVzdWx0IGluIGEgd2Via2l0ZnVsbHNjcmVlbmNoYW5nZSBldmVu
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMjc4
CisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1jaGlsZHJlbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3Zl
LWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorCiAyMDExLTA1LTAzICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRy
ZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1v
dmUtY2hpbGRyZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTBhYjMwMGNmZGNlMGIzMWNi
ODU5MzAyZTk3NThmMWFkYWQ0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1jaGlsZHJlbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw2IEBACitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50
LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0n
KSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0bWxFbGVtZW50
XScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlbW92ZS1jaGlsZHJlbi5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjEwMjA2YTFj
ZWIxMmI0ZDcwZDk4YmE0Yjk4N2UwMjdiY2YxOTRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4uaHRtbApAQCAtMCww
ICsxLDM2IEBACis8Ym9keT4KKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxkaXY+PHNwYW4+PC9zcGFuPjwvZGl2PgorPHNjcmlwdD4KKyAgICAvLyBCYWlsIG91
dCBlYXJseSBpZiB0aGUgZnVsbCBzY3JlZW4gQVBJIGlzIG5vdCBlbmFibGVkIG9yIGlzIG1pc3Np
bmc6CisgICAgaWYgKEVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09
IHVuZGVmaW5lZCkgeworICAgICAgICBsb2dSZXN1bHQoZmFsc2UsICJFbGVtZW50LnByb3RvdHlw
ZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQiKTsKKyAgICAgICAgZW5kVGVz
dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1
bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICAgICAg
fTsKKyAgICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5n
ZScsIGZ1bGxzY3JlZW5DaGFuZ2VkKTsKKworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CisgICAgICAgIHZhciBkaXYgPSBzcGFuLnBh
cmVudE5vZGU7CisKKyAgICAgICAgdmFyIHNwYW5FbnRlcmVkRnVsbFNjcmVlbiA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgICAgICBjYWxsYmFjayA9IGRvY3VtZW50RW50ZXJlZEZ1bGxTY3Jl
ZW47CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCIsIHNwYW4pOworICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICIiOwor
ICAgICAgICB9OworCisgICAgICAgIHZhciBkb2N1bWVudEVudGVyZWRGdWxsU2NyZWVuID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Iiwg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAg
ICAgfTsKKworICAgICAgICBjYWxsYmFjayA9IHNwYW5FbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAg
ICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
KCl9KTsKKyAgICB9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYmM2ZTY0NGRlNzk5NzJlMWI2
ZTY2MDliNzYyNjU1MmEzZWExMDM1Li5hN2Y4MWVmZGZhZWExMjgyYzc2MjcxYzFiMGE4YzkyNTE4
NmYyNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDUtMDUgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIGZ1bGwgc2NyZWVuIGVsZW1lbnQgdmlhIHBh
cmVudC5pbm5lckhUTUw9IiIgZG9lcyBub3QgcmVzdWx0IGluIGEgd2Via2l0ZnVsbHNjcmVlbmNo
YW5nZSBldmVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYwMjc4CisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIERvY3VtZW50Ojpub2RlV2ls
bEJlUmVtb3ZlZCBjYXNlLCBoYW5kbGUgdGhlIAorICAgICAgICBEb2N1bWVudDo6bm9kZUNoaWxk
cmVuV2lsbEJlUmVtb3ZlZCBjYXNlIGFzIHdlbGwsIGFuZCBpZiB0aGUgY3VycmVudAorICAgICAg
ICBmdWxsIHNjcmVlbiBlbGVtZW50IGlzIGFtb25nIHRoZSBjaGlsZHJlbiB3aGljaCB3aWxsIGJl
IHJlbW92ZWQsIHJlc2V0CisgICAgICAgIHRoZSBjdXJyZW50IGZ1bGwgc2NyZWVuIGVsZW1lbnQg
dG8gdGhlIGRvY3VtZW50J3Mgb3duIGVsZW1lbnQuCisKKyAgICAgICAgVGVzdDogZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4uaHRtbAorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlQ2hpbGRyZW5XaWxsQmVS
ZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZCk6
CisKIDIwMTEtMDUtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA1YmNlYTczYTk3ZTQ3YTMxMTYxYjczMmQ1MWVhZTI0YjExMjM0ODQ1Li4xYjMwNzNiMTJlMGY3
Y2U2ODhmOGRiYjNkYzQ3OTc4MDBkMDBiYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTMzNzIsNiArMzM3MiwyMyBAQCB2b2lkIERvY3VtZW50Ojpub2RlQ2hpbGRyZW5XaWxsQmVSZW1v
dmVkKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKICAgICAgICAgICAgIGZyYW1lLT5wYWdlKCkt
PmRyYWdDYXJldENvbnRyb2xsZXIoKS0+bm9kZVdpbGxCZVJlbW92ZWQobik7CiAgICAgICAgIH0K
ICAgICB9CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIC8vIElmIHRoZSBjdXJyZW50
IGZ1bGwgc2NyZWVuIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBhbmNlc3RvcnMgaXMgcmVtb3ZlZCwg
c2V0IHRoZSBjdXJyZW50CisgICAgLy8gZnVsbCBzY3JlZW4gZWxlbWVudCB0byB0aGUgZG9jdW1l
bnQgcm9vdCwgYW5kIGZpcmUgYSBmdWxsc2NyZWVuY2hhbmdlIGV2ZW50IHRvIGluZm9ybSAKKyAg
ICAvLyBjbGllbnRzIG9mIHRoZSBET00uCisgICAgQVNTRVJUKGNvbnRhaW5lcik7CisgICAgaWYg
KGNvbnRhaW5lci0+Y29udGFpbnMobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSkpIHsKKyAgICAg
ICAgQVNTRVJUKGNvbnRhaW5lciAhPSBkb2N1bWVudEVsZW1lbnQoKSk7CisgICAgICAgIAorICAg
ICAgICBpZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5S
ZW5kZXJlci0+cmVtb3ZlKCk7CisgICAgICAgIAorICAgICAgICBzZXRGdWxsU2NyZWVuUmVuZGVy
ZXIoMCk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsK
KyAgICAgICAgcmVjYWxjU3R5bGUoRm9yY2UpOworICAgICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VE
ZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBEb2N1
bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92479</attachid>
            <date>2011-05-05 14:59:05 -0700</date>
            <delta_ts>2011-05-06 00:58:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60278-20110505145903.patch</filename>
            <type>text/plain</type>
            <size>7324</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU4MTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNjhhMWZiODU0MTNiZmIxNTI1ZGE0
NmIyOTYwNjAzZTY4NTQ2MTgyLi44YTYwMDFhZmNmYTkyZjRkMTkwYzI3OWY3YWM4ZWQwMmFhODJm
N2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0yLDYgKzIsMTYgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KIAorICAgICAgICBSZW1vdmluZyB0aGUgZnVsbCBzY3JlZW4gZWxlbWVudCB2aWEg
cGFyZW50LmlubmVySFRNTD0iIiBkb2VzIG5vdCByZXN1bHQgaW4gYSB3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlIGV2ZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjAyNzgKKworICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWNo
aWxkcmVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1yZW1vdmUtY2hpbGRyZW4uaHRtbDogQWRkZWQuCisKKzIwMTEtMDUtMDUgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKICAgICAgICAgZnVsbC1zY3JlZW4tc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50
eHQgc2hvdWxkIGJlIHVuZGVyIHBsYXRmb3JtL21hYwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyMzYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ5YTBhYjMwMGNmZGNlMGIzMWNiODU5MzAyZTk3NThmMWFkYWQ0YmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJl
bW92ZS1jaGlsZHJlbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitFVkVOVCh3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0nKSBPSworRVZFTlQod2Via2l0ZnVs
bHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVl
bkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0bWxFbGVtZW50XScpIE9LCitFTkQgT0YgVEVTVAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1j
aGlsZHJlbi5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUt
Y2hpbGRyZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjEwMjA2YTFjZWIxMmI0ZDcwZDk4YmE0Yjk4N2Uw
MjdiY2YxOTRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4uaHRtbApAQCAtMCwwICsxLDM2IEBACis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxkaXY+PHNwYW4+PC9z
cGFuPjwvZGl2PgorPHNjcmlwdD4KKyAgICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgZnVsbCBz
Y3JlZW4gQVBJIGlzIG5vdCBlbmFibGVkIG9yIGlzIG1pc3Npbmc6CisgICAgaWYgKEVsZW1lbnQu
cHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCkgeworICAgICAg
ICBsb2dSZXN1bHQoZmFsc2UsICJFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbiA9PSB1bmRlZmluZWQiKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHZhciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVu
Y3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICAgICAgfTsKKyAgICAgICAgd2FpdEZvckV2
ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3JlZW5DaGFuZ2Vk
KTsKKworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdz
cGFuJylbMF07CisgICAgICAgIHZhciBkaXYgPSBzcGFuLnBhcmVudE5vZGU7CisKKyAgICAgICAg
dmFyIHNwYW5FbnRlcmVkRnVsbFNjcmVlbiA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBjYWxsYmFjayA9IGRvY3VtZW50RW50ZXJlZEZ1bGxTY3JlZW47CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIHNwYW4p
OworICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICIiOworICAgICAgICB9OworCisgICAgICAg
IHZhciBkb2N1bWVudEVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1l
bnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50KTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfTsKKworICAgICAgICBjYWxs
YmFjayA9IHNwYW5FbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgcnVuV2l0aEtleURvd24oZnVu
Y3Rpb24oKXtzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCl9KTsKKyAgICB9Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBlYmM2ZTY0NGRlNzk5NzJlMWI2ZTY2MDliNzYyNjU1MmEzZWExMDM1
Li41YmYwZGFmYmIzZmI5Y2FkNTJkYjNiZTIwODFhMzlkYTc2MjdlYTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTEtMDUtMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZpbmcgdGhlIGZ1bGwgc2NyZWVuIGVsZW1lbnQgdmlhIHBhcmVudC5pbm5lckhUTUw9IiIgZG9l
cyBub3QgcmVzdWx0IGluIGEgd2Via2l0ZnVsbHNjcmVlbmNoYW5nZSBldmVudC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMjc4CisKKyAgICAgICAg
SGFuZGxlIHRoZSByZW1vdmFsIG9mIGEgZnVsbCBzY3JlZW4gZWxlbWVudCBmcm9tIHdpdGhpbiBO
b2RlOjp3aWxsUmVtb3ZlKCkgaW5zdGVhZAorICAgICAgICBvZiBEb2N1bWVudDo6bm9kZVdpbGxC
ZVJlbW92ZWQoKS4gIFRoZSBuZXcgZnVuY3Rpb24gRG9jdW1lbnQ6OmZ1bGxTY3JlZW5FbGVtZW50
V2lsbEJlUmVtb3ZlZCgpIHdpbGwKKyAgICAgICAgYmUgY2FsbGVkIGJ5IE5vZGU6OndpbGxSZW1v
dmUoKSB0byBoYW5kbGUgdGhvc2UgY2hhbmdlcyB3aGljaCB1c2VkIHRvIG9jY3VyIGluIG5vZGVX
aWxsQmVSZW1vdmVkKCkuCisKKyAgICAgICAgVGVzdDogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1y
ZW1vdmUtY2hpbGRyZW4uaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZWQgdGhlIGNv
ZGUgY2hlY2tpbmcgZm9yIHRoZSBmdWxsIHNjcmVlbiBlbGVtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5FbGVtZW50V2lsbEJlUmVtb3ZlZCk6IEFkZGVkLCBtb3Zl
ZCBmcm9tIG5vZGVXaWxsQmVSZW1vdmVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZW1vdmUp
OiBDaGVjayB0byBzZWUgaWYgdGhpcyBpcyB0aGUgY3VycmVudCBmdWxsIHNjcmVlbiBlbGVtZW50
LgorCiAyMDExLTA1LTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggNWJjZWE3M2E5N2U0N2EzMTE2MWI3MzJkNTFlYWUyNGIxMTIzNDg0NS4uOWQ3MmE5ODA3OTZi
Mjg1MDQ3NWFlZjFkNjdmNzdmNDdhMWJlODZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0zMzkwLDI0ICszMzkwLDYgQEAgdm9pZCBEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9k
ZSogbikKICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsK
ICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5ub2RlV2lsbEJl
UmVtb3ZlZChuKTsKICAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
IC8vIElmIHRoZSBjdXJyZW50IGZ1bGwgc2NyZWVuIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBhbmNl
c3RvcnMgaXMgcmVtb3ZlZCwgc2V0IHRoZSBjdXJyZW50Ci0gICAgLy8gZnVsbCBzY3JlZW4gZWxl
bWVudCB0byB0aGUgZG9jdW1lbnQgcm9vdCwgYW5kIGZpcmUgYSBmdWxsc2NyZWVuY2hhbmdlIGV2
ZW50IHRvIGluZm9ybSAKLSAgICAvLyBjbGllbnRzIG9mIHRoZSBET00uCi0gICAgQVNTRVJUKG4p
OwotICAgIGlmIChuLT5jb250YWlucyhtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKSkgewotICAg
ICAgICBBU1NFUlQobiAhPSBkb2N1bWVudEVsZW1lbnQoKSk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCi0gICAgICAgICAgICBtX2Z1bGxTY3JlZW5SZW5kZXJl
ci0+cmVtb3ZlKCk7Ci0KLSAgICAgICAgc2V0RnVsbFNjcmVlblJlbmRlcmVyKDApOwotICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAgIHJlY2Fs
Y1N0eWxlKEZvcmNlKTsKLSAgICAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lci5zdGFy
dE9uZVNob3QoMCk7Ci0gICAgfQotI2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnRleHRJbnNl
cnRlZChOb2RlKiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTQ5
NjQsNiArNDk0NiwxOSBAQCB2b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1l
ckZpcmVkKFRpbWVyPERvY3VtZW50PiopCiAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUs
IGZhbHNlKSk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5FbGVtZW50V2lsbEJlUmVt
b3ZlZCgpCit7CisgICAgLy8gSWYgdGhlIGN1cnJlbnQgZnVsbCBzY3JlZW4gZWxlbWVudCBvciBh
bnkgb2YgaXRzIGFuY2VzdG9ycyBpcyByZW1vdmVkLCBzZXQgdGhlIGN1cnJlbnQKKyAgICAvLyBm
dWxsIHNjcmVlbiBlbGVtZW50IHRvIHRoZSBkb2N1bWVudCByb290LCBhbmQgZmlyZSBhIGZ1bGxz
Y3JlZW5jaGFuZ2UgZXZlbnQgdG8gaW5mb3JtIAorICAgIC8vIGNsaWVudHMgb2YgdGhlIERPTS4K
KyAgICBpZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCisgICAgICAgIG1fZnVsbFNjcmVlblJlbmRl
cmVyLT5yZW1vdmUoKTsKKyAgICAKKyAgICBzZXRGdWxsU2NyZWVuUmVuZGVyZXIoMCk7CisgICAg
bV9mdWxsU2NyZWVuRWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOworICAgIHJlY2FsY1N0eWxl
KEZvcmNlKTsKKyAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKK30KICNlbmRpZgogCiB2b2lkIERvY3VtZW50OjpkZWNyZW1lbnRMb2FkRXZlbnREZWxheUNv
dW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMjMxNWU3OThhYjUwYzFlZTZhNDUxMGMyNmIx
ZjhmMDNkZjJlZjcxYi4uODk3NjBkMzgwYWI5OGFhMDYzNjRiMGViNDc0MWE0MjBjNTFiNzdmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwNTgsNiArMTA1OCw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+
Kik7CiAgICAgYm9vbCBmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxlbWVudChFbGVtZW50KikgY29u
c3Q7CisgICAgdm9pZCBmdWxsU2NyZWVuRWxlbWVudFdpbGxCZVJlbW92ZWQoKTsKICNlbmRpZgog
CiAgICAgLy8gVXNlZCB0byBhbGxvdyBlbGVtZW50IHRoYXQgbG9hZHMgZGF0YSB3aXRob3V0IGdv
aW5nIHRocm91Z2ggYSBGcmFtZUxvYWRlciB0byBkZWxheSB0aGUgJ2xvYWQnIGV2ZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDBmYzQwMGM0YzI1YThjYjc1NmZiOGJmOTU0OWVhNjdhOTAzNmU4ODMu
LmNjY2I4N2EyYWJhZjQwYjhiOTY1NGUzMzM1MjAxYjllM2FkYjEzNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTEzNTUsNiArMTM1NSwxMCBAQCB2b2lkIE5vZGU6OmF0dGFjaCgpCiAKIHZvaWQgTm9k
ZTo6d2lsbFJlbW92ZSgpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChk
b2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0aGlzKQorICAg
ICAgICBkb2N1bWVudCgpLT5mdWxsU2NyZWVuRWxlbWVudFdpbGxCZVJlbW92ZWQoKTsKKyNlbmRp
ZgogfQogCiB2b2lkIE5vZGU6OmRldGFjaCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92557</attachid>
            <date>2011-05-06 00:58:33 -0700</date>
            <delta_ts>2011-05-10 13:11:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60278-20110506005831.patch</filename>
            <type>text/plain</type>
            <size>9370</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5MDQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOGFlZmUxZDUxYWE1OTdlMDBkZjQ3
OTBiMWI2MTFiMjI4NjIwNjIzLi41ZDIzYTk2MTA2YmY5NWM5MmIwYjkyYTI0YjhjYWQ1NDBhZTMy
YThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZpbmcgdGhlIGZ1bGwgc2NyZWVuIGVsZW1lbnQgdmlhIHBhcmVudC5pbm5l
ckhUTUw9IiIgZG9lcyBub3QgcmVzdWx0IGluIGEgd2Via2l0ZnVsbHNjcmVlbmNoYW5nZSBldmVu
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMjc4
CisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1jaGlsZHJlbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3Zl
LWNoaWxkcmVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qczogRml4ZWQgYW4gZXhjZXB0aW9uIHdoZW4gcnVubmluZyBpbiBTYWZhcmkuCisKIDIw
MTEtMDUtMDUgIEtlbmppIEltYXNha2kgIDxpbWFzYWtpQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKaWFuIExpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5YTBhYjMwMGNmZGNlMGIzMWNiODU5MzAyZTk3NThmMWFkYWQ0YmYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1jaGls
ZHJlbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitFVkVOVCh3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0nKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNo
YW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQg
PT0gJ1tvYmplY3QgSFRNTEh0bWxFbGVtZW50XScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1jaGlsZHJlbi5o
dG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtY2hpbGRyZW4u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMjEwMjA2YTFjZWIxMmI0ZDcwZDk4YmE0Yjk4N2UwMjdiY2YxOTRl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1y
ZW1vdmUtY2hpbGRyZW4uaHRtbApAQCAtMCwwICsxLDM2IEBACis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxkaXY+PHNwYW4+PC9zcGFuPjwvZGl2
PgorPHNjcmlwdD4KKyAgICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgZnVsbCBzY3JlZW4gQVBJ
IGlzIG5vdCBlbmFibGVkIG9yIGlzIG1pc3Npbmc6CisgICAgaWYgKEVsZW1lbnQucHJvdG90eXBl
LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCkgeworICAgICAgICBsb2dSZXN1
bHQoZmFsc2UsICJFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1
bmRlZmluZWQiKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZh
ciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZl
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhldmVudCkKKyAgICAgICAgfTsKKyAgICAgICAgd2FpdEZvckV2ZW50KGRvY3Vt
ZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3JlZW5DaGFuZ2VkKTsKKworICAg
ICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07
CisgICAgICAgIHZhciBkaXYgPSBzcGFuLnBhcmVudE5vZGU7CisKKyAgICAgICAgdmFyIHNwYW5F
bnRlcmVkRnVsbFNjcmVlbiA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBjYWxsYmFj
ayA9IGRvY3VtZW50RW50ZXJlZEZ1bGxTY3JlZW47CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIHNwYW4pOworICAgICAg
ICAgICAgZGl2LmlubmVySFRNTCA9ICIiOworICAgICAgICB9OworCisgICAgICAgIHZhciBkb2N1
bWVudEVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAg
ICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfTsKKworICAgICAgICBjYWxsYmFjayA9IHNw
YW5FbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtz
cGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCl9KTsKKyAgICB9Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcyBiL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRleCA3ZThjZDMwZTUyMDc4
ZGNhYWJkM2ZmNzRmN2Y4ZWVmNmJiOTE4Y2IzLi42NTNmNDE3NWYwMDJkOWY3ZDA2M2ZhMjA3ZTUw
MzU2ZTg5ZDk3NzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0
LmpzCkBAIC0xMyw3ICsxMyw4IEBAIGZ1bmN0aW9uIHJ1bldpdGhLZXlEb3duKGZuKQogewogICAg
IC8vIEZJWE1FOiBXS1RSIGRvZXMgbm90IHlldCBzdXBwb3J0IHRoZSBrZXlEb3duKCkgbWVzc2Fn
ZS4gIERvIGEgbW91c2VEb3duIGhlcmUKICAgICAvLyBpbnN0ZWFkIHVudGlsIGtleURvd24gc3Vw
cG9ydCBpcyBhZGRlZC4KLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50U2VuZGVy
LmtleURvd24gPyAna2V5cHJlc3MnIDogJ21vdXNlZG93bicsIGZ1bmN0aW9uKCkgeyBmbigpOyB9
LCBmYWxzZSk7CisJdmFyIGV2ZW50TmFtZSA9ICF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIg
fHwgZXZlbnRTZW5kZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAnbW91c2Vkb3duJworICAgIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jdGlvbigpIHsgZm4oKTsgfSwg
ZmFsc2UpOwogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICAgICAg
aWYgKGV2ZW50U2VuZGVyLmtleURvd24pCiAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCIgIiwgW10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4YTYzYTE4MjI2YWZkODVlMDgzN2Y1NWUyZTg2ZmI3
MDNkNGNjMzcuLjM4OTg2ODZmNjgxMWQ3NTdjZDZhNjY5MWIxZmE5MWZkYWViMzkxMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wNS0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmluZyB0aGUgZnVsbCBzY3JlZW4gZWxlbWVudCB2aWEgcGFyZW50LmlubmVySFRN
TD0iIiBkb2VzIG5vdCByZXN1bHQgaW4gYSB3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIGV2ZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyNzgKKwor
ICAgICAgICBIYW5kbGUgdGhlIHJlbW92YWwgb2YgYSBmdWxsIHNjcmVlbiBlbGVtZW50IGZyb20g
d2l0aGluIE5vZGU6OndpbGxSZW1vdmUoKSBpbnN0ZWFkCisgICAgICAgIG9mIERvY3VtZW50Ojpu
b2RlV2lsbEJlUmVtb3ZlZCgpLiAgVGhlIG5ldyBmdW5jdGlvbiBEb2N1bWVudDo6ZnVsbFNjcmVl
bkVsZW1lbnRXaWxsQmVSZW1vdmVkKCkgd2lsbAorICAgICAgICBiZSBjYWxsZWQgYnkgTm9kZTo6
d2lsbFJlbW92ZSgpIHRvIGhhbmRsZSB0aG9zZSBjaGFuZ2VzIHdoaWNoIHVzZWQgdG8gb2NjdXIg
aW4gbm9kZVdpbGxCZVJlbW92ZWQoKS4KKworICAgICAgICBUZXN0OiBmdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLXJlbW92ZS1jaGlsZHJlbi5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVXaWxsQmVSZW1vdmVkKTogUmVtb3Zl
ZCB0aGUgY29kZSBjaGVja2luZyBmb3IgdGhlIGZ1bGwgc2NyZWVuIGVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZnVsbFNjcmVlbkVsZW1lbnRXaWxsQmVSZW1vdmVkKTogQWRk
ZWQsIG1vdmVkIGZyb20gbm9kZVdpbGxCZVJlbW92ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6d2ls
bFJlbW92ZSk6IENoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIHRoZSBjdXJyZW50IGZ1bGwgc2NyZWVu
IGVsZW1lbnQuCisKIDIwMTEtMDUtMDUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IDI3OTlhZWYyZGRkNjUxNTgxZjA4ZDdkMDkzZWE0YTBkOGIxMGU2YTMu
LmQ4OWMyM2FhOGY5N2Q1YjFiODgyNTJhNzA2MmRmNzk2MWE0YjVhZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTQzNCw2ICs0MzQsMTEgQEAgYm9vbCBDb250YWluZXJO
b2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAg
ICBkb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShjaGlsZC5nZXQoKSk7CiAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgZG9jdW1lbnQoKS0+cmVtb3ZlRnVsbFNj
cmVlbkVsZW1lbnRPZlN1YnRyZWUoY2hpbGQuZ2V0KCkpOworI2VuZGlmCisKKwogICAgIC8vIEV2
ZW50cyBmaXJlZCB3aGVuIGJsdXJyaW5nIGN1cnJlbnRseSBmb2N1c2VkIG5vZGUgbWlnaHQgaGF2
ZSBtb3ZlZCB0aGlzCiAgICAgLy8gY2hpbGQgaW50byBhIGRpZmZlcmVudCBwYXJlbnQuCiAgICAg
aWYgKGNoaWxkLT5wYXJlbnROb2RlKCkgIT0gdGhpcykgewpAQCAtNTI1LDYgKzUzMCwxMCBAQCB2
b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAvLyBleGNsdWRlIHRoaXMg
bm9kZSB3aGVuIGxvb2tpbmcgZm9yIHJlbW92ZWQgZm9jdXNlZE5vZGUgc2luY2Ugb25seSBjaGls
ZHJlbiB3aWxsIGJlIHJlbW92ZWQKICAgICBkb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9m
U3VidHJlZSh0aGlzLCB0cnVlKTsKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBk
b2N1bWVudCgpLT5yZW1vdmVGdWxsU2NyZWVuRWxlbWVudE9mU3VidHJlZSh0aGlzLCB0cnVlKTsK
KyNlbmRpZgorCiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogICAgIFZlY3RvcjxSZWZQdHI8
Tm9kZT4sIDEwPiByZW1vdmVkQ2hpbGRyZW47CiAgICAgcmVtb3ZlZENoaWxkcmVuLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoY2hpbGROb2RlQ291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA1ZjE4YWE5ZDQwZDIyMmVkMDJmYzMxZDgzZDViNDZhNzFjZTQwZTRiLi5lNTMwNjY4MjQ3
ZWUxNGM5OTE2N2FjMmYxOGFjNzVhMTI4MWZjMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTMzOTAsMjQgKzMzOTAsNiBAQCB2b2lkIERvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZChO
b2RlKiBuKQogICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm5vZGVXaWxsQmVSZW1vdmVkKG4p
OwogICAgICAgICBmcmFtZS0+cGFnZSgpLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPm5vZGVXaWxs
QmVSZW1vdmVkKG4pOwogICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgLy8gSWYgdGhlIGN1cnJlbnQgZnVsbCBzY3JlZW4gZWxlbWVudCBvciBhbnkgb2YgaXRzIGFu
Y2VzdG9ycyBpcyByZW1vdmVkLCBzZXQgdGhlIGN1cnJlbnQKLSAgICAvLyBmdWxsIHNjcmVlbiBl
bGVtZW50IHRvIHRoZSBkb2N1bWVudCByb290LCBhbmQgZmlyZSBhIGZ1bGxzY3JlZW5jaGFuZ2Ug
ZXZlbnQgdG8gaW5mb3JtIAotICAgIC8vIGNsaWVudHMgb2YgdGhlIERPTS4KLSAgICBBU1NFUlQo
bik7Ci0gICAgaWYgKG4tPmNvbnRhaW5zKG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpKSB7Ci0g
ICAgICAgIEFTU0VSVChuICE9IGRvY3VtZW50RWxlbWVudCgpKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKLSAgICAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRl
cmVyLT5yZW1vdmUoKTsKLQotICAgICAgICBzZXRGdWxsU2NyZWVuUmVuZGVyZXIoMCk7Ci0gICAg
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAgcmVj
YWxjU3R5bGUoRm9yY2UpOwotICAgICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBEb2N1bWVudDo6dGV4dElu
c2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAt
NDk2NCw2ICs0OTQ2LDM0IEBAIHZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRp
bWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1
ZSwgZmFsc2UpKTsKIH0KIAordm9pZCBEb2N1bWVudDo6ZnVsbFNjcmVlbkVsZW1lbnRSZW1vdmVk
KCkKK3sKKyAgICAvLyBJZiB0aGUgY3VycmVudCBmdWxsIHNjcmVlbiBlbGVtZW50IG9yIGFueSBv
ZiBpdHMgYW5jZXN0b3JzIGlzIHJlbW92ZWQsIHNldCB0aGUgY3VycmVudAorICAgIC8vIGZ1bGwg
c2NyZWVuIGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50IHJvb3QsIGFuZCBmaXJlIGEgZnVsbHNjcmVl
bmNoYW5nZSBldmVudCB0byBpbmZvcm0gCisgICAgLy8gY2xpZW50cyBvZiB0aGUgRE9NLgorICAg
IGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKKyAgICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXIt
PnJlbW92ZSgpOworICAgIAorICAgIHNldEZ1bGxTY3JlZW5SZW5kZXJlcigwKTsKKyAgICBtX2Z1
bGxTY3JlZW5FbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CisgICAgcmVjYWxjU3R5bGUoRm9y
Y2UpOworICAgIG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCit2b2lkIERvY3VtZW50OjpyZW1vdmVGdWxsU2NyZWVuRWxlbWVudE9mU3VidHJlZShOb2Rl
KiBub2RlLCBib29sIGFtb25nQ2hpbGRyZW5Pbmx5KQoreworICAgIGlmICghbV9mdWxsU2NyZWVu
RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGJvb2wgZWxlbWVudEluU3VidHJl
ZSA9IGZhbHNlOworICAgIGlmIChhbW9uZ0NoaWxkcmVuT25seSkKKyAgICAgICAgZWxlbWVudElu
U3VidHJlZSA9IG1fZnVsbFNjcmVlbkVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG5vZGUpOworICAg
IGVsc2UKKyAgICAgICAgZWxlbWVudEluU3VidHJlZSA9IChtX2Z1bGxTY3JlZW5FbGVtZW50ID09
IG5vZGUpIHx8IG1fZnVsbFNjcmVlbkVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG5vZGUpOworICAg
IAorICAgIGlmIChlbGVtZW50SW5TdWJ0cmVlKQorICAgICAgICBmdWxsU2NyZWVuRWxlbWVudFJl
bW92ZWQoKTsKK30KICNlbmRpZgogCiB2b2lkIERvY3VtZW50OjpkZWNyZW1lbnRMb2FkRXZlbnRE
ZWxheUNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMjMxNWU3OThhYjUwYzFlZTZhNDUx
MGMyNmIxZjhmMDNkZjJlZjcxYi4uOTY4ZjEwMTk0YmFkY2JlZGM4MTI5MmY0NWUwZmU4ZDc2YzU0
ODVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwNTgsNiArMTA1OCw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQoVGltZXI8RG9j
dW1lbnQ+Kik7CiAgICAgYm9vbCBmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxlbWVudChFbGVtZW50
KikgY29uc3Q7CisgICAgdm9pZCBmdWxsU2NyZWVuRWxlbWVudFJlbW92ZWQoKTsKKyAgICB2b2lk
IHJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVlKE5vZGUqLCBib29sIGFtb25nQ2hpbGRy
ZW5Pbmx5ID0gZmFsc2UpOwogI2VuZGlmCiAKICAgICAvLyBVc2VkIHRvIGFsbG93IGVsZW1lbnQg
dGhhdCBsb2FkcyBkYXRhIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBhIEZyYW1lTG9hZGVyIHRvIGRl
bGF5IHRoZSAnbG9hZCcgZXZlbnQuCg==
</data>
<flag name="review"
          id="85545"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>