<?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>36864</bug_id>
          
          <creation_ts>2010-03-30 17:05:41 -0700</creation_ts>
          <short_desc>Style update done due to mutation event dispatching in textarea can be used to corrupt the render tree</short_desc>
          <delta_ts>2024-11-07 21:42:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=281625</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37121</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>hyatt</cc>
    
    <cc>ian</cc>
    
    <cc>inferno</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbalazs</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206266</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-30 17:05:41 -0700</bug_when>
    <thetext>Mutation events and textarea can be used to corrupt the render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206280</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-30 17:20:26 -0700</bug_when>
    <thetext>This is not yet ready for review, but I wanted you guys to take a peek. The problem is in RenderTextControlMultiLine::updateFromElement(), because by using setInnerTextValue(), it may call ContainerNode::appendChild(), which in turn may dispatch child insertion events (DOMNodeInserted and/or DOMNodeInsertedIntoDocument).

Armed with this knowledge, we can create a sequence of event where dispatching this event triggers recalcStyle on the whole document, which in turn proceeds to detach/attach nodes in the tree, thus creating a re-entrantcy.

Adding a few ULs/LIs is just enough to get the renderer to attempt locating its common ancestor renderer and crash, realizing that it&apos;s an orphaned RenderObject (see test attached)...

The badness is obvious, but the fix isn&apos;t. My take is to explicitly silence child insertion events when attaching an HTMLFormControlElement, since it shouldn&apos;t fire mutation events here anyway.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206281</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-30 17:22:02 -0700</bug_when>
    <thetext>I think Hyatt said the fix for this sort of thing is to keep those events inside the shadow tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206283</commentid>
    <comment_count>3</comment_count>
      <attachid>52108</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-30 17:25:23 -0700</bug_when>
    <thetext>Created attachment 52108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206292</commentid>
    <comment_count>4</comment_count>
      <attachid>52108</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-30 17:47:29 -0700</bug_when>
    <thetext>Comment on attachment 52108
Patch

Maybe instead we should prevent these events from bubbling up outside the shadow tree. After all, it&apos;s not good to expose these shadow tree nodes to JavaScript code from the surrounding web page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206293</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-30 17:53:46 -0700</bug_when>
    <thetext>I think I&apos;m missing something. Don&apos;t we already avoid bubbling these events outside the shadow tree? I wrote a quick testcase http://bit.ly/9bJrHI. It creates a contentEditable div and below it a textarea and logs mutation events on the body to the console. I don&apos;t see mutationEvents fire from textareas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206294</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-30 17:54:42 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Adding a few ULs/LIs is just enough to get the renderer to attempt locating its
&gt; common ancestor renderer and crash, realizing that it&apos;s an orphaned
&gt; RenderObject (see test attached).

It&apos;s not attached!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206336</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-30 19:38:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think I&apos;m missing something. Don&apos;t we already avoid bubbling these events
&gt; outside the shadow tree? I wrote a quick testcase http://bit.ly/9bJrHI. It
&gt; creates a contentEditable div and below it a textarea and logs mutation events
&gt; on the body to the console. I don&apos;t see mutationEvents fire from textareas.

This is not about mutation events firing from textareas. It&apos;s about a side effect, which is dispatching mutation events while a textarea is being attached. Further badness is triggered by Document::updateStyleForAllDocuments(), which is invoked at the end of the dispatchGenericEvent. In the test above, the mutation event is actually empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206374</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-30 23:33:19 -0700</bug_when>
    <thetext>Looks like a regression, doesn&apos;t crash on Google Chrome stable channel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206386</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-31 00:25:22 -0700</bug_when>
    <thetext>This is the significant callstack:

WebCore::ContainerNode::queuePostAttachCallback()
WebCore::HTMLFormControlElement::recalcStyle()
WebCore::Element::recalcStyle()
WebCore::Element::recalcStyle()
WebCore::Element::recalcStyle()
WebCore::Element::recalcStyle()
WebCore::Document::recalcStyle()
WebCore::Document::updateStyleIfNeeded()
WebCore::Document::updateStyleForAllDocuments()
WebCore::Node::dispatchGenericEvent()
WebCore::Node::dispatchEvent()
WebCore::dispatchChildInsertionEvents()
WebCore::ContainerNode::appendChild()
WebCore::replaceChildrenWithText()
WebCore::HTMLElement::setInnerText()
WebCore::RenderTextControl::setInnerTextValue()
WebCore::RenderTextControlMultiLine::updateFromElement()
WebCore::HTMLFormControlElement::attach()
WebCore::ContainerNode::attach()
WebCore::Element::attach()
WebCore::V8Node::appendChildCallback()

The updateFromElement() call on the RenderTextControlMultiLine is causing a mutation event to fire.  This forces a call to Document::updateStyleForAllDocuments(), which enqueues the updateFromElementCallback.  This runs at the end of the style recalc and calls back in to updateFromElement() before running control to Element::attach().  Somehow this horks up the render tree, but I&apos;m not sure exactly how.  It made sense when Dimitri explained it :)

Crashing callstack:

WebCore::RenderBlock::addChild()
WebCore::Node::createRendererIfNeeded()
WebCore::Element::attach()
WebCore::HTMLLIElement::attach()
WebCore::ContainerNode::attach()
WebCore::Element::attach()
WebCore::ContainerNode::attach()
WebCore::Element::attach()
WebCore::V8Node::appendChildCallback()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206495</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-31 07:45:25 -0700</bug_when>
    <thetext>Sorry for being so tongue-tied yesterday -- was running out of the door :)

Yes, jamesr explained it better. I am surprised it&apos;s not crashing on Chrome stable. I&apos;ll look into that.

Overall, my question is: does the approach of silencing mutation events make sense?

Or should we instead come up with a side-effect-free way of appending a text node to the text area?

Or perhaps detect attachment re-entrancy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206577</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-31 10:46:58 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Overall, my question is: does the approach of silencing mutation events make
&gt; sense?

No, I think it&apos;s an oblique approach that makes it easy to reintroduce the problem later.

&gt; Or should we instead come up with a side-effect-free way of appending a text
&gt; node to the text area?
&gt;
&gt; Or perhaps detect attachment re-entrancy?

I think the place here to make changes is to look into refining the updateStyleForAllDocuments machinery. It does us no good in cases where the event is not something triggered from outside WebKit. There&apos;s no reason to update style at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206767</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-31 15:39:58 -0700</bug_when>
    <thetext>Here&apos;s a better explanation of why we crash on the line &quot;bar.appendChild(foo);&quot;:

When appendChild() is called, the div &apos;foo&apos; has three unattached DOM nodes and some Text nodes.  ContainerNode::attach() iterates through its children and attaches each one.  When the textarea is attached, there&apos;s a call made to renderer()-&gt;updateFromElement() (http://trac.webkit.org/browser/trunk/WebCore/html/HTMLFormControlElement.cpp#L131).  RenderTextControlMultiLine::updateFromElement() calls setInnerTextValue() to populate its text content.  This causes Text nodes to be appended as children of the element, which fires the DOM mutation events.

When the mutation event fires, there&apos;s a call made to Document::updateStyleForAllDocuments().  Since the className on bar (foo&apos;s parent) has changed since the last style resolution pass, styles are recalculated on it.  Since there are descendant selectors present in the page, all of bar&apos;s children are also marked for a style recalculation.  Text::recalcStyle() attaches if it is not currently attached, so all of the children of &apos;foo&apos; end up getting attached inside the updateStyle...() call.  When this eventually returns, ContainerNode::attach() keeps iterating through children and calling attach() on each child.  Unfortunately the children past the first one were already attached, so we end up attaching some nodes twice and orphaning RenderObjects.  From that point on it&apos;s just a matter of time before some codepath touches the wrong RenderObject and dies.

I really think we need to make recalcStyle() have no side effects other than updating the calculated styles on existing renderers.  This is a bit tricky to do since some nodes (forms and anything else with shadow DOMs, at least) rely on recalcStyle() and post attach callbacks to update the render tree in response to DOM mutations.  We currently have some really strange bugs due to the fact that Document::updateStyleForAllDocuments() has a bunch of other weird side effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206821</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-31 16:58:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; When the mutation event fires, there&apos;s a call made to
&gt; Document::updateStyleForAllDocuments().

I think this is what is unneeded. The high level reason we do this after events fire is we think we may be &quot;leaving WebKit&quot; at that point. There&apos;s no real reason that event dispatch is the bottleneck for this. Instead the bottleneck could be the level where the call comes into WebKit.

&gt; I really think we need to make recalcStyle() have no side effects other than
&gt; updating the calculated styles on existing renderers.

Sounds like a major project to me, and harder than what I&apos;m suggesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206869</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-31 18:24:24 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; When the mutation event fires, there&apos;s a call made to
&gt; &gt; Document::updateStyleForAllDocuments().
&gt; 
&gt; I think this is what is unneeded. The high level reason we do this after events
&gt; fire is we think we may be &quot;leaving WebKit&quot; at that point. There&apos;s no real
&gt; reason that event dispatch is the bottleneck for this. Instead the bottleneck
&gt; could be the level where the call comes into WebKit.

I&apos;m not sure why the &quot;leaving WebKit&quot; distinction matters.  Nothing that Document::updateStyleForAllDocuments() does should be observable outside of WebKit, it should be fine to return control to the embedder with the styles in any state.  I think the real problem is that updateStyles...() has side effects that are visible inside WebKit and to script so if we omit calls we sometimes get bugs.

For example, a number of layout tests currently run in the body&apos;s onload event handler.  If you change the tests to instead run in the DOMContentLoaded event (which fires before onload) then some layout tests (like fast/forms/select-change-popup-to-listbox.html) fail.  Why?  Because currently we fire DOMContentLoaded, which causes a call to Document::updateStyleForAllDocuments(), then we fire the onload event which calls the test code.

&gt; 
&gt; &gt; I really think we need to make recalcStyle() have no side effects other than
&gt; &gt; updating the calculated styles on existing renderers.
&gt; 
&gt; Sounds like a major project to me, and harder than what I&apos;m suggesting.

It is.  There is probably a simpler workaround for this crash, as well.  Since this is one of Chrome&apos;s top crashers (this structure shows up on Facebook), we should probably do something sooner rather than later even if it&apos;s not perfect.  I still think we have to address the root issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207300</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 12:12:03 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;m not sure why the &quot;leaving WebKit&quot; distinction matters.  Nothing that
&gt; Document::updateStyleForAllDocuments() does should be observable outside of
&gt; WebKit, it should be fine to return control to the embedder with the styles in
&gt; any state.

What matters is that if you return to the run loop without updating style, then visible changes won&apos;t happen until something “pokes” WebKit later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207307</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-01 12:19:36 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; I&apos;m not sure why the &quot;leaving WebKit&quot; distinction matters.  Nothing that
&gt; &gt; Document::updateStyleForAllDocuments() does should be observable outside of
&gt; &gt; WebKit, it should be fine to return control to the embedder with the styles in
&gt; &gt; any state.
&gt; 
&gt; What matters is that if you return to the run loop without updating style, then
&gt; visible changes won&apos;t happen until something “pokes” WebKit later.

If styles are out of date the document&apos;s m_styleRecalcTimer will be set (in theory anyway, if this is not true it&apos;s probably a bug).  When it fires, styles are resolved any any visible changes will cause a repaint to get scheduled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207309</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 12:22:25 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I think the real problem is that updateStyles...() has side effects
&gt; that are visible inside WebKit and to script so if we omit calls we sometimes
&gt; get bugs.

OK. I think we should start working on these, then. Maybe we can file individual bugs about each one we know about and mark them as blocking a bug that eliminates the updateStyleForAllDocuments call entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207481</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-01 16:39:19 -0700</bug_when>
    <thetext>It looks like the situation is better now than I remember (ggaren in particular has fixed some of these bugs).  Currently fast/forms/select-change-listbox-to-popup.html is the only layout test that fails and it only fails in pixel tests (the selection state is incorrect).  I think we should just nuke Document::updateStyleForAllDocuments() and file a bug to fix up listboxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207484</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 16:40:43 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I
&gt; think we should just nuke Document::updateStyleForAllDocuments() and file a bug
&gt; to fix up listboxes.

I would prefer that we fix the list box problem before nuking updateStyleForAllDocuments.

Also, do you have any ideas about flushing out any other problems that may be untested/unreported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207910</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-02 10:15:45 -0700</bug_when>
    <thetext>I am going to argue that we&apos;re not breaking the test -- we&apos;re fixing it. We aren&apos;t supposed to select items in the multi-line box by default. The selected state is an artifact of it being a listbox, and should probably not carry over if we changed it to menulist.

If anything, I need to ensure the same (default selection reset when switching over from listbox to menulist) happens outside of the onload event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207917</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-02 10:21:51 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I am going to argue that we&apos;re not breaking the test -- we&apos;re fixing it.

How do other browsers behave in this case?

Is there a relevant standard that comments on this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207927</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-02 10:31:09 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; I am going to argue that we&apos;re not breaking the test -- we&apos;re fixing it.
&gt; 
&gt; How do other browsers behave in this case?

I would&apos;ve thought of that! :) Well, they all preserve the selection, so never mind my awesome argument. Stupid other browsers.

&gt; Is there a relevant standard that comments on this case?

No, though http://dev.w3.org/html5/spec/forms.html#the-select-element is pretty through. We should ask Hixie to add the default-selection clause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207949</commentid>
    <comment_count>23</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-04-02 11:16:52 -0700</bug_when>
    <thetext>Unless I&apos;m misunderstanding, the spec:

   http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-select-element

...covers these cases in detail. Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207951</commentid>
    <comment_count>24</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-02 11:18:22 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Unless I&apos;m misunderstanding, the spec:
&gt; 
&gt;   
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-select-element
&gt; 
&gt; ...covers these cases in detail. Am I missing something?

... only #whatwg conversation I just had w/annevk who explained this to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208148</commentid>
    <comment_count>25</comment_count>
      <attachid>52467</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-02 16:46:36 -0700</bug_when>
    <thetext>Created attachment 52467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208163</commentid>
    <comment_count>26</comment_count>
      <attachid>52467</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 17:14:26 -0700</bug_when>
    <thetext>Comment on attachment 52467
Patch

Looks like a good approach, but I don&apos;t think it&apos;s quite right.

&gt; +        recalcListItemsIfNeeded();

Why do this unconditionally? Seems to me we only need to do it if the call to m_data.setSize is going to actually change the size.

Why do this before calling m_data.setSize? It seems too early? Why do it just before code that&apos;s going to call setRecalcListItems?

Could you explain more about exactly what good it does to recalculate the list at this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208174</commentid>
    <comment_count>27</comment_count>
      <attachid>52471</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-02 17:23:22 -0700</bug_when>
    <thetext>Created attachment 52471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208199</commentid>
    <comment_count>28</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-02 20:00:52 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Unless I&apos;m misunderstanding, the spec:
&gt; 
&gt;   
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-select-element
&gt; 
&gt; ...covers these cases in detail. Am I missing something?

The spec seems to be wrong about this case.  The relevant case for these tests is what the default selection behavior should be for select elements with different values for size without the multiple attribute set.  For example, with the following HTML:

&lt;select size=&quot;4&quot;&gt;
  &lt;option&gt;a
  &lt;option&gt;b
&lt;/select&gt;

which element (if any) should be selected?  The spec says: &quot;If the multiple attribute is absent, whenever there are no option elements in the select element&apos;s list of options that have their selectedness set to true, the user agent must set the selectedness of the first option element in the list of options in tree order that is not disabled, if any, to true.&quot; which would mean that the option &quot;a&quot; would be set to selected as soon as the select is created.  This is clearly a spec error and no browser actually behaves this way, instead the initial state of the select is that none of the available options are selected.

If the option&apos;s size attribute is 1 at creation then the first eligible element should be initially selected.  All browsers seem to properly do this.  The tricky case is when the size is changed to 1.  In this case, most browsers (IE/Opera) will set the first eligible option to selected (except for Firefox which goes into an apparently invalid state). fast/forms/select-change-popup-to-listbox-roundtrip.html covers changing the size from an initial value of 5 to 1 then back to 5.  Initially no elements are selected, then when the size changes to 1 the first element becomes selected and stays selected when the size changes back to 5.

The rationale for calling recalcListItemsIfNeeded() when the size is about to change (but before actually changing it) is that we have to be sure to calculate the selectedness of the element at its current size at least once.  I.e. if we create a select of size 1 and then change it to 5, we have to be sure to call recalcListItems() with a size of 1 to ensure that the first element is selected.  Currently we get this wrong: http://livedom.validator.nu/?%3C!DOCTYPE%20html%3E%0A%3Cbody%3E%0A%3Cselect%20size%3D%221%22%20id%3D%22foo%22%3E%0A%3Coption%3Ea%0A%3Coption%3Eb%0A%3C/select%3E%0A%3Cscript%3E%0Adocument.getElementById(%22foo%22).size%3D5;%0A%3C/script%3E%0A%3C/body%3E

It&apos;s probably safe to guard the recalcListItemsIfNeeded() call with a size != oldSize check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208333</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-03 23:07:56 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; The rationale for calling recalcListItemsIfNeeded() when the size is about to
&gt; change (but before actually changing it) is that we have to be sure to
&gt; calculate the selectedness of the element at its current size at least once. 

The code needs to say this. I think a comment is a good way. Or in theory we could write code that said this so clearly no comment would be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208504</commentid>
    <comment_count>30</comment_count>
      <attachid>52538</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-05 08:57:48 -0700</bug_when>
    <thetext>Created attachment 52538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208508</commentid>
    <comment_count>31</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-05 08:59:37 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; The rationale for calling recalcListItemsIfNeeded() when the size is about to
&gt; &gt; change (but before actually changing it) is that we have to be sure to
&gt; &gt; calculate the selectedness of the element at its current size at least once. 
&gt; 
&gt; The code needs to say this. I think a comment is a good way. Or in theory we
&gt; could write code that said this so clearly no comment would be necessary.

Added a comment for now. Will continue refining this code to eliminate necessity of the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208545</commentid>
    <comment_count>32</comment_count>
      <attachid>52538</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-05 10:27:27 -0700</bug_when>
    <thetext>Comment on attachment 52538
Patch

Clearing flags on attachment: 52538

Committed r57081: &lt;http://trac.webkit.org/changeset/57081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208546</commentid>
    <comment_count>33</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-05 10:27:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208626</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 12:11:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57081 might have broken Tiger Intel Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208794</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 16:46:36 -0700</bug_when>
    <thetext>This patch was rolled out in &lt;http://trac.webkit.org/changeset/57100&gt;.  Jamesr is investigating why this patched caused two tests to fail on Tiger and Qt.  Some discussion can be found in Bug 37121.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208833</commentid>
    <comment_count>36</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-05 18:33:15 -0700</bug_when>
    <thetext>This exposed a race condition due to the way we do object loads.  The test page has an &lt;embed&gt; and an &lt;object&gt; that both reference external resources.  The parser first sees the &lt;embed&gt; and starts its resource load.  The parser then sees the &lt;object&gt;.  A few things happen here:

1.) An HTMLObjectEmbed is created.  Since it is created by the parser, the m_needWidgetUpdate flag is initially false.
2.) HTMLObjectEmbed::parseMappedAttribute() is called on the &apos;data&apos; attribute.  Since the object is not yet attached, it has no renderer() and thus m_needWidgetUpdate remains false
3.) HTMLObjectEmbed::attach() is called from Element::attach().  This calls queuePostAttachCallback(&amp;HTMLPlugInElement::updateWidgetCallback, this).
4.) Element::attach() runs all post attach callbacks, including the one the HTMLObjectEmbed posted, which calls HTMLEmbedElement::updateWidget()
5.) Since m_needWidgetUpdate is still false, RenderEmbeddedObject::updateWidget is not yet called (see http://trac.webkit.org/browser/trunk/WebCore/html/HTMLEmbedElement.cpp#L181)
6.) The parser then calls HTMLObjectEmbed::finishParsingChildren() which sets m_needWidgetUpdate to true and calls setNeedsStyleRecalc() which starts the Document&apos;s m_styleRecalcTimer

At this point we have the race - the &lt;object&gt;&apos;s data will not start loading until its renderer&apos;s RenderEmbeddedObject::updateWidget() is called, but that will not happen until styles are resolved.  The Document::m_styleRecalcTimer may or may not run before the &lt;embed&gt;&apos;s resource load finishes.  If the &lt;embed&gt; load finishes first then it ends up calling through FrameLoader::checkCallImplicitClose() which notices that there are no pending resource loads and calls Document::implicitClose() which fires the load event.

Prior to r57081, the call to dispatchEvent() at http://trac.webkit.org/browser/trunk/WebCore/dom/Document.cpp#L4188 caused a call to Document::updateStyleForAllDocuments() which made sure the object&apos;s resource load was started before calling into FrameLoader::checkCallImplicitClose().  Even after r57081 it seems that the style recalc time almost always ran before the &lt;embed&gt;&apos;s resource load except for on the Qt port and the Tiger Release bot.

I&apos;m about to upload a patch that adds an explicit updateStyleIfNeeded() call to Document::finishedParsing() to make sure that all &lt;object&gt; resource loads get a chance to complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208835</commentid>
    <comment_count>37</comment_count>
      <attachid>52595</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-05 18:34:24 -0700</bug_when>
    <thetext>Created attachment 52595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208837</commentid>
    <comment_count>38</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-05 18:35:33 -0700</bug_when>
    <thetext>Note: The easiest way to reproduce the issue at r57081 is to up the time on Document::m_styleRecalcTimer from 0 seconds to something like 5 seconds.  This produces pretty reliable failures on Leopard and linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208838</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-05 18:36:40 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Note: The easiest way to reproduce the issue at r57081 is to up the time on
&gt; Document::m_styleRecalcTimer from 0 seconds to something like 5 seconds.  This
&gt; produces pretty reliable failures on Leopard and linux.

Maybe we should have a way to run tests in that mode under DumpRenderTree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208839</commentid>
    <comment_count>40</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-05 18:38:07 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; Note: The easiest way to reproduce the issue at r57081 is to up the time on
&gt; &gt; Document::m_styleRecalcTimer from 0 seconds to something like 5 seconds.  This
&gt; &gt; produces pretty reliable failures on Leopard and linux.
&gt; 
&gt; Maybe we should have a way to run tests in that mode under DumpRenderTree?

I am working on a few ideas on how to flush these races and incomplete recalcs out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208847</commentid>
    <comment_count>41</comment_count>
      <attachid>52595</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-05 18:53:17 -0700</bug_when>
    <thetext>Comment on attachment 52595
Patch

r=me the new parts. Assuming darin still blesses the old parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208868</commentid>
    <comment_count>42</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-05 20:09:07 -0700</bug_when>
    <thetext>Committed r57116: &lt;http://trac.webkit.org/changeset/57116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208869</commentid>
    <comment_count>43</comment_count>
      <attachid>52595</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 20:11:59 -0700</bug_when>
    <thetext>Comment on attachment 52595
Patch

Thanks for sorting this out jamesr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208870</commentid>
    <comment_count>44</comment_count>
      <attachid>52595</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 20:12:50 -0700</bug_when>
    <thetext>Comment on attachment 52595
Patch

Looks like this was already landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208871</commentid>
    <comment_count>45</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-05 20:14:01 -0700</bug_when>
    <thetext>Yeah, it&apos;s odd that webkit-patch didn&apos;t clear out the flags on the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208879</commentid>
    <comment_count>46</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-05 20:45:16 -0700</bug_when>
    <thetext>&gt; Yeah, it&apos;s odd that webkit-patch didn&apos;t clear out the flags on the patch.

I can&apos;t wait until it actually stops clearing r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208883</commentid>
    <comment_count>47</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 20:56:11 -0700</bug_when>
    <thetext>&gt; I can&apos;t wait until it actually stops clearing r+.

It does that so the patches don&apos;t show up in pending-commit if the bugs are reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642486</commentid>
    <comment_count>48</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-06 08:15:25 -0700</bug_when>
    <thetext>Seems like we have a failure on Qt because of the approach of calling updateStyleIfNeeded in finishedParsing: https://bugs.webkit.org/show_bug.cgi?id=71906. In this case we are loading the plugin twice, first from updateStyleIfNeeded than from finishedParsing. Do you have an idea how to fix it properly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642531</commentid>
    <comment_count>49</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-06 09:19:39 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Seems like we have a failure on Qt because of the approach of calling updateStyleIfNeeded in finishedParsing: https://bugs.webkit.org/show_bug.cgi?id=71906. In this case we are loading the plugin twice, first from updateStyleIfNeeded than from finishedParsing. Do you have an idea how to fix it properly?

I think it&apos;s shown on Qt because the test plugin is broken currently, otherwise the first load would be forbidden by this in HTMLObject::updateWidget:
if (pluginCreationOption == CreateOnlyNonNetscapePlugins &amp;&amp; wouldLoadAsNetscapePlugin(url, serviceType)) {
    // Ensure updateWidget() is called again during layout to create the Netscape plug-in.
    setNeedsWidgetUpdate(true);
    return;
}

But it&apos;s still a bug that we try to load that thing twice. However, I guess we won&apos;t do it if it were not blocked, so it&apos;s not a very dangerous bug, but still not the perfect behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653432</commentid>
    <comment_count>50</comment_count>
      <attachid>52595</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-20 07:04:26 -0700</bug_when>
    <thetext>Comment on attachment 52595
Patch

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

&gt; WebCore/dom/Document.cpp:4201
&gt; +        // FrameLoader::finishedParsing() might end up calling Document::implicitClose() if all
&gt; +        // resource loads are complete. HTMLObjectElements can start loading their resources from
&gt; +        // post attach callbacks triggered by recalcStyle().  This means if we parse out an &lt;object&gt;
&gt; +        // tag and then reach the end of the document without updating styles, we might not have yet
&gt; +        // started the resource load and might fire the window load event too early.  To avoid this
&gt; +        // we force the styles to be up to date before calling FrameLoader::finishedParsing().
&gt; +        // See https://bugs.webkit.org/show_bug.cgi?id=36864 starting around comment 35.
&gt; +        updateStyleIfNeeded();

Ugh.  We really want to get rid of this once we fix frames/plugins to not load from the rendering tree.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52108</attachid>
            <date>2010-03-30 17:25:23 -0700</date>
            <delta_ts>2010-04-02 16:46:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36864-20100330172520.patch</filename>
            <type>text/plain</type>
            <size>9577</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNThhOWZjLi5kNGNiZWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDMt
MzAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXRhdGlvbiBldmVudHMgYW5k
IHRleHRhcmVhIGNhbiBiZSB1c2VkIHRvIGNvcnJ1cHQgdGhlIHJlbmRlciB0cmVlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY4NjQKKworICAgICAg
ICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtYW5kLW11dGF0aW9uLWV2ZW50cy5odG1sOiBBZGRlZC4K
KwogMjAxMC0wMy0yNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCBhbm90aGVyIGF0dGVtcHQgdG8gdW5ibG9jayBDaHJvbWl1bSBXaW4g
dGVzdCBib3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWFu
ZC1tdXRhdGlvbi1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
YW5kLW11dGF0aW9uLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjU2NmM5MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Rl
eHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8aHRtbD4N
Cis8aGVhZD4NCis8c3R5bGU+DQorDQorICAgIGh0bWwgYm9keSB7IH0NCisNCis8L3N0eWxlPg0K
KzxzY3JpcHQ+DQorDQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorDQorICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKQ0KKyAgICB7DQorICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVu
ZXIoIkRPTU5vZGVJbnNlcnRlZCIsIGZ1bmN0aW9uKCkgeyB9LCBmYWxzZSk7DQorICAgICAgICB2
YXIgZm9vID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvbyIpOw0KKyAgICAgICAgdmFyIGJh
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYXIiKTsNCisgICAgICAgIGJhci5jbGFzc05h
bWUgPSAiICI7DQorICAgICAgICBiYXIuYXBwZW5kQ2hpbGQoZm9vKTsNCisgICAgICAgIC8vIFRl
c3QgY29tcGxldGUuIElmIGRpZG4ndCBjcmFzaCBhdCB0aGlzIHBvaW50LCBjbGVhbiB1cC4NCisg
ICAgICAgIGJhci5yZW1vdmVDaGlsZChmb28pOw0KKyAgICB9DQorDQorPC9zY3JpcHQ+DQorPC9o
ZWFkPg0KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4NCisgICAgPHA+VGVzdHMgdG8gc2VlIGlm
IHJlZ2lzdGVyaW5nIGFuIGVtcHR5IERPTU5vZGVJbnNlcnRlZCBldmVudCBoYW5kbGVyIGFuZCBk
aXJ0eWluZyB0aGUgdHJlZSBqdXN0IHJpZ2h0IGNhbiBjYXVzZSBhdHRhY2ggcmUtZW50cmFuY3kg
d2l0aCB0ZXh0YXJlYS4NCisgICAgPHA+UGFzc2VzIGlmIGRvZXNuJ3QgY3Jhc2guDQorICAgIDxk
aXYgaWQ9ImZvbyI+DQorICAgICAgICA8dGV4dGFyZWE+IDwvdGV4dGFyZWE+DQorICAgICAgICA8
dWw+PGxpPjxsaT48L3VsPg0KKyAgICAgICAgPGlmcmFtZT48L2lmcmFtZT4NCisgICAgPC9kaXY+
DQorICAgIDxkaXYgaWQ9ImJhciI+PC9kaXY+DQorPC9ib2R5Pg0KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGVhM2EzZDQuLmM0ZTdlODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAt
MDMtMzAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXRhdGlvbiBldmVudHMg
YW5kIHRleHRhcmVhIGNhbiBiZSB1c2VkIHRvIGNvcnJ1cHQgdGhlIHJlbmRlciB0cmVlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY4NjQKKworICAg
ICAgICBUZXN0OiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbAor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMpOgorICAg
ICAgICAqIGRvbS9FdmVudERpc3BhdGNoU2lsZW5jZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50RGlzcGF0Y2hTaWxlbmNlcjo6RXZlbnREaXNwYXRjaFNpbGVuY2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hTaWxlbmNlcjo6fkV2ZW50RGlzcGF0Y2hTaWxl
bmNlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoU2lsZW5jZXI6OnNpbGVuY2Vz
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaFNpbGVuY2VyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKToKKwog
MjAxMC0wMy0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDk3NDZiNDYuLjI0ZDFhMjEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTA4
LDYgKzExMDgsOCBAQAogICAgICAgICAgICAgJ2RvbS9FcnJvckV2ZW50LmgnLAogICAgICAgICAg
ICAgJ2RvbS9FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudC5oJywKKyAgICAgICAg
ICAgICdkb20vRXZlbnREaXNwYXRjaFNpbGVuY2VyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0V2
ZW50RGlzcGF0Y2hTaWxlbmNlci5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRFeGNlcHRpb24u
aCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50TGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAnZG9t
L0V2ZW50TmFtZXMuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZmIyODUyZi4uZTM4NjY2
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDYWNo
ZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hTaWxlbmNlci5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC05MjEsNiArOTIyLDkgQEAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlKiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWV2
ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAKKyAgICBpZiAoRXZlbnREaXNwYXRjaFNpbGVuY2Vy
OjpzaWxlbmNlcyhDaGlsZEluc2VydGlvbkV2ZW50cykpCisgICAgICAgIHJldHVybjsKKwogICAg
IFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9
IGNoaWxkLT5kb2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudERpc3Bh
dGNoU2lsZW5jZXIuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaFNpbGVuY2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjMzYjk3Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaFNpbGVuY2VyLmNwcApAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hTaWxlbmNlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbnQgZ0V2ZW50RGlzcGF0Y2hNdXRl
ZCA9IDA7CisKK0V2ZW50RGlzcGF0Y2hTaWxlbmNlcjo6RXZlbnREaXNwYXRjaFNpbGVuY2VyKEV2
ZW50RGlzcGF0Y2hUeXBlKQoreworICAgIGdFdmVudERpc3BhdGNoTXV0ZWQrKzsKK30KKworRXZl
bnREaXNwYXRjaFNpbGVuY2VyOjp+RXZlbnREaXNwYXRjaFNpbGVuY2VyKCkKK3sKKyAgICBnRXZl
bnREaXNwYXRjaE11dGVkLS07Cit9CisKK2Jvb2wgRXZlbnREaXNwYXRjaFNpbGVuY2VyOjpzaWxl
bmNlcyhFdmVudERpc3BhdGNoVHlwZSkKK3sKKyAgICByZXR1cm4gZ0V2ZW50RGlzcGF0Y2hNdXRl
ZCA+IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hTaWxlbmNlci5oIGIvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaFNp
bGVuY2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI5OGYyNAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hTaWxlbmNlci5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEV2ZW50RGlzcGF0Y2hTaWxlbmNlcl9oCisjZGVmaW5lIEV2ZW50
RGlzcGF0Y2hTaWxlbmNlcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBFdmVudERp
c3BhdGNoVHlwZSB7IENoaWxkSW5zZXJ0aW9uRXZlbnRzIH07CisKKy8vIEN1cnJlbnRseSwgdGhp
cyBpcyBhIHNpbXBsZSBhbGwtb3Itbm90aGluZyBzaWxlbmNlci4KKy8vIEZJWE1FOiBJbXBsZW1l
bnQgaGFuZGxpbmcgb2YgbXVsdGlwbGUgRXZlbnREaXNwYXRjaFR5cGUgdmFsdWVzLgorY2xhc3Mg
RXZlbnREaXNwYXRjaFNpbGVuY2VyIHsKK3B1YmxpYzoKKyAgICBFdmVudERpc3BhdGNoU2lsZW5j
ZXIoRXZlbnREaXNwYXRjaFR5cGUgdHlwZSk7CisgICAgfkV2ZW50RGlzcGF0Y2hTaWxlbmNlcigp
OworICAgIHN0YXRpYyBib29sIHNsaWVuY2VzKEV2ZW50RGlzcGF0Y2hUeXBlIHR5cGUpOworfTsK
KworfQorCisjZW5kaWYgLy8gRXZlbnREaXNwYXRjaFNpbGVuY2VyX2gKKwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGM4MGZiMzYuLjliNzVlNGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnREaXNwYXRjaFNpbGVuY2VyLmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CkBAIC0xMzEsOSArMTMyLDExIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNo
KCkKICAgICAvLyBUaGUgY2FsbCB0byB1cGRhdGVGcm9tRWxlbWVudCgpIG5lZWRzIHRvIGdvIGFm
dGVyIHRoZSBjYWxsIHRocm91Z2gKICAgICAvLyB0byB0aGUgYmFzZSBjbGFzcydzIGF0dGFjaCgp
IGJlY2F1c2UgdGhhdCBjYW4gc29tZXRpbWVzIGRvIGEgY2xvc2UKICAgICAvLyBvbiB0aGUgcmVu
ZGVyZXIuCi0gICAgaWYgKHJlbmRlcmVyKCkpCisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAg
ICAgRXZlbnREaXNwYXRjaFNpbGVuY2VyIHNpbGVuY2VyKENoaWxkSW5zZXJ0aW9uRXZlbnRzKTsK
ICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgCisgICAg
fQorCiAgICAgLy8gRm9jdXMgdGhlIGVsZW1lbnQgaWYgaXQgc2hvdWxkIGhvbm91ciBpdHMgYXV0
b2ZvY3VzIGF0dHJpYnV0ZS4KICAgICAvLyBXZSBoYXZlIHRvIGRldGVybWluZSBpZiB0aGUgZWxl
bWVudCBpcyBhIFRleHRBcmVhL0lucHV0L0J1dHRvbi9TZWxlY3QsCiAgICAgLy8gaWYgaW5wdXQg
dHlwZSBoaWRkZW4gaWdub3JlIGF1dG9mb2N1cy4gU28gaWYgZGlzYWJsZWQgb3IgcmVhZG9ubHku
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52467</attachid>
            <date>2010-04-02 16:46:36 -0700</date>
            <delta_ts>2010-04-02 17:23:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36864-20100402164631.patch</filename>
            <type>text/plain</type>
            <size>9115</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMDEyNDU4Li5hODBjMmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQt
MDIgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSB1cGRhdGUgZG9uZSBk
dWUgdG8gbXV0YXRpb24gZXZlbnQgZGlzcGF0Y2hpbmcgaW4gdGV4dGFyZWEgY2FuIGJlCisgICAg
ICAgIHVzZWQgdG8gY29ycnVwdCB0aGUgcmVuZGVyIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjg2NAorCisgICAgICAgIE1vZGlmaWVkIGxp
c3Rib3gtc2VsZWN0aW9uLmh0bWwgdG8gY29ycmVjdGx5IHNldCB0aGUgc2l6ZSBkdXJpbmcKKyAg
ICAgICAgY3JlYXRpb24uIE90aGVyd2lzZSwgb3B0aW9ucyBhZGRlZCB0byBpdCBhcyBhIG1lbnVM
aXN0LCByZXN1bHRpbmcKKyAgICAgICAgaW4gYSBkZWZhdWx0IHNlbGVjdGlvbiBvZiB0aGUgZmly
c3QgaXRlbS4KKworICAgICAgICBBZGRlZCBhIGZldyBtb3JlIHRlc3RzIHRvIGVuc3VyZSB3ZSBj
YXB0dXJlIGNvcnJlY3QgYmVoYXZpb3IgZm9yCisgICAgICAgIHNlbGVjdCBlbGVtZW50cyBhbmQg
dGhlaXIgZGVmYXVsdCBzZWxlY3Rpb24sIGFzIHdlbGwgYXMgdGhlIGluZmx1ZW5jZQorICAgICAg
ICBvZiB3aGVuIGxheW91dCBvY2N1cnMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xpc3Rib3gt
c2VsZWN0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Ri
b3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
c2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDQtMDEgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQuIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbGlzdGJveC1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
bGlzdGJveC1zZWxlY3Rpb24uaHRtbAppbmRleCAyMDBlZjgzLi40MDM3NzA3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2VsZWN0aW9uLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXNlbGVjdGlvbi5odG1sCkBAIC0xNTAsMTUgKzE1
MCwxNSBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBzbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwogICAgICAgICAgICAgICAgIHZhciBpID0gMDsKKyAg
ICAgICAgICAgICAgICBzbC5zaXplID0gc3o7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBz
eikgewogICAgICAgICAgICAgICAgICAgICB2YXIgb3B0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgib3B0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IHNlbEluZGV4KQogICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0LnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgb3B0LmlubmVyVGV4dCA9ICJpdGVtICIgKyBpOworICAgICAgICAgICAgICAgICAgICBv
cHQudGV4dENvbnRlbnQgPSAiaXRlbSAiICsgaTsKICAgICAgICAgICAgICAgICAgICAgc2wuYXBw
ZW5kQ2hpbGQob3B0KTsKICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBzbC5zaXplID0gc3o7CiAgICAgICAgICAgICAgICAgc2wubXVs
dGlwbGUgPSBtbHQ7CiAgICAgICAgICAgICAgICAgc2wuaWQgPSBpZE5hbWU7CiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10by1wb3B1cC1yb3VuZHRyaXAu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1saXN0Ym94LXRvLXBv
cHVwLXJvdW5kdHJpcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRl
NTExNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1j
aGFuZ2UtbGlzdGJveC10by1wb3B1cC1yb3VuZHRyaXAuaHRtbApAQCAtMCwwICsxLDUyIEBACis8
aHRtbD4NCis8c2NyaXB0Pg0KKw0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsN
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorfQ0KKw0KK2Z1bmN0aW9uIHJ1blRlc3QoKQ0K
K3sNCisgICAgdmFyIHMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMxIik7DQorICAgIHMx
LnNpemUgPSA1Ow0KKyAgICBzMS5zaXplID0gMTsNCisNCisgICAgdmFyIHMyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInMyIik7DQorICAgIHMyLnNpemUgPSA1Ow0KKyAgICAvLyBmb3JjZSBs
YXlvdXQuDQorICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOw0KKyAgICBzMi5zaXplID0gMTsN
CisgICAgDQorICAgIHZhciBzMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzMyIpOw0KKyAg
ICBzMy5zaXplID0gNTsNCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpDQorICAgIHsNCisgICAg
ICAgIHMzLnNpemUgPSAxOw0KKyAgICAgICAgcmVwb3J0UmVzdWx0cygpOw0KKyAgICB9LCAwKTsN
Cit9DQorDQorZnVuY3Rpb24gcmVwb3J0UmVzdWx0cygpDQorew0KKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOw0KKw0KKyAgICB2YXIgc2VsZWN0ZWQxID0gczEuc2VsZWN0ZWRJbmRleDsNCisgICAg
dmFyIHNlbGVjdGVkMiA9IHMyLnNlbGVjdGVkSW5kZXg7DQorICAgIHZhciBzZWxlY3RlZDMgPSBz
My5zZWxlY3RlZEluZGV4Ow0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmlu
bmVySFRNTCA9ICI8dWw+IiArDQorICAgICAgICAiPGxpPkNoYW5naW5nIHRoZSBzaXplIG9mIGEg
c2VsZWN0IGVsZW1lbnQgZnJvbSAxIHRvIDUgYW5kIGJhY2sgMSBzaG91bGQgYWNxdWlyZSBzZWxl
Y3Rpb24gb2YgdGhlIGZpcnN0IGl0ZW06ICIgKyAoc2VsZWN0ZWQxID09IDAgPyAiUEFTUyIgOiAi
RkFJTCIpICsNCisgICAgICAgICI8bGk+Rm9yY2luZyBsYXlvdXQgc2hvdWxkIG5vdCBhZmZlY3Qg
dGhlIG91dGNvbWU6ICIgKyAoc2VsZWN0ZWQyID09IHNlbGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlM
IikgKw0KKyAgICAgICAgIjxsaT5BbmQgbmVpdGhlciBzaG91bGQgZHJvcHBpbmcgb3V0IG9mIHRo
ZSBtZXNzYWdlIGxvb3A6ICIgKyAoc2VsZWN0ZWQzID09IHNlbGVjdGVkMSA/ICJQQVNTIiA6ICJG
QUlMIikgKw0KKyAgICAgICAgIjwvdWw+IjsNCit9DQorDQorPC9zY3JpcHQ+DQorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPg0KKyAgICA8ZGl2IGlkPSJ0ZXN0Ij4NCisgICAgICAgIDxzZWxlY3Qg
aWQ9InMxIiBzaXplPSIxIj48b3B0aW9uPnRlc3Q8L3NlbGVjdD4NCisgICAgICAgIDxzZWxlY3Qg
aWQ9InMyIiBzaXplPSIxIj48b3B0aW9uPnRlc3Q8L3NlbGVjdD4NCisgICAgICAgIDxzZWxlY3Qg
aWQ9InMzIiBzaXplPSIxIj48b3B0aW9uPnRlc3Q8L3NlbGVjdD4NCisgICAgPC9kaXY+DQorPC9i
b2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Rib3gt
cm91bmR0cmlwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE1Yjgx
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5n
ZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1s
Pg0KKzxzY3JpcHQ+DQorDQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCit9DQorDQorZnVuY3Rpb24gcnVuVGVzdCgpDQorew0K
KyAgICB2YXIgczEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczEiKTsNCisgICAgczEuc2l6
ZSA9IDE7DQorICAgIHMxLnNpemUgPSA1Ow0KKw0KKyAgICB2YXIgczIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiczIiKTsNCisgICAgczIuc2l6ZSA9IDE7DQorICAgIC8vIGZvcmNlIGxheW91
dC4NCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7DQorICAgIHMyLnNpemUgPSA1Ow0KKyAg
ICANCisgICAgdmFyIHMzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMzIik7DQorICAgIHMz
LnNpemUgPSAxOw0KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkNCisgICAgew0KKyAgICAgICAg
czMuc2l6ZSA9IDU7DQorICAgICAgICByZXBvcnRSZXN1bHRzKCk7DQorICAgIH0sIDApOw0KK30N
CisNCitmdW5jdGlvbiByZXBvcnRSZXN1bHRzKCkNCit7DQorICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpDQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7DQorDQorICAgIHZhciBzZWxlY3RlZDEgPSBzMS5zZWxlY3RlZEluZGV4Ow0KKyAgICB2YXIg
c2VsZWN0ZWQyID0gczIuc2VsZWN0ZWRJbmRleDsNCisgICAgdmFyIHNlbGVjdGVkMyA9IHMzLnNl
bGVjdGVkSW5kZXg7DQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJI
VE1MID0gIjx1bD4iICsNCisgICAgICAgICI8bGk+Q2hhbmdpbmcgdGhlIHNpemUgb2YgYSBzZWxl
Y3QgZWxlbWVudCBmcm9tIDUgdG8gMSBhbmQgYmFjayA1IHNob3VsZCBhY3F1aXJlIHNlbGVjdGlv
biBvZiB0aGUgZmlyc3QgaXRlbTogIiArIChzZWxlY3RlZDEgPT0gMCA/ICJQQVNTIiA6ICJGQUlM
IikgKw0KKyAgICAgICAgIjxsaT5Gb3JjaW5nIGxheW91dCBzaG91bGQgbm90IGFmZmVjdCB0aGUg
b3V0Y29tZTogIiArIChzZWxlY3RlZDIgPT0gc2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwiKSAr
DQorICAgICAgICAiPGxpPkFuZCBuZWl0aGVyIHNob3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1l
c3NhZ2UgbG9vcDogIiArIChzZWxlY3RlZDMgPT0gc2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwi
KSArDQorICAgICAgICAiPC91bD4iOw0KK30NCisNCis8L3NjcmlwdD4NCis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+DQorICAgIDxkaXYgaWQ9InRlc3QiPg0KKyAgICAgICAgPHNlbGVjdCBpZD0i
czEiIHNpemU9IjUiPjxvcHRpb24+dGVzdDwvc2VsZWN0Pg0KKyAgICAgICAgPHNlbGVjdCBpZD0i
czIiIHNpemU9IjUiPjxvcHRpb24+dGVzdDwvc2VsZWN0Pg0KKyAgICAgICAgPHNlbGVjdCBpZD0i
czMiIHNpemU9IjUiPjxvcHRpb24+dGVzdDwvc2VsZWN0Pg0KKyAgICA8L2Rpdj4NCis8L2JvZHk+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjZjOTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwKQEAgLTAs
MCArMSwzNiBAQAorPGh0bWw+DQorPGhlYWQ+DQorPHN0eWxlPg0KKw0KKyAgICBodG1sIGJvZHkg
eyB9DQorDQorPC9zdHlsZT4NCis8c2NyaXB0Pg0KKw0KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQ0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
Ow0KKw0KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkNCisgICAgew0KKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCBmdW5jdGlvbigpIHsgfSwg
ZmFsc2UpOw0KKyAgICAgICAgdmFyIGZvbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb28i
KTsNCisgICAgICAgIHZhciBiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmFyIik7DQor
ICAgICAgICBiYXIuY2xhc3NOYW1lID0gIiAiOw0KKyAgICAgICAgYmFyLmFwcGVuZENoaWxkKGZv
byk7DQorICAgICAgICAvLyBUZXN0IGNvbXBsZXRlLiBJZiBkaWRuJ3QgY3Jhc2ggYXQgdGhpcyBw
b2ludCwgY2xlYW4gdXAuDQorICAgICAgICBiYXIucmVtb3ZlQ2hpbGQoZm9vKTsNCisgICAgfQ0K
Kw0KKzwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+DQorICAg
IDxwPlRlc3RzIHRvIHNlZSBpZiByZWdpc3RlcmluZyBhbiBlbXB0eSBET01Ob2RlSW5zZXJ0ZWQg
ZXZlbnQgaGFuZGxlciBhbmQgZGlydHlpbmcgdGhlIHRyZWUganVzdCByaWdodCBjYW4gY2F1c2Ug
YXR0YWNoIHJlLWVudHJhbmN5IHdpdGggdGV4dGFyZWEuDQorICAgIDxwPlBhc3NlcyBpZiBkb2Vz
bid0IGNyYXNoLg0KKyAgICA8ZGl2IGlkPSJmb28iPg0KKyAgICAgICAgPHRleHRhcmVhPiA8L3Rl
eHRhcmVhPg0KKyAgICAgICAgPHVsPjxsaT48bGk+PC91bD4NCisgICAgICAgIDxpZnJhbWU+PC9p
ZnJhbWU+DQorICAgIDwvZGl2Pg0KKyAgICA8ZGl2IGlkPSJiYXIiPjwvZGl2Pg0KKzwvYm9keT4N
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OTM2YzUzLi5jOGJiY2EyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDEwLTA0LTAyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU3R5bGUgdXBkYXRlIGRvbmUgZHVlIHRvIG11dGF0aW9uIGV2ZW50IGRpc3BhdGNoaW5nIGlu
IHRleHRhcmVhIGNhbiBiZQorICAgICAgICB1c2VkIHRvIGNvcnJ1cHQgdGhlIHJlbmRlciB0cmVl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY4NjQK
KworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9w
dXAtcm91bmR0cmlwLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc2VsZWN0LWNoYW5n
ZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbAorCisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOiBS
ZW1vdmVkIGludm9jYXRpb24gb2YKKyAgICAgICAgICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZv
ckFsbERvY3VtZW50cworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTog
QWRkZWQgZXhwbGljaXQKKyAgICAgICAgICAgIHJlY2FsYyB0byBlbnN1cmUgYWNjdXJhY3kgb2Yg
cmVwcmVzZW50YXRpb24sIGVzcGVjaWFsbHkgZm9yCisgICAgICAgICAgICBtZW51TGlzdC9saXN0
Qm94IHN3aXRjaGVzLgorCiAyMDEwLTA0LTAxICBWaXRhbHkgUmVwZXNoa28gIDx2aXRhbHlyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUy
YWFlZWQuLjc4ZTNiMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNzAxLDggKzI3MDEsNiBAQCBkb25lV2l0aERlZmF1bHQ6
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKICNlbmRpZgogCi0g
ICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7Ci0KICAgICByZXR1cm4g
IWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCmluZGV4IDI5YzViMzcuLjQ3MWM5NzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cApAQCAtMjAxLDYgKzIwMSw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKGF0dHJTaXplICE9
IGF0dHItPnZhbHVlKCkpCiAgICAgICAgICAgICBhdHRyLT5zZXRWYWx1ZShhdHRyU2l6ZSk7CiAK
KyAgICAgICAgcmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKKwogICAgICAgICBtX2RhdGEuc2V0
U2l6ZShtYXgoc2l6ZSwgMSkpOwogICAgICAgICBpZiAoKG9sZFVzZXNNZW51TGlzdCAhPSBtX2Rh
dGEudXNlc01lbnVMaXN0KCkgfHwgKCFvbGRVc2VzTWVudUxpc3QgJiYgbV9kYXRhLnNpemUoKSAh
PSBvbGRTaXplKSkgJiYgYXR0YWNoZWQoKSkgewogICAgICAgICAgICAgZGV0YWNoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52471</attachid>
            <date>2010-04-02 17:23:22 -0700</date>
            <delta_ts>2010-04-05 08:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36864-20100402172321.patch</filename>
            <type>text/plain</type>
            <size>10555</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNzkzYjA2Li45N2NiZGM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQt
MDIgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSB1cGRhdGUgZG9uZSBk
dWUgdG8gbXV0YXRpb24gZXZlbnQgZGlzcGF0Y2hpbmcgaW4gdGV4dGFyZWEgY2FuIGJlCisgICAg
ICAgIHVzZWQgdG8gY29ycnVwdCB0aGUgcmVuZGVyIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjg2NAorCisgICAgICAgIE1vZGlmaWVkIGxp
c3Rib3gtc2VsZWN0aW9uLmh0bWwgdG8gY29ycmVjdGx5IHNldCB0aGUgc2l6ZSBkdXJpbmcKKyAg
ICAgICAgY3JlYXRpb24uIE90aGVyd2lzZSwgb3B0aW9ucyBhZGRlZCB0byBpdCBhcyBhIG1lbnVM
aXN0LCByZXN1bHRpbmcKKyAgICAgICAgaW4gYSBkZWZhdWx0IHNlbGVjdGlvbiBvZiB0aGUgZmly
c3QgaXRlbS4KKworICAgICAgICBBZGRlZCBhIGZldyBtb3JlIHRlc3RzIHRvIGVuc3VyZSB3ZSBj
YXB0dXJlIGNvcnJlY3QgYmVoYXZpb3IgZm9yCisgICAgICAgIHNlbGVjdCBlbGVtZW50cyBhbmQg
dGhlaXIgZGVmYXVsdCBzZWxlY3Rpb24sIGFzIHdlbGwgYXMgdGhlIGluZmx1ZW5jZQorICAgICAg
ICBvZiB3aGVuIGxheW91dCBvY2N1cnMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xpc3Rib3gt
c2VsZWN0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Ri
b3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
c2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDQtMDIgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24gYW5kIEVyaWMgU2VpZGVsLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXNlbGVjdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXNlbGVjdGlvbi5odG1sCmluZGV4IDIw
MGVmODMuLjQwMzc3MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJv
eC1zZWxlY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2Vs
ZWN0aW9uLmh0bWwKQEAgLTE1MCwxNSArMTUwLDE1IEBACiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgdmFyIHNsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAg
ICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgICAgIHNsLnNpemUgPSBzejsKICAg
ICAgICAgICAgICAgICB3aGlsZSAoaSA8IHN6KSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBv
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPT0gc2VsSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHQuc2VsZWN0
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBvcHQuaW5uZXJUZXh0ID0gIml0ZW0gIiAr
IGk7CisgICAgICAgICAgICAgICAgICAgIG9wdC50ZXh0Q29udGVudCA9ICJpdGVtICIgKyBpOwog
ICAgICAgICAgICAgICAgICAgICBzbC5hcHBlbmRDaGlsZChvcHQpOwogICAgICAgICAgICAgICAg
ICAgICBpKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNsLnNpemUgPSBz
ejsKICAgICAgICAgICAgICAgICBzbC5tdWx0aXBsZSA9IG1sdDsKICAgICAgICAgICAgICAgICBz
bC5pZCA9IGlkTmFtZTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHNsKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1s
aXN0Ym94LXRvLXBvcHVwLXJvdW5kdHJpcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10by1wb3B1cC1yb3VuZHRyaXAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMTNiOTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10
by1wb3B1cC1yb3VuZHRyaXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ2hhbmdpbmcg
dGhlIHNpemUgb2YgYSBzZWxlY3QgZWxlbWVudCBmcm9tIDEgdG8gNSBhbmQgYmFjayAxIHNob3Vs
ZCBhY3F1aXJlIHNlbGVjdGlvbiBvZiB0aGUgZmlyc3QgaXRlbTogUEFTUworRm9yY2luZyBsYXlv
dXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG91dGNvbWU6IFBBU1MKK0FuZCBuZWl0aGVyIHNob3Vs
ZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2UgbG9vcDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0
cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10
by1wb3B1cC1yb3VuZHRyaXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NjQ5Mzc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgdmFyIHMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMxIik7CisgICAgczEuc2l6ZSA9
IDU7CisgICAgczEuc2l6ZSA9IDE7CisKKyAgICB2YXIgczIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiczIiKTsKKyAgICBzMi5zaXplID0gNTsKKyAgICAvLyBmb3JjZSBsYXlvdXQuCisgICAg
ZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgczIuc2l6ZSA9IDE7CisKKyAgICB2YXIgczMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczMiKTsKKyAgICBzMy5zaXplID0gNTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHMzLnNpemUgPSAxOworICAgICAg
ICByZXBvcnRSZXN1bHRzKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJlcG9ydFJlc3Vs
dHMoKQoreworICAgIHZhciBzZWxlY3RlZDEgPSBzMS5zZWxlY3RlZEluZGV4OworICAgIHZhciBz
ZWxlY3RlZDIgPSBzMi5zZWxlY3RlZEluZGV4OworICAgIHZhciBzZWxlY3RlZDMgPSBzMy5zZWxl
Y3RlZEluZGV4OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJIVE1M
ID0gIjx1bD4iICsKKyAgICAgICAgIjxsaT5DaGFuZ2luZyB0aGUgc2l6ZSBvZiBhIHNlbGVjdCBl
bGVtZW50IGZyb20gMSB0byA1IGFuZCBiYWNrIDEgc2hvdWxkIGFjcXVpcmUgc2VsZWN0aW9uIG9m
IHRoZSBmaXJzdCBpdGVtOiAiICsgKHNlbGVjdGVkMSA9PSAwID8gIlBBU1MiIDogIkZBSUwiKSAr
CisgICAgICAgICI8bGk+Rm9yY2luZyBsYXlvdXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG91dGNv
bWU6ICIgKyAoc2VsZWN0ZWQyID09IHNlbGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlMIikgKworICAg
ICAgICAiPGxpPkFuZCBuZWl0aGVyIHNob3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2Ug
bG9vcDogIiArIChzZWxlY3RlZDMgPT0gc2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwiKSArCisg
ICAgICAgICI8L3VsPiI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxkaXYgaWQ9InRlc3QiPgorICAgICAg
ICA8c2VsZWN0IGlkPSJzMSIgc2l6ZT0iMSI+PG9wdGlvbj50ZXN0PC9zZWxlY3Q+CisgICAgICAg
IDxzZWxlY3QgaWQ9InMyIiBzaXplPSIxIj48b3B0aW9uPnRlc3Q8L3NlbGVjdD4KKyAgICAgICAg
PHNlbGVjdCBpZD0iczMiIHNpemU9IjEiPjxvcHRpb24+dGVzdDwvc2VsZWN0PgorICAgIDwvZGl2
PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJp
cC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9w
dXAtdG8tbGlzdGJveC1yb3VuZHRyaXAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ2NTU1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ2hhbmdpbmcgdGhlIHNpemUgb2YgYSBzZWxlY3QgZWxl
bWVudCBmcm9tIDUgdG8gMSBhbmQgYmFjayA1IHNob3VsZCBhY3F1aXJlIHNlbGVjdGlvbiBvZiB0
aGUgZmlyc3QgaXRlbTogUEFTUworRm9yY2luZyBsYXlvdXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhl
IG91dGNvbWU6IFBBU1MKK0FuZCBuZWl0aGVyIHNob3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1l
c3NhZ2UgbG9vcDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Rib3gtcm91bmR0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDc3ZGY1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Ri
b3gtcm91bmR0cmlwLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHMxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInMxIik7CisgICAgczEuc2l6ZSA9IDE7CisgICAgczEuc2l6ZSA9IDU7CisK
KyAgICB2YXIgczIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczIiKTsKKyAgICBzMi5zaXpl
ID0gMTsKKyAgICAvLyBmb3JjZSBsYXlvdXQuCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7
CisgICAgczIuc2l6ZSA9IDU7CisKKyAgICB2YXIgczMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiczMiKTsKKyAgICBzMy5zaXplID0gMTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHMzLnNpemUgPSA1OworICAgICAgICByZXBvcnRSZXN1bHRzKCk7CisgICAg
fSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdHMoKQoreworICAgIHZhciBzZWxlY3Rl
ZDEgPSBzMS5zZWxlY3RlZEluZGV4OworICAgIHZhciBzZWxlY3RlZDIgPSBzMi5zZWxlY3RlZElu
ZGV4OworICAgIHZhciBzZWxlY3RlZDMgPSBzMy5zZWxlY3RlZEluZGV4OworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJIVE1MID0gIjx1bD4iICsKKyAgICAgICAgIjxs
aT5DaGFuZ2luZyB0aGUgc2l6ZSBvZiBhIHNlbGVjdCBlbGVtZW50IGZyb20gNSB0byAxIGFuZCBi
YWNrIDUgc2hvdWxkIGFjcXVpcmUgc2VsZWN0aW9uIG9mIHRoZSBmaXJzdCBpdGVtOiAiICsgKHNl
bGVjdGVkMSA9PSAwID8gIlBBU1MiIDogIkZBSUwiKSArCisgICAgICAgICI8bGk+Rm9yY2luZyBs
YXlvdXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG91dGNvbWU6ICIgKyAoc2VsZWN0ZWQyID09IHNl
bGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlMIikgKworICAgICAgICAiPGxpPkFuZCBuZWl0aGVyIHNo
b3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2UgbG9vcDogIiArIChzZWxlY3RlZDMgPT0g
c2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwiKSArCisgICAgICAgICI8L3VsPiI7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDxkaXYgaWQ9InRlc3QiPgorICAgICAgICA8c2VsZWN0IGlkPSJzMSIgc2l6ZT0i
NSI+PG9wdGlvbj50ZXN0PC9zZWxlY3Q+CisgICAgICAgIDxzZWxlY3QgaWQ9InMyIiBzaXplPSI1
Ij48b3B0aW9uPnRlc3Q8L3NlbGVjdD4KKyAgICAgICAgPHNlbGVjdCBpZD0iczMiIHNpemU9IjUi
PjxvcHRpb24+dGVzdDwvc2VsZWN0PgorICAgIDwvZGl2PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFy
ZWEtYW5kLW11dGF0aW9uLWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNTUyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdHMgdG8gc2VlIGlmIHJlZ2lzdGVyaW5nIGFuIGVtcHR5
IERPTU5vZGVJbnNlcnRlZCBldmVudCBoYW5kbGVyIGFuZCBkaXJ0eWluZyB0aGUgdHJlZSBqdXN0
IHJpZ2h0IGNhbiBjYXVzZSBhdHRhY2ggcmUtZW50cmFuY3kgd2l0aCB0ZXh0YXJlYS4KKworUGFz
c2VzIGlmIGRvZXNuJ3QgY3Jhc2guCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kZTMxZjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwKQEAgLTAsMCAr
MSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKworICAgIGh0bWwgYm9keSB7IH0KKwor
PC9zdHlsZT4KKzxzY3JpcHQ+CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgZnVuY3Rpb24oKSB7IH0sIGZhbHNlKTsKKyAgICAgICAg
dmFyIGZvbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb28iKTsKKyAgICAgICAgdmFyIGJh
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYXIiKTsKKyAgICAgICAgYmFyLmNsYXNzTmFt
ZSA9ICIgIjsKKyAgICAgICAgYmFyLmFwcGVuZENoaWxkKGZvbyk7CisgICAgICAgIC8vIFRlc3Qg
Y29tcGxldGUuIElmIGRpZG4ndCBjcmFzaCBhdCB0aGlzIHBvaW50LCBjbGVhbiB1cC4KKyAgICAg
ICAgYmFyLnJlbW92ZUNoaWxkKGZvbyk7CisgICAgfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0byBzZWUgaWYgcmVnaXN0ZXJp
bmcgYW4gZW1wdHkgRE9NTm9kZUluc2VydGVkIGV2ZW50IGhhbmRsZXIgYW5kIGRpcnR5aW5nIHRo
ZSB0cmVlIGp1c3QgcmlnaHQgY2FuIGNhdXNlIGF0dGFjaCByZS1lbnRyYW5jeSB3aXRoIHRleHRh
cmVhLgorICAgIDxwPlBhc3NlcyBpZiBkb2Vzbid0IGNyYXNoLgorICAgIDxkaXYgaWQ9ImZvbyI+
CisgICAgICAgIDx0ZXh0YXJlYT4gPC90ZXh0YXJlYT4KKyAgICAgICAgPHVsPjxsaT48bGk+PC91
bD4KKyAgICAgICAgPGlmcmFtZT48L2lmcmFtZT4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
YXIiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjQ0NDYwNC4uN2RkNTQzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0wMiAgRGltaXRyaSBHbGF6
a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN0eWxlIHVwZGF0ZSBkb25lIGR1ZSB0byBtdXRhdGlvbiBl
dmVudCBkaXNwYXRjaGluZyBpbiB0ZXh0YXJlYSBjYW4gYmUKKyAgICAgICAgdXNlZCB0byBjb3Jy
dXB0IHRoZSByZW5kZXIgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2ODY0CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvc2VsZWN0LWNo
YW5nZS1saXN0Ym94LXRvLXBvcHVwLXJvdW5kdHJpcC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwK
KworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoR2VuZXJpY0V2ZW50KTogUmVtb3ZlZCBpbnZvY2F0aW9uIG9mCisgICAgICAgICAgICBEb2N1
bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMKKyAgICAgICAgKiBodG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6IEFkZGVkIGV4cGxpY2l0CisgICAgICAgICAgICByZWNhbGMgdG8g
ZW5zdXJlIGFjY3VyYWN5IG9mIHJlcHJlc2VudGF0aW9uLCBlc3BlY2lhbGx5IGZvcgorICAgICAg
ICAgICAgbWVudUxpc3QvbGlzdEJveCBzd2l0Y2hlcy4KKwogMjAxMC0wNC0wMiAgRXZhbiBTdGFk
ZSAgPGVzdGFkZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggYTk1ZmYzOS4uYjRjNmRkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3MDQsOCArMjcwNCw2IEBAIGRvbmVX
aXRoRGVmYXVsdDoKICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQo
KTsKICNlbmRpZgogCi0gICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7
Ci0KICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDI5YzViMzcuLjQ3MWM5NzggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMjAxLDYgKzIwMSw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAg
aWYgKGF0dHJTaXplICE9IGF0dHItPnZhbHVlKCkpCiAgICAgICAgICAgICBhdHRyLT5zZXRWYWx1
ZShhdHRyU2l6ZSk7CiAKKyAgICAgICAgcmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKKwogICAg
ICAgICBtX2RhdGEuc2V0U2l6ZShtYXgoc2l6ZSwgMSkpOwogICAgICAgICBpZiAoKG9sZFVzZXNN
ZW51TGlzdCAhPSBtX2RhdGEudXNlc01lbnVMaXN0KCkgfHwgKCFvbGRVc2VzTWVudUxpc3QgJiYg
bV9kYXRhLnNpemUoKSAhPSBvbGRTaXplKSkgJiYgYXR0YWNoZWQoKSkgewogICAgICAgICAgICAg
ZGV0YWNoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52538</attachid>
            <date>2010-04-05 08:57:48 -0700</date>
            <delta_ts>2010-04-05 18:34:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36864-20100405085747.patch</filename>
            <type>text/plain</type>
            <size>10832</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNzkzYjA2Li45N2NiZGM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQt
MDIgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSB1cGRhdGUgZG9uZSBk
dWUgdG8gbXV0YXRpb24gZXZlbnQgZGlzcGF0Y2hpbmcgaW4gdGV4dGFyZWEgY2FuIGJlCisgICAg
ICAgIHVzZWQgdG8gY29ycnVwdCB0aGUgcmVuZGVyIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjg2NAorCisgICAgICAgIE1vZGlmaWVkIGxp
c3Rib3gtc2VsZWN0aW9uLmh0bWwgdG8gY29ycmVjdGx5IHNldCB0aGUgc2l6ZSBkdXJpbmcKKyAg
ICAgICAgY3JlYXRpb24uIE90aGVyd2lzZSwgb3B0aW9ucyBhZGRlZCB0byBpdCBhcyBhIG1lbnVM
aXN0LCByZXN1bHRpbmcKKyAgICAgICAgaW4gYSBkZWZhdWx0IHNlbGVjdGlvbiBvZiB0aGUgZmly
c3QgaXRlbS4KKworICAgICAgICBBZGRlZCBhIGZldyBtb3JlIHRlc3RzIHRvIGVuc3VyZSB3ZSBj
YXB0dXJlIGNvcnJlY3QgYmVoYXZpb3IgZm9yCisgICAgICAgIHNlbGVjdCBlbGVtZW50cyBhbmQg
dGhlaXIgZGVmYXVsdCBzZWxlY3Rpb24sIGFzIHdlbGwgYXMgdGhlIGluZmx1ZW5jZQorICAgICAg
ICBvZiB3aGVuIGxheW91dCBvY2N1cnMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xpc3Rib3gt
c2VsZWN0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Ri
b3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
c2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDQtMDIgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24gYW5kIEVyaWMgU2VpZGVsLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXNlbGVjdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXNlbGVjdGlvbi5odG1sCmluZGV4IDIw
MGVmODMuLjQwMzc3MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJv
eC1zZWxlY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2Vs
ZWN0aW9uLmh0bWwKQEAgLTE1MCwxNSArMTUwLDE1IEBACiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgdmFyIHNsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAg
ICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgICAgIHNsLnNpemUgPSBzejsKICAg
ICAgICAgICAgICAgICB3aGlsZSAoaSA8IHN6KSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBv
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPT0gc2VsSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHQuc2VsZWN0
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBvcHQuaW5uZXJUZXh0ID0gIml0ZW0gIiAr
IGk7CisgICAgICAgICAgICAgICAgICAgIG9wdC50ZXh0Q29udGVudCA9ICJpdGVtICIgKyBpOwog
ICAgICAgICAgICAgICAgICAgICBzbC5hcHBlbmRDaGlsZChvcHQpOwogICAgICAgICAgICAgICAg
ICAgICBpKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNsLnNpemUgPSBz
ejsKICAgICAgICAgICAgICAgICBzbC5tdWx0aXBsZSA9IG1sdDsKICAgICAgICAgICAgICAgICBz
bC5pZCA9IGlkTmFtZTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHNsKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1s
aXN0Ym94LXRvLXBvcHVwLXJvdW5kdHJpcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10by1wb3B1cC1yb3VuZHRyaXAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMTNiOTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10
by1wb3B1cC1yb3VuZHRyaXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ2hhbmdpbmcg
dGhlIHNpemUgb2YgYSBzZWxlY3QgZWxlbWVudCBmcm9tIDEgdG8gNSBhbmQgYmFjayAxIHNob3Vs
ZCBhY3F1aXJlIHNlbGVjdGlvbiBvZiB0aGUgZmlyc3QgaXRlbTogUEFTUworRm9yY2luZyBsYXlv
dXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG91dGNvbWU6IFBBU1MKK0FuZCBuZWl0aGVyIHNob3Vs
ZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2UgbG9vcDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0
cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10
by1wb3B1cC1yb3VuZHRyaXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NjQ5Mzc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWwKQEAgLTAsMCArMSw1MiBA
QAorPGh0bWw+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgdmFyIHMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMxIik7CisgICAgczEuc2l6ZSA9
IDU7CisgICAgczEuc2l6ZSA9IDE7CisKKyAgICB2YXIgczIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiczIiKTsKKyAgICBzMi5zaXplID0gNTsKKyAgICAvLyBmb3JjZSBsYXlvdXQuCisgICAg
ZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgczIuc2l6ZSA9IDE7CisKKyAgICB2YXIgczMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczMiKTsKKyAgICBzMy5zaXplID0gNTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHMzLnNpemUgPSAxOworICAgICAg
ICByZXBvcnRSZXN1bHRzKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJlcG9ydFJlc3Vs
dHMoKQoreworICAgIHZhciBzZWxlY3RlZDEgPSBzMS5zZWxlY3RlZEluZGV4OworICAgIHZhciBz
ZWxlY3RlZDIgPSBzMi5zZWxlY3RlZEluZGV4OworICAgIHZhciBzZWxlY3RlZDMgPSBzMy5zZWxl
Y3RlZEluZGV4OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJIVE1M
ID0gIjx1bD4iICsKKyAgICAgICAgIjxsaT5DaGFuZ2luZyB0aGUgc2l6ZSBvZiBhIHNlbGVjdCBl
bGVtZW50IGZyb20gMSB0byA1IGFuZCBiYWNrIDEgc2hvdWxkIGFjcXVpcmUgc2VsZWN0aW9uIG9m
IHRoZSBmaXJzdCBpdGVtOiAiICsgKHNlbGVjdGVkMSA9PSAwID8gIlBBU1MiIDogIkZBSUwiKSAr
CisgICAgICAgICI8bGk+Rm9yY2luZyBsYXlvdXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG91dGNv
bWU6ICIgKyAoc2VsZWN0ZWQyID09IHNlbGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlMIikgKworICAg
ICAgICAiPGxpPkFuZCBuZWl0aGVyIHNob3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2Ug
bG9vcDogIiArIChzZWxlY3RlZDMgPT0gc2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwiKSArCisg
ICAgICAgICI8L3VsPiI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxkaXYgaWQ9InRlc3QiPgorICAgICAg
ICA8c2VsZWN0IGlkPSJzMSIgc2l6ZT0iMSI+PG9wdGlvbj50ZXN0PC9zZWxlY3Q+CisgICAgICAg
IDxzZWxlY3QgaWQ9InMyIiBzaXplPSIxIj48b3B0aW9uPnRlc3Q8L3NlbGVjdD4KKyAgICAgICAg
PHNlbGVjdCBpZD0iczMiIHNpemU9IjEiPjxvcHRpb24+dGVzdDwvc2VsZWN0PgorICAgIDwvZGl2
PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJp
cC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9w
dXAtdG8tbGlzdGJveC1yb3VuZHRyaXAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ2NTU1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQ2hhbmdpbmcgdGhlIHNpemUgb2YgYSBzZWxlY3QgZWxl
bWVudCBmcm9tIDUgdG8gMSBhbmQgYmFjayA1IHNob3VsZCBhY3F1aXJlIHNlbGVjdGlvbiBvZiB0
aGUgZmlyc3QgaXRlbTogUEFTUworRm9yY2luZyBsYXlvdXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhl
IG91dGNvbWU6IFBBU1MKK0FuZCBuZWl0aGVyIHNob3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1l
c3NhZ2UgbG9vcDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Rib3gtcm91bmR0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDc3ZGY1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Ri
b3gtcm91bmR0cmlwLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8c2NyaXB0PgorCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHMxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInMxIik7CisgICAgczEuc2l6ZSA9IDE7CisgICAgczEuc2l6ZSA9IDU7CisK
KyAgICB2YXIgczIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczIiKTsKKyAgICBzMi5zaXpl
ID0gMTsKKyAgICAvLyBmb3JjZSBsYXlvdXQuCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7
CisgICAgczIuc2l6ZSA9IDU7CisKKyAgICB2YXIgczMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiczMiKTsKKyAgICBzMy5zaXplID0gMTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHMzLnNpemUgPSA1OworICAgICAgICByZXBvcnRSZXN1bHRzKCk7CisgICAg
fSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdHMoKQoreworICAgIHZhciBzZWxlY3Rl
ZDEgPSBzMS5zZWxlY3RlZEluZGV4OworICAgIHZhciBzZWxlY3RlZDIgPSBzMi5zZWxlY3RlZElu
ZGV4OworICAgIHZhciBzZWxlY3RlZDMgPSBzMy5zZWxlY3RlZEluZGV4OworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJIVE1MID0gIjx1bD4iICsKKyAgICAgICAgIjxs
aT5DaGFuZ2luZyB0aGUgc2l6ZSBvZiBhIHNlbGVjdCBlbGVtZW50IGZyb20gNSB0byAxIGFuZCBi
YWNrIDUgc2hvdWxkIGFjcXVpcmUgc2VsZWN0aW9uIG9mIHRoZSBmaXJzdCBpdGVtOiAiICsgKHNl
bGVjdGVkMSA9PSAwID8gIlBBU1MiIDogIkZBSUwiKSArCisgICAgICAgICI8bGk+Rm9yY2luZyBs
YXlvdXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG91dGNvbWU6ICIgKyAoc2VsZWN0ZWQyID09IHNl
bGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlMIikgKworICAgICAgICAiPGxpPkFuZCBuZWl0aGVyIHNo
b3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2UgbG9vcDogIiArIChzZWxlY3RlZDMgPT0g
c2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwiKSArCisgICAgICAgICI8L3VsPiI7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDxkaXYgaWQ9InRlc3QiPgorICAgICAgICA8c2VsZWN0IGlkPSJzMSIgc2l6ZT0i
NSI+PG9wdGlvbj50ZXN0PC9zZWxlY3Q+CisgICAgICAgIDxzZWxlY3QgaWQ9InMyIiBzaXplPSI1
Ij48b3B0aW9uPnRlc3Q8L3NlbGVjdD4KKyAgICAgICAgPHNlbGVjdCBpZD0iczMiIHNpemU9IjUi
PjxvcHRpb24+dGVzdDwvc2VsZWN0PgorICAgIDwvZGl2PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFy
ZWEtYW5kLW11dGF0aW9uLWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNTUyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdHMgdG8gc2VlIGlmIHJlZ2lzdGVyaW5nIGFuIGVtcHR5
IERPTU5vZGVJbnNlcnRlZCBldmVudCBoYW5kbGVyIGFuZCBkaXJ0eWluZyB0aGUgdHJlZSBqdXN0
IHJpZ2h0IGNhbiBjYXVzZSBhdHRhY2ggcmUtZW50cmFuY3kgd2l0aCB0ZXh0YXJlYS4KKworUGFz
c2VzIGlmIGRvZXNuJ3QgY3Jhc2guCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kZTMxZjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwKQEAgLTAsMCAr
MSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKworICAgIGh0bWwgYm9keSB7IH0KKwor
PC9zdHlsZT4KKzxzY3JpcHQ+CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgZnVuY3Rpb24oKSB7IH0sIGZhbHNlKTsKKyAgICAgICAg
dmFyIGZvbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb28iKTsKKyAgICAgICAgdmFyIGJh
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYXIiKTsKKyAgICAgICAgYmFyLmNsYXNzTmFt
ZSA9ICIgIjsKKyAgICAgICAgYmFyLmFwcGVuZENoaWxkKGZvbyk7CisgICAgICAgIC8vIFRlc3Qg
Y29tcGxldGUuIElmIGRpZG4ndCBjcmFzaCBhdCB0aGlzIHBvaW50LCBjbGVhbiB1cC4KKyAgICAg
ICAgYmFyLnJlbW92ZUNoaWxkKGZvbyk7CisgICAgfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0byBzZWUgaWYgcmVnaXN0ZXJp
bmcgYW4gZW1wdHkgRE9NTm9kZUluc2VydGVkIGV2ZW50IGhhbmRsZXIgYW5kIGRpcnR5aW5nIHRo
ZSB0cmVlIGp1c3QgcmlnaHQgY2FuIGNhdXNlIGF0dGFjaCByZS1lbnRyYW5jeSB3aXRoIHRleHRh
cmVhLgorICAgIDxwPlBhc3NlcyBpZiBkb2Vzbid0IGNyYXNoLgorICAgIDxkaXYgaWQ9ImZvbyI+
CisgICAgICAgIDx0ZXh0YXJlYT4gPC90ZXh0YXJlYT4KKyAgICAgICAgPHVsPjxsaT48bGk+PC91
bD4KKyAgICAgICAgPGlmcmFtZT48L2lmcmFtZT4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
YXIiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjQ0NDYwNC4uN2RkNTQzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0wMiAgRGltaXRyaSBHbGF6
a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN0eWxlIHVwZGF0ZSBkb25lIGR1ZSB0byBtdXRhdGlvbiBl
dmVudCBkaXNwYXRjaGluZyBpbiB0ZXh0YXJlYSBjYW4gYmUKKyAgICAgICAgdXNlZCB0byBjb3Jy
dXB0IHRoZSByZW5kZXIgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2ODY0CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvc2VsZWN0LWNo
YW5nZS1saXN0Ym94LXRvLXBvcHVwLXJvdW5kdHJpcC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwK
KworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoR2VuZXJpY0V2ZW50KTogUmVtb3ZlZCBpbnZvY2F0aW9uIG9mCisgICAgICAgICAgICBEb2N1
bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMKKyAgICAgICAgKiBodG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6IEFkZGVkIGV4cGxpY2l0CisgICAgICAgICAgICByZWNhbGMgdG8g
ZW5zdXJlIGFjY3VyYWN5IG9mIHJlcHJlc2VudGF0aW9uLCBlc3BlY2lhbGx5IGZvcgorICAgICAg
ICAgICAgbWVudUxpc3QvbGlzdEJveCBzd2l0Y2hlcy4KKwogMjAxMC0wNC0wMiAgRXZhbiBTdGFk
ZSAgPGVzdGFkZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggYTk1ZmYzOS4uYjRjNmRkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3MDQsOCArMjcwNCw2IEBAIGRvbmVX
aXRoRGVmYXVsdDoKICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQo
KTsKICNlbmRpZgogCi0gICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7
Ci0KICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDI5YzViMzcuLmRlNDBmZjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMjAwLDggKzIwMCwxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAg
IFN0cmluZyBhdHRyU2l6ZSA9IFN0cmluZzo6bnVtYmVyKHNpemUpOwogICAgICAgICBpZiAoYXR0
clNpemUgIT0gYXR0ci0+dmFsdWUoKSkKICAgICAgICAgICAgIGF0dHItPnNldFZhbHVlKGF0dHJT
aXplKTsKKyAgICAgICAgc2l6ZSA9IG1heChzaXplLCAxKTsKIAotICAgICAgICBtX2RhdGEuc2V0
U2l6ZShtYXgoc2l6ZSwgMSkpOworICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSd2ZSBkZXRlcm1p
bmVkIHNlbGVjdGVkbmVzcyBvZiB0aGUgaXRlbXMgYXQgbGVhc3Qgb25jZSBwcmlvciB0byBjaGFu
Z2luZyB0aGUgc2l6ZS4KKyAgICAgICAgaWYgKG9sZFNpemUgIT0gc2l6ZSkKKyAgICAgICAgICAg
IHJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCk7CisKKyAgICAgICAgbV9kYXRhLnNldFNpemUoc2l6
ZSk7CiAgICAgICAgIGlmICgob2xkVXNlc01lbnVMaXN0ICE9IG1fZGF0YS51c2VzTWVudUxpc3Qo
KSB8fCAoIW9sZFVzZXNNZW51TGlzdCAmJiBtX2RhdGEuc2l6ZSgpICE9IG9sZFNpemUpKSAmJiBh
dHRhY2hlZCgpKSB7CiAgICAgICAgICAgICBkZXRhY2goKTsKICAgICAgICAgICAgIGF0dGFjaCgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52595</attachid>
            <date>2010-04-05 18:34:24 -0700</date>
            <delta_ts>2012-06-20 07:04:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36864-20100405183412.patch</filename>
            <type>text/plain</type>
            <size>12196</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkY2VkOWY3Li4zNThkOGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQt
MDUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHlsZSB1cGRhdGUgZG9uZSBk
dWUgdG8gbXV0YXRpb24gZXZlbnQgZGlzcGF0Y2hpbmcgaW4gdGV4dGFyZWEgY2FuIGJlCisgICAg
ICAgIHVzZWQgdG8gY29ycnVwdCB0aGUgcmVuZGVyIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjg2NAorCisgICAgICAgIE1vZGlmaWVkIGxp
c3Rib3gtc2VsZWN0aW9uLmh0bWwgdG8gY29ycmVjdGx5IHNldCB0aGUgc2l6ZSBkdXJpbmcKKyAg
ICAgICAgY3JlYXRpb24uIE90aGVyd2lzZSwgb3B0aW9ucyBhZGRlZCB0byBpdCBhcyBhIG1lbnVM
aXN0LCByZXN1bHRpbmcKKyAgICAgICAgaW4gYSBkZWZhdWx0IHNlbGVjdGlvbiBvZiB0aGUgZmly
c3QgaXRlbS4KKworICAgICAgICBBZGRlZCBhIGZldyBtb3JlIHRlc3RzIHRvIGVuc3VyZSB3ZSBj
YXB0dXJlIGNvcnJlY3QgYmVoYXZpb3IgZm9yCisgICAgICAgIHNlbGVjdCBlbGVtZW50cyBhbmQg
dGhlaXIgZGVmYXVsdCBzZWxlY3Rpb24sIGFzIHdlbGwgYXMgdGhlIGluZmx1ZW5jZQorICAgICAg
ICBvZiB3aGVuIGxheW91dCBvY2N1cnMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2xpc3Rib3gt
c2VsZWN0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Ri
b3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
c2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDQtMDUgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvbGlzdGJveC1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlz
dGJveC1zZWxlY3Rpb24uaHRtbAppbmRleCAyMDBlZjgzLi40MDM3NzA3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2VsZWN0aW9uLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXNlbGVjdGlvbi5odG1sCkBAIC0xNTAsMTUgKzE1MCwx
NSBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBzbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwogICAgICAgICAgICAgICAgIHZhciBpID0gMDsKKyAgICAg
ICAgICAgICAgICBzbC5zaXplID0gc3o7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBzeikg
ewogICAgICAgICAgICAgICAgICAgICB2YXIgb3B0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IHNlbEluZGV4KQogICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0LnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgb3B0LmlubmVyVGV4dCA9ICJpdGVtICIgKyBpOworICAgICAgICAgICAgICAgICAgICBvcHQu
dGV4dENvbnRlbnQgPSAiaXRlbSAiICsgaTsKICAgICAgICAgICAgICAgICAgICAgc2wuYXBwZW5k
Q2hpbGQob3B0KTsKICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBzbC5zaXplID0gc3o7CiAgICAgICAgICAgICAgICAgc2wubXVsdGlw
bGUgPSBtbHQ7CiAgICAgICAgICAgICAgICAgc2wuaWQgPSBpZE5hbWU7CiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10by1wb3B1cC1yb3VuZHRyaXAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gt
dG8tcG9wdXAtcm91bmR0cmlwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41MzEzYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0cmlwLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKK0NoYW5naW5nIHRoZSBzaXplIG9mIGEgc2VsZWN0IGVsZW1lbnQg
ZnJvbSAxIHRvIDUgYW5kIGJhY2sgMSBzaG91bGQgYWNxdWlyZSBzZWxlY3Rpb24gb2YgdGhlIGZp
cnN0IGl0ZW06IFBBU1MKK0ZvcmNpbmcgbGF5b3V0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBvdXRj
b21lOiBQQVNTCitBbmQgbmVpdGhlciBzaG91bGQgZHJvcHBpbmcgb3V0IG9mIHRoZSBtZXNzYWdl
IGxvb3A6IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNo
YW5nZS1saXN0Ym94LXRvLXBvcHVwLXJvdW5kdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY0OTM3OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1saXN0Ym94LXRvLXBvcHVwLXJv
dW5kdHJpcC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPHNjcmlwdD4KKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBzMSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzMSIpOworICAgIHMxLnNpemUgPSA1OworICAgIHMxLnNpemUgPSAxOworCisgICAg
dmFyIHMyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMyIik7CisgICAgczIuc2l6ZSA9IDU7
CisgICAgLy8gZm9yY2UgbGF5b3V0LgorICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAg
IHMyLnNpemUgPSAxOworCisgICAgdmFyIHMzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMz
Iik7CisgICAgczMuc2l6ZSA9IDU7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBzMy5zaXplID0gMTsKKyAgICAgICAgcmVwb3J0UmVzdWx0cygpOworICAgIH0sIDAp
OworfQorCitmdW5jdGlvbiByZXBvcnRSZXN1bHRzKCkKK3sKKyAgICB2YXIgc2VsZWN0ZWQxID0g
czEuc2VsZWN0ZWRJbmRleDsKKyAgICB2YXIgc2VsZWN0ZWQyID0gczIuc2VsZWN0ZWRJbmRleDsK
KyAgICB2YXIgc2VsZWN0ZWQzID0gczMuc2VsZWN0ZWRJbmRleDsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdCIpLmlubmVySFRNTCA9ICI8dWw+IiArCisgICAgICAgICI8bGk+Q2hh
bmdpbmcgdGhlIHNpemUgb2YgYSBzZWxlY3QgZWxlbWVudCBmcm9tIDEgdG8gNSBhbmQgYmFjayAx
IHNob3VsZCBhY3F1aXJlIHNlbGVjdGlvbiBvZiB0aGUgZmlyc3QgaXRlbTogIiArIChzZWxlY3Rl
ZDEgPT0gMCA/ICJQQVNTIiA6ICJGQUlMIikgKworICAgICAgICAiPGxpPkZvcmNpbmcgbGF5b3V0
IHNob3VsZCBub3QgYWZmZWN0IHRoZSBvdXRjb21lOiAiICsgKHNlbGVjdGVkMiA9PSBzZWxlY3Rl
ZDEgPyAiUEFTUyIgOiAiRkFJTCIpICsKKyAgICAgICAgIjxsaT5BbmQgbmVpdGhlciBzaG91bGQg
ZHJvcHBpbmcgb3V0IG9mIHRoZSBtZXNzYWdlIGxvb3A6ICIgKyAoc2VsZWN0ZWQzID09IHNlbGVj
dGVkMSA/ICJQQVNTIiA6ICJGQUlMIikgKworICAgICAgICAiPC91bD4iOworCisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8ZGl2IGlkPSJ0ZXN0Ij4KKyAgICAgICAgPHNlbGVjdCBpZD0iczEiIHNpemU9IjEiPjxv
cHRpb24+dGVzdDwvc2VsZWN0PgorICAgICAgICA8c2VsZWN0IGlkPSJzMiIgc2l6ZT0iMSI+PG9w
dGlvbj50ZXN0PC9zZWxlY3Q+CisgICAgICAgIDxzZWxlY3QgaWQ9InMzIiBzaXplPSIxIj48b3B0
aW9uPnRlc3Q8L3NlbGVjdD4KKyAgICA8L2Rpdj4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFu
Z2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Rib3gtcm91bmR0cmlwLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjU1NWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVw
LXRvLWxpc3Rib3gtcm91bmR0cmlwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0NoYW5n
aW5nIHRoZSBzaXplIG9mIGEgc2VsZWN0IGVsZW1lbnQgZnJvbSA1IHRvIDEgYW5kIGJhY2sgNSBz
aG91bGQgYWNxdWlyZSBzZWxlY3Rpb24gb2YgdGhlIGZpcnN0IGl0ZW06IFBBU1MKK0ZvcmNpbmcg
bGF5b3V0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBvdXRjb21lOiBQQVNTCitBbmQgbmVpdGhlciBz
aG91bGQgZHJvcHBpbmcgb3V0IG9mIHRoZSBtZXNzYWdlIGxvb3A6IFBBU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJv
dW5kdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVw
LXRvLWxpc3Rib3gtcm91bmR0cmlwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTA3N2RmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sCkBAIC0wLDAgKzEs
NTIgQEAKKzxodG1sPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIHZhciBzMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzMSIpOworICAgIHMxLnNp
emUgPSAxOworICAgIHMxLnNpemUgPSA1OworCisgICAgdmFyIHMyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInMyIik7CisgICAgczIuc2l6ZSA9IDE7CisgICAgLy8gZm9yY2UgbGF5b3V0Lgor
ICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgIHMyLnNpemUgPSA1OworCisgICAgdmFy
IHMzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMzIik7CisgICAgczMuc2l6ZSA9IDE7Cisg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpCisgICAgeworICAgICAgICBzMy5zaXplID0gNTsKKyAg
ICAgICAgcmVwb3J0UmVzdWx0cygpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiByZXBvcnRS
ZXN1bHRzKCkKK3sKKyAgICB2YXIgc2VsZWN0ZWQxID0gczEuc2VsZWN0ZWRJbmRleDsKKyAgICB2
YXIgc2VsZWN0ZWQyID0gczIuc2VsZWN0ZWRJbmRleDsKKyAgICB2YXIgc2VsZWN0ZWQzID0gczMu
c2VsZWN0ZWRJbmRleDsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmlubmVy
SFRNTCA9ICI8dWw+IiArCisgICAgICAgICI8bGk+Q2hhbmdpbmcgdGhlIHNpemUgb2YgYSBzZWxl
Y3QgZWxlbWVudCBmcm9tIDUgdG8gMSBhbmQgYmFjayA1IHNob3VsZCBhY3F1aXJlIHNlbGVjdGlv
biBvZiB0aGUgZmlyc3QgaXRlbTogIiArIChzZWxlY3RlZDEgPT0gMCA/ICJQQVNTIiA6ICJGQUlM
IikgKworICAgICAgICAiPGxpPkZvcmNpbmcgbGF5b3V0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBv
dXRjb21lOiAiICsgKHNlbGVjdGVkMiA9PSBzZWxlY3RlZDEgPyAiUEFTUyIgOiAiRkFJTCIpICsK
KyAgICAgICAgIjxsaT5BbmQgbmVpdGhlciBzaG91bGQgZHJvcHBpbmcgb3V0IG9mIHRoZSBtZXNz
YWdlIGxvb3A6ICIgKyAoc2VsZWN0ZWQzID09IHNlbGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlMIikg
KworICAgICAgICAiPC91bD4iOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2IGlkPSJ0ZXN0Ij4KKyAg
ICAgICAgPHNlbGVjdCBpZD0iczEiIHNpemU9IjUiPjxvcHRpb24+dGVzdDwvc2VsZWN0PgorICAg
ICAgICA8c2VsZWN0IGlkPSJzMiIgc2l6ZT0iNSI+PG9wdGlvbj50ZXN0PC9zZWxlY3Q+CisgICAg
ICAgIDxzZWxlY3QgaWQ9InMzIiBzaXplPSI1Ij48b3B0aW9uPnRlc3Q8L3NlbGVjdD4KKyAgICA8
L2Rpdj4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWFuZC1tdXRhdGlvbi1ldmVudHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZl
bnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDU1
MjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1h
bmQtbXV0YXRpb24tZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHRv
IHNlZSBpZiByZWdpc3RlcmluZyBhbiBlbXB0eSBET01Ob2RlSW5zZXJ0ZWQgZXZlbnQgaGFuZGxl
ciBhbmQgZGlydHlpbmcgdGhlIHRyZWUganVzdCByaWdodCBjYW4gY2F1c2UgYXR0YWNoIHJlLWVu
dHJhbmN5IHdpdGggdGV4dGFyZWEuCisKK1Bhc3NlcyBpZiBkb2Vzbid0IGNyYXNoLgorCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtYW5kLW11dGF0aW9uLWV2
ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24t
ZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzMWYyMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtYW5kLW11
dGF0aW9uLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5
bGU+CisKKyAgICBodG1sIGJvZHkgeyB9CisKKzwvc3R5bGU+Cis8c2NyaXB0PgorCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAg
ICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIGZ1bmN0
aW9uKCkgeyB9LCBmYWxzZSk7CisgICAgICAgIHZhciBmb28gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZm9vIik7CisgICAgICAgIHZhciBiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YmFyIik7CisgICAgICAgIGJhci5jbGFzc05hbWUgPSAiICI7CisgICAgICAgIGJhci5hcHBlbmRD
aGlsZChmb28pOworICAgICAgICAvLyBUZXN0IGNvbXBsZXRlLiBJZiBkaWRuJ3QgY3Jhc2ggYXQg
dGhpcyBwb2ludCwgY2xlYW4gdXAuCisgICAgICAgIGJhci5yZW1vdmVDaGlsZChmb28pOworICAg
IH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAg
PHA+VGVzdHMgdG8gc2VlIGlmIHJlZ2lzdGVyaW5nIGFuIGVtcHR5IERPTU5vZGVJbnNlcnRlZCBl
dmVudCBoYW5kbGVyIGFuZCBkaXJ0eWluZyB0aGUgdHJlZSBqdXN0IHJpZ2h0IGNhbiBjYXVzZSBh
dHRhY2ggcmUtZW50cmFuY3kgd2l0aCB0ZXh0YXJlYS4KKyAgICA8cD5QYXNzZXMgaWYgZG9lc24n
dCBjcmFzaC4KKyAgICA8ZGl2IGlkPSJmb28iPgorICAgICAgICA8dGV4dGFyZWE+IDwvdGV4dGFy
ZWE+CisgICAgICAgIDx1bD48bGk+PGxpPjwvdWw+CisgICAgICAgIDxpZnJhbWU+PC9pZnJhbWU+
CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iYmFyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkN2RjYjguLmNkOTY3MjEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTAtMDQtMDUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4g
YW5kIEphbWVzIFJvYmluc29uIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0eWxlIHVwZGF0ZSBkb25lIGR1ZSB0
byBtdXRhdGlvbiBldmVudCBkaXNwYXRjaGluZyBpbiB0ZXh0YXJlYSBjYW4gYmUKKyAgICAgICAg
dXNlZCB0byBjb3JydXB0IHRoZSByZW5kZXIgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2ODY0CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9y
bXMvc2VsZWN0LWNoYW5nZS1saXN0Ym94LXRvLXBvcHVwLXJvdW5kdHJpcC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRy
aXAuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24t
ZXZlbnRzLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKTogQWRkZWQgdXBkYXRlU3R5bGVJZk5lZWRl
ZCgpCisgICAgICAgICAgICBjYWxsIHRvIGVuc3VyZSB0aGF0IG9iamVjdCBsb2FkcyBzdGFydCBi
ZWZvcmUgZmlyaW5nIHdpbmRvdyBsb2FkLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KTogUmVtb3ZlZCBpbnZvY2F0
aW9uIG9mCisgICAgICAgICAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMK
KyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IEFkZGVkIGV4cGxpY2l0
CisgICAgICAgICAgICByZWNhbGMgdG8gZW5zdXJlIGFjY3VyYWN5IG9mIHJlcHJlc2VudGF0aW9u
LCBlc3BlY2lhbGx5IGZvcgorICAgICAgICAgICAgbWVudUxpc3QvbGlzdEJveCBzd2l0Y2hlcy4K
KwogMjAxMC0wNC0wNSAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZWEyMmVjNi4uZTYyNmI4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDE4OSw3ICs0MTg5LDE3
IEBAIHZvaWQgRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgc2V0UGFyc2luZyhm
YWxzZSk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01D
b250ZW50TG9hZGVkRXZlbnQsIHRydWUsIGZhbHNlKSk7CisKICAgICBpZiAoRnJhbWUqIGYgPSBm
cmFtZSgpKSB7CisgICAgICAgIC8vIEZyYW1lTG9hZGVyOjpmaW5pc2hlZFBhcnNpbmcoKSBtaWdo
dCBlbmQgdXAgY2FsbGluZyBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpIGlmIGFsbAorICAgICAg
ICAvLyByZXNvdXJjZSBsb2FkcyBhcmUgY29tcGxldGUuIEhUTUxPYmplY3RFbGVtZW50cyBjYW4g
c3RhcnQgbG9hZGluZyB0aGVpciByZXNvdXJjZXMgZnJvbQorICAgICAgICAvLyBwb3N0IGF0dGFj
aCBjYWxsYmFja3MgdHJpZ2dlcmVkIGJ5IHJlY2FsY1N0eWxlKCkuICBUaGlzIG1lYW5zIGlmIHdl
IHBhcnNlIG91dCBhbiA8b2JqZWN0PgorICAgICAgICAvLyB0YWcgYW5kIHRoZW4gcmVhY2ggdGhl
IGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aG91dCB1cGRhdGluZyBzdHlsZXMsIHdlIG1pZ2h0IG5v
dCBoYXZlIHlldAorICAgICAgICAvLyBzdGFydGVkIHRoZSByZXNvdXJjZSBsb2FkIGFuZCBtaWdo
dCBmaXJlIHRoZSB3aW5kb3cgbG9hZCBldmVudCB0b28gZWFybHkuICBUbyBhdm9pZCB0aGlzCisg
ICAgICAgIC8vIHdlIGZvcmNlIHRoZSBzdHlsZXMgdG8gYmUgdXAgdG8gZGF0ZSBiZWZvcmUgY2Fs
bGluZyBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkuCisgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY4NjQgc3RhcnRpbmcgYXJvdW5k
IGNvbW1lbnQgMzUuCisgICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwogICAgICAgICBm
LT5sb2FkZXIoKS0+ZmluaXNoZWRQYXJzaW5nKCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCBkNWUzOTVkLi41MGYwMThiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjcwNSw4ICsyNzA1LDYgQEAgZG9uZVdpdGhE
ZWZhdWx0OgogICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hFdmVudCgpOwog
I2VuZGlmCiAKLSAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKLQog
ICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKaW5kZXggMjljNWIzNy4uZGU0MGZmNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCkBAIC0yMDAsOCArMjAwLDEzIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgU3Ry
aW5nIGF0dHJTaXplID0gU3RyaW5nOjpudW1iZXIoc2l6ZSk7CiAgICAgICAgIGlmIChhdHRyU2l6
ZSAhPSBhdHRyLT52YWx1ZSgpKQogICAgICAgICAgICAgYXR0ci0+c2V0VmFsdWUoYXR0clNpemUp
OworICAgICAgICBzaXplID0gbWF4KHNpemUsIDEpOwogCi0gICAgICAgIG1fZGF0YS5zZXRTaXpl
KG1heChzaXplLCAxKSk7CisgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlJ3ZlIGRldGVybWluZWQg
c2VsZWN0ZWRuZXNzIG9mIHRoZSBpdGVtcyBhdCBsZWFzdCBvbmNlIHByaW9yIHRvIGNoYW5naW5n
IHRoZSBzaXplLgorICAgICAgICBpZiAob2xkU2l6ZSAhPSBzaXplKQorICAgICAgICAgICAgcmVj
YWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKKworICAgICAgICBtX2RhdGEuc2V0U2l6ZShzaXplKTsK
ICAgICAgICAgaWYgKChvbGRVc2VzTWVudUxpc3QgIT0gbV9kYXRhLnVzZXNNZW51TGlzdCgpIHx8
ICghb2xkVXNlc01lbnVMaXN0ICYmIG1fZGF0YS5zaXplKCkgIT0gb2xkU2l6ZSkpICYmIGF0dGFj
aGVkKCkpIHsKICAgICAgICAgICAgIGRldGFjaCgpOwogICAgICAgICAgICAgYXR0YWNoKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>