<?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>73489</bug_id>
          
          <creation_ts>2011-11-30 13:57:21 -0800</creation_ts>
          <short_desc>[chromium] Add fling animation support to ScrollAnimatorNone</short_desc>
          <delta_ts>2012-11-30 09:53:18 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67822</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>rjkroege</cc>
    
    <cc>scottbyer</cc>
    
    <cc>simophin</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512108</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-11-30 13:57:21 -0800</bug_when>
    <thetext>Add fling animation support to ScrollAnimatorNone</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512111</commentid>
    <comment_count>1</comment_count>
      <attachid>117269</attachid>
    <who name="">vollick</who>
    <bug_when>2011-11-30 13:58:16 -0800</bug_when>
    <thetext>Created attachment 117269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512393</commentid>
    <comment_count>2</comment_count>
      <attachid>117269</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-11-30 20:32:32 -0800</bug_when>
    <thetext>Comment on attachment 117269
Patch

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

It&apos;s quite surprising to see a patch that adds animation support to ScrollAnimatorNone. Isn&apos;t this class reason for existence to not do animation?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:53
&gt; -namespace WebCore {
&gt; +namespace {

This should not be in anonymous namespace. Constants have internal linkage by default, and it&apos;s much easier (and consistent with other WebCore code) to mark the single function as static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513136</commentid>
    <comment_count>3</comment_count>
      <attachid>117493</attachid>
    <who name="">vollick</who>
    <bug_when>2011-12-01 14:40:55 -0800</bug_when>
    <thetext>Created attachment 117493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513157</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-01 14:56:21 -0800</bug_when>
    <thetext>Could you please comment on the question above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513162</commentid>
    <comment_count>5</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-12-01 15:01:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Could you please comment on the question above?

ScrollAnimatorNone has an unfortunate name. It does not mean &quot;a scroll animator that does not actually animate&quot;. In fact, it does quite a bit of animating (zoom animations, scroll animations, and now fling animations).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513174</commentid>
    <comment_count>6</comment_count>
      <attachid>117499</attachid>
    <who name="">vollick</who>
    <bug_when>2011-12-01 15:12:00 -0800</bug_when>
    <thetext>Created attachment 117499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513189</commentid>
    <comment_count>7</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-12-01 15:19:20 -0800</bug_when>
    <thetext>&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:53
&gt; &gt; -namespace WebCore {
&gt; &gt; +namespace {
&gt; 
&gt; This should not be in anonymous namespace. Constants have internal linkage by default, and it&apos;s much easier (and consistent with other WebCore code) to mark the single function as static.

Should be fixed with the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514007</commentid>
    <comment_count>8</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-12-02 12:26:45 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:53
&gt; &gt; &gt; -namespace WebCore {
&gt; &gt; &gt; +namespace {
&gt; &gt; 
&gt; &gt; This should not be in anonymous namespace. Constants have internal linkage by default, and it&apos;s much easier (and consistent with other WebCore code) to mark the single function as static.
&gt; 
&gt; Should be fixed with the latest patch.

In general, looks good to me. One thing not obvious from the patch is how flings and smooth scrolls interact. For example, does initiation of a smooth scroll cancel any fling currently in flight? Vice versa? Or does the existing trajectory complete before the next starts? (I presume not ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515246</commentid>
    <comment_count>9</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-12-05 11:41:27 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:53
&gt; &gt; &gt; &gt; -namespace WebCore {
&gt; &gt; &gt; &gt; +namespace {
&gt; &gt; &gt; 
&gt; &gt; &gt; This should not be in anonymous namespace. Constants have internal linkage by default, and it&apos;s much easier (and consistent with other WebCore code) to mark the single function as static.
&gt; &gt; 
&gt; &gt; Should be fixed with the latest patch.
&gt; 
&gt; In general, looks good to me. One thing not obvious from the patch is how flings and smooth scrolls interact. For example, does initiation of a smooth scroll cancel any fling currently in flight? Vice versa? Or does the existing trajectory complete before the next starts? (I presume not ...)

The scroll / fling animations will interrupt one another (they will not be queued up in any way). The animation state is stored in the per axis data, and the PAD knows what sort of animation is happening (scroll vs fling).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515275</commentid>
    <comment_count>10</comment_count>
      <attachid>117499</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-05 12:19:45 -0800</bug_when>
    <thetext>Comment on attachment 117499
Patch

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

The code changes look OK to me. One procedural issue and one minor nit.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

This particular OOPS needs to be resolved. You really should add tests for this change. Talk with wjmaclean about how his recent ScrollAnimatorNone changes were tested in DumpRenderTree. If it&apos;s highly impractical to test these changes you can explain why and remove the OOPS, but I would discourage doing this.

&gt; Source/WebCore/platform/ScrollAnimatorNone.h:3
&gt; + *

Try to avoid spurious whitespace changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515297</commentid>
    <comment_count>11</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-12-05 12:32:51 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=117499&amp;action=review

and you need tests. Really.

&gt; Source/WebCore/ChangeLog:9
&gt; +

this will break the commit queue. You need to change this to describe what you&apos;ve added.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:59
&gt; +const double kDefaultFlingAcceleration = -4500.0; // pixels/second^2

people have complained that the default fling acceleration needs to vary with respect to the size of the page. Have you considered this feature? How hard would it be to add?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:405
&gt; +}

one blank?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:591
&gt; +    case PlatformGestureEvent::ScrollUpdateType: {

This case statement belongs in ScrollAnimator, not ScrollAnimatorNone -- PGEs that attempt to scroll the page still need to do the scroll even without hardware-accelerated scrolling. Forward the handling of ScrollUpdateType to there.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:606
&gt;      default:

It is correct webkit style to explicitly list all case statements.

&gt; Source/WebCore/platform/ScrollAnimatorNone.h:-3
&gt; - * 

nit: you could revert these lines that are only space changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516851</commentid>
    <comment_count>12</comment_count>
      <attachid>118256</attachid>
    <who name="">vollick</who>
    <bug_when>2011-12-07 12:59:48 -0800</bug_when>
    <thetext>Created attachment 118256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516854</commentid>
    <comment_count>13</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-12-07 13:00:44 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 117499 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117499&amp;action=review
&gt; 
&gt; The code changes look OK to me. One procedural issue and one minor nit.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; This particular OOPS needs to be resolved. You really should add tests for this change. Talk with wjmaclean about how his recent ScrollAnimatorNone changes were tested in DumpRenderTree. If it&apos;s highly impractical to test these changes you can explain why and remove the OOPS, but I would discourage doing this.

Fixed. I&apos;ve added a unit test for fling to ScrollAnimatorNoneTest.cpp

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.h:3
&gt; &gt; + *
&gt; 
&gt; Try to avoid spurious whitespace changes.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516860</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 13:04:09 -0800</bug_when>
    <thetext>Attachment 118256 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
From git://git.webkit.org/WebKit
 + f1b1893...46a47fc master     -&gt; origin/master  (forced update)
	M	Source/JavaScriptCore/wtf/HashTraits.h
	M	Source/JavaScriptCore/ChangeLog
	M	Source/WebCore/dom/ChildListMutationScope.cpp
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/rendering/RenderLayer.cpp
	M	Source/WebCore/rendering/RenderLayer.h
r102267 = 67d4f2de4c2f4a2b6f1b3adfd20b50620fad3051 (refs/remotes/origin/master)
First, rewinding head to replay your work on top of it...
Applying: RenderLayer::updateZOrderLists(): Inline early-return condition.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 RenderLayer::updateZOrderLists(): Inline early-return condition.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516901</commentid>
    <comment_count>15</comment_count>
      <attachid>118272</attachid>
    <who name="">vollick</who>
    <bug_when>2011-12-07 13:54:47 -0800</bug_when>
    <thetext>Created attachment 118272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516906</commentid>
    <comment_count>16</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-12-07 13:59:55 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117499&amp;action=review
&gt; 
&gt; and you need tests. Really.

Fixed. Added fling unit test to ScrollAnimatorNoneTest.cpp

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +
&gt; 
&gt; this will break the commit queue. You need to change this to describe what you&apos;ve added.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:59
&gt; &gt; +const double kDefaultFlingAcceleration = -4500.0; // pixels/second^2
&gt; 
&gt; people have complained that the default fling acceleration needs to vary with respect to the size of the page. Have you considered this feature? How hard would it be to add?

No, this would not be hard to add. I would like to add this in a separate patch if/when this is needed.

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:405
&gt; &gt; +}
&gt; 
&gt; one blank?

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:591
&gt; &gt; +    case PlatformGestureEvent::ScrollUpdateType: {
&gt; 
&gt; This case statement belongs in ScrollAnimator, not ScrollAnimatorNone -- PGEs that attempt to scroll the page still need to do the scroll even without hardware-accelerated scrolling. Forward the handling of ScrollUpdateType to there.

Fixed. ScrollAnimatorNone passes the event on to it&apos;s base class if it doesn&apos;t handle the event. ScrollAnimator has such a switch, and handles the scroll update events since acceleration is not required.

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:606
&gt; &gt;      default:
&gt; 
&gt; It is correct webkit style to explicitly list all case statements.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.h:-3
&gt; &gt; - * 
&gt; 
&gt; nit: you could revert these lines that are only space changes.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517085</commentid>
    <comment_count>17</comment_count>
      <attachid>118272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 18:31:33 -0800</bug_when>
    <thetext>Comment on attachment 118272
Patch

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

New failing tests:
fast/events/touch/touch-gesture-scroll.html
fast/events/touch/gesture/gesture-scroll.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517408</commentid>
    <comment_count>18</comment_count>
      <attachid>118272</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-12-08 07:36:12 -0800</bug_when>
    <thetext>Comment on attachment 118272
Patch

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

the broken layout tests are probably because you need https://bugs.webkit.org/show_bug.cgi?id=67822 to land. You might want to pester me about that and mark this as blocked on that bug or add an explicit expectation referencing that bug.

&gt; Source/WebCore/platform/ScrollAnimator.cpp:133
&gt; +void ScrollAnimator::handleGestureEvent(const PlatformGestureEvent&amp; pge)

i&apos;ve been dinged on reviews with use of abbreviations like this. I&apos;d be good with it staying this way but the reviewer might still be sad.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:606
&gt; +        ScrollAnimator::handleGestureEvent(pge);

why not just call ScrollAnimator::handleGestureEvent explicitly inside the case? It would seem simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518248</commentid>
    <comment_count>19</comment_count>
    <who name="">vollick</who>
    <bug_when>2011-12-09 07:11:28 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 118272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118272&amp;action=review
&gt; 
&gt; the broken layout tests are probably because you need https://bugs.webkit.org/show_bug.cgi?id=67822 to land. You might want to pester me about that and mark this as blocked on that bug or add an explicit expectation referencing that bug.

It&apos;s true. If I merge my changes with your patch, these layout tests pass. I&apos;ve marked the bug as blocked on 67822.

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimator.cpp:133
&gt; &gt; +void ScrollAnimator::handleGestureEvent(const PlatformGestureEvent&amp; pge)
&gt; 
&gt; i&apos;ve been dinged on reviews with use of abbreviations like this. I&apos;d be good with it staying this way but the reviewer might still be sad.

Hopefully it&apos;s ok -- I was following the lead of other code in the file!

&gt; 
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:606
&gt; &gt; +        ScrollAnimator::handleGestureEvent(pge);
&gt; 
&gt; why not just call ScrollAnimator::handleGestureEvent explicitly inside the case? It would seem simpler.

It felt like a good idea to give ScrollAnimator a chance to handle the gesture event whenever ScrollAnimatorNone doesn&apos;t. ScrollAnimator happens to only care about scroll updates at the moment, but doing we&apos;re safe if ScrollAnimator decides to handle more gestures in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551836</commentid>
    <comment_count>20</comment_count>
    <who name="LFC">simophin</who>
    <bug_when>2012-02-07 23:31:12 -0800</bug_when>
    <thetext>&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:535
&gt; +    float velocity = orientation == VerticalScrollbar ? -pge.deltaY() : -pge.deltaX();

I don&apos;t think pge.deltaY() or page.deltaX() is velocity. You may have instance time divided to get a velocity.
Maybe we should add velocity as a field in PlatformGestureEvent so that when things like PlatformGestureRecognizer is detecting gesture from touch events, it can get velocity in each process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552101</commentid>
    <comment_count>21</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-02-08 07:16:01 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:535
&gt; &gt; +    float velocity = orientation == VerticalScrollbar ? -pge.deltaY() : -pge.deltaX();
&gt; 
&gt; I don&apos;t think pge.deltaY() or page.deltaX() is velocity. You may have instance time divided to get a velocity.
&gt; Maybe we should add velocity as a field in PlatformGestureEvent so that when things like PlatformGestureRecognizer is detecting gesture from touch events, it can get velocity in each process.

A few hopefully helpful points: 

AFAIK, all the code in WebKit &amp; chromium that uses pge.deltaY, deltaX assumes that they represent velocities when the pge is a GestureScrollEnd. Code that does not make this assumption (WebKit2 say) ignores these fields and computes the velocity from the sequence of wheel events.

PlatformGestureRecognizer is gone from WebKit. It was only used in Chromium but the functionality has been moved into the Chrome browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561548</commentid>
    <comment_count>22</comment_count>
      <attachid>118272</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 20:35:43 -0800</bug_when>
    <thetext>Comment on attachment 118272
Patch

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

handleGestureEvent() is dead and has been for some time: http://trac.webkit.org/changeset/107823, so this patch needs some updating.

Are you sure you want to put the fling animation curves right into ScrollAnimatorNone?  On android, for instance, we&apos;ll be pulling the fling animation curves by calling into a system library, so it might be nice if the fling animation curves were easily extractable.

&gt;&gt;&gt; Source/WebCore/platform/ScrollAnimator.cpp:133
&gt;&gt;&gt; +void ScrollAnimator::handleGestureEvent(const PlatformGestureEvent&amp; pge)
&gt;&gt; 
&gt;&gt; i&apos;ve been dinged on reviews with use of abbreviations like this. I&apos;d be good with it staying this way but the reviewer might still be sad.
&gt; 
&gt; Hopefully it&apos;s ok -- I was following the lead of other code in the file!

No, it&apos;s definitely not OK.  We pretty much never use abbreviations or acronyms in WebKit. http://www.webkit.org/coding/coding-style.html#names-full-words

&gt; Source/WebCore/platform/ScrollAnimator.cpp:139
&gt; +        float deltaX = (pge.deltaX() &lt; 0.f) ? max(pge.deltaX(),  -float(maxForwardScrollDelta.width())) : min(pge.deltaX(), float(maxBackwardScrollDelta.width()));

don&apos;t append &quot;.f&quot; - http://www.webkit.org/coding/coding-style.html#float-suffixes

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:59
&gt; +const double kDefaultFlingAcceleration = -2500.0; // pixels/second^2

the other constants are misnamed here too, but FYI we don&apos;t typically use the k prefix for constants, we just name them like normal variables.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:61
&gt; +static double getFlingPosition(double initialPosition, double initialVelocity, double acceleration, double t)

we very rarely use one-letter variable or parameter names. i think this would be better named &quot;time&quot;

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:63
&gt; +    double maxT = -initialVelocity / acceleration;

again, maxTime would be a better name - although it&apos;s not incredibly clear why this is a cap here. a comment might help

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:66
&gt; +    return initialPosition + t * (initialVelocity + 0.5f * acceleration * t);

no trailing &quot;f&quot;

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:346
&gt; +    m_startTime = m_lastAnimationTime = WTF::monotonicallyIncreasingTime();

don&apos;t put the &quot;WTF::&quot; here. &lt;wtf/CurrentTime.h&gt; puts this function into the global namespace with a using statement. this is the general pattern WTF uses, it&apos;s very rare to see an explicit WTF:: unless there&apos;s an ambiguity

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:528
&gt; +void ScrollAnimatorNone::fling(const PlatformGestureEvent&amp; pge)

pge needs to be renamed

&gt; Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp:994
&gt; +    double const maxT = 10.0; // a scroll better not take longer than 10 seconds.

no trailing &quot;.0&quot;

this variable name isn&apos;t ideal

&gt; Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp:997
&gt; +    double t;

don&apos;t use one-letter variable names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780185</commentid>
    <comment_count>23</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-11-30 09:53:18 -0800</bug_when>
    <thetext>Different approach taken.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117269</attachid>
            <date>2011-11-30 13:58:16 -0800</date>
            <delta_ts>2011-12-01 14:40:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73489-20111130165814.patch</filename>
            <type>text/plain</type>
            <size>10567</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY5MjZiNDJiYmY0NGQ5
YjY2YmI3NzMzODYwMTI4YWI5NTE0OGQ5OC4uMTgyMmYwOGQwNThlMThlNmJmMGNhN2NmZDdmN2Q4
MGExZGQ3MzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTMwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBmbGluZyBhbmlt
YXRpb24gc3VwcG9ydCB0byBTY3JvbGxBbmltYXRvck5vbmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgorICAgICAgICAoc3RkOjpHZXRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNE
YXRhOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjphbmltYXRlRmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JO
b25lOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpmbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorCiAy
MDExLTExLTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIGRlZmVycmVkIGJhY2tlbmQtPmZyb250LWVuZCBj
b21tYW5kcyBwcm9jZXNzaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKaW5kZXggMWY0Y2M0M2YxMjY1OGY3NWVhMWZiYWJmMTY2ZmU0NDUxMmJl
MGUwZi4uODcyYzY5MmQyMDgwMGI0YTc4OGFhZmEwZGZlNmI3YmYyMTRkMWIzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC01MCwxMiAr
NTAsMjUgQEAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIHsKIAogY29uc3QgZG91YmxlIGtGcmFtZVJhdGUgPSA2MDsKIGNvbnN0IGRvdWJs
ZSBrVGlja1RpbWUgPSAxIC8ga0ZyYW1lUmF0ZTsKIGNvbnN0IGRvdWJsZSBrTWluaW11bVRpbWVy
SW50ZXJ2YWwgPSAuMDAxOwogY29uc3QgZG91YmxlIGtab29tVGlja3MgPSAxMTsKK2NvbnN0IGRv
dWJsZSBrRGVmYXVsdEZsaW5nQWNjZWxlcmF0aW9uID0gLTQ1MDAuMDsgLy8gcGl4ZWxzL3NlY29u
ZF4yCisKK2RvdWJsZSBHZXRQb3NpdGlvbihkb3VibGUgaW5pdGlhbFBvc2l0aW9uLCBkb3VibGUg
aW5pdGlhbFZlbG9jaXR5LCBkb3VibGUgYWNjZWxlcmF0aW9uLCBkb3VibGUgdCkKK3sKKyAgICBk
b3VibGUgbWF4VCA9IC1pbml0aWFsVmVsb2NpdHkgLyBhY2NlbGVyYXRpb247CisgICAgaWYgKHQg
PiBtYXhUKQorICAgICAgICB0ID0gbWF4VDsKKyAgICByZXR1cm4gaW5pdGlhbFBvc2l0aW9uICsg
dCAqIChpbml0aWFsVmVsb2NpdHkgKyAwLjVmICogYWNjZWxlcmF0aW9uICogdCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxTY3JvbGxB
bmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWEpCiB7CkBAIC0yMzAsNiArMjQzLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OlBl
ckF4aXNEYXRhOjpyZXNldCgpCiAgICAgbV9yZWxlYXNlUG9zaXRpb24gPSAwOwogICAgIG1fcmVs
ZWFzZVRpbWUgPSAwOwogICAgIG1fcmVsZWFzZUN1cnZlID0gUXVhZHJhdGljOworICAgIG1fYW5p
bWF0aW9uTW9kZSA9IE5vbmU7CiB9CiAKIApAQCAtMzY2LDYgKzM4MCwzNSBAQCBib29sIFNjcm9s
bEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRU
aW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVy
QXhpc0RhdGE6OmFuaW1hdGVGbGluZyhkb3VibGUgY3VycmVudFRpbWUpCit7CisgICAgaWYgKGN1
cnJlbnRUaW1lIC0gbV9sYXN0QW5pbWF0aW9uVGltZSA8IGtNaW5pbXVtVGltZXJJbnRlcnZhbCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2xhc3RBbmltYXRpb25UaW1lID0gY3VycmVu
dFRpbWU7CisKKyAgICBkb3VibGUgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGlt
ZTsKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7CisgICAgICAgICptX2N1
cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0aW9uOworICAgICAgICByZXNldCgpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZmxvYXQgYWNjZWxlcmF0aW9uID0ga0Rl
ZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiAqIChtX3N0YXJ0VmVsb2NpdHkgPiAwID8gMSA6IC0xKTsK
KyAgICBmbG9hdCBuZXdQb3NpdGlvbiA9IEdldFBvc2l0aW9uKG1fc3RhcnRQb3NpdGlvbiwgbV9z
dGFydFZlbG9jaXR5LCBhY2NlbGVyYXRpb24sIGRlbHRhVGltZSk7CisKKyAgICBpZiAoZmFicyhu
ZXdQb3NpdGlvbiAtIG1fc3RhcnRQb3NpdGlvbikgPgorICAgICAgICBmYWJzKG1fZGVzaXJlZFBv
c2l0aW9uIC0gbV9zdGFydFBvc2l0aW9uKSkgeworICAgICAgICAvLyBXZSd2ZSBvdmVyc2hvdC4g
QWxsIGRvbmUuCisgICAgICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0aW9u
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKm1fY3VycmVudFBvc2l0aW9u
ID0gbmV3UG9zaXRpb247CisgICAgcmV0dXJuIHRydWU7Cit9CisKKwogdm9pZCBTY3JvbGxBbmlt
YXRvck5vbmU6OlBlckF4aXNEYXRhOjp1cGRhdGVWaXNpYmxlTGVuZ3RoKGludCB2aXNpYmxlTGVu
Z3RoKQogewogICAgIG1fdmlzaWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CkBAIC00NDgsNiAr
NDkxLDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIKIAogICAgIFBlckF4aXNEYXRhJiBkYXRh
ID0gKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKSA/IG1fdmVydGljYWxEYXRhIDog
bV9ob3Jpem9udGFsRGF0YTsKICAgICBib29sIG5lZWRUb1Njcm9sbCA9IGRhdGEudXBkYXRlRGF0
YUZyb21QYXJhbWV0ZXJzKHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXplLCBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCAmcGFyYW1ldGVycyk7CisgICAgZGF0YS5tX2Fu
aW1hdGlvbk1vZGUgPSBTY3JvbGw7CiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhbV9hbmltYXRp
b25UaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gZGF0YS5tX3N0YXJ0
VGltZTsKICAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRpb25UaW1lcik7CkBA
IC00NzEsNiArNTE1LDMxIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiB9CiAKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6ZmxpbmcoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBpZiAoIXBnZS5kZWx0YVgoKSAmJiAh
cGdlLmRlbHRhWSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbiA9IGZhYnMocGdlLmRlbHRhWCgpKSA+IGZhYnMocGdlLmRlbHRhWSgpKSA/
IEhvcml6b250YWxTY3JvbGxiYXIgOiBWZXJ0aWNhbFNjcm9sbGJhcjsKKyAgICBTY3JvbGxiYXIq
IHNjcm9sbGJhciA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gbV9zY3JvbGxh
YmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXIoKSA6IG1fc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250
YWxTY3JvbGxiYXIoKTsKKyAgICBmbG9hdCB2ZWxvY2l0eSA9IG9yaWVudGF0aW9uID09IFZlcnRp
Y2FsU2Nyb2xsYmFyID8gLXBnZS5kZWx0YVkoKSA6IC1wZ2UuZGVsdGFYKCk7CisgICAgaWYgKCFt
X3Njcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSkgeworICAgICAgICBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBTY3JvbGxCeVBpeGVsLCBzY3JvbGxiYXIt
PnBpeGVsU3RlcCgpLCB2ZWxvY2l0eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQ
ZXJBeGlzRGF0YSYgZGF0YSA9IChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgPyBt
X3ZlcnRpY2FsRGF0YSA6IG1faG9yaXpvbnRhbERhdGE7CisgICAgZGF0YS5tX3N0YXJ0VGltZSA9
IGRhdGEubV9sYXN0QW5pbWF0aW9uVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7CisgICAgZGF0YS5tX3N0YXJ0UG9zaXRpb24gPSAqKGRhdGEubV9jdXJyZW50UG9zaXRp
b24pOworICAgIGRhdGEubV9zdGFydFZlbG9jaXR5ID0gdmVsb2NpdHk7CisgICAgZGF0YS5tX2Fu
aW1hdGlvblRpbWUgPSAtZmFicyh2ZWxvY2l0eSkgLyBrRGVmYXVsdEZsaW5nQWNjZWxlcmF0aW9u
OworICAgIGZsb2F0IGFjY2VsZXJhdGlvbiA9IGtEZWZhdWx0RmxpbmdBY2NlbGVyYXRpb24gKiAo
ZGF0YS5tX3N0YXJ0VmVsb2NpdHkgPiAwID8gMSA6IC0xKTsKKyAgICBkYXRhLm1fZGVzaXJlZFBv
c2l0aW9uID0gR2V0UG9zaXRpb24oZGF0YS5tX3N0YXJ0UG9zaXRpb24sIGRhdGEubV9zdGFydFZl
bG9jaXR5LCBhY2NlbGVyYXRpb24sIGRhdGEubV9hbmltYXRpb25UaW1lKTsKKyAgICBkYXRhLm1f
YW5pbWF0aW9uTW9kZSA9IEZsaW5nOworICAgIG1fc3RhcnRUaW1lID0gZGF0YS5tX3N0YXJ0VGlt
ZTsKKyAgICBhbmltYXRpb25UaW1lckZpcmVkKCZtX2FuaW1hdGlvblRpbWVyKTsKK30KKwogdm9p
ZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBn
ZSkKIHsKICAgICBBU1NFUlQocGdlLnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91
YmxlVGFwVHlwZSk7CkBAIC01MTksMTAgKzU4OCwyNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9u
ZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCiAg
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAgICAgICAgem9v
bShwZ2UpOwogICAgICAgICBicmVhazsKLQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlNjcm9sbEVuZFR5cGU6IHsKKyAgICAgICAgZmxpbmcocGdlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsK
KyAgICAgICAgSW50U2l6ZSBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVh
LT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0
aW9uKCk7CisgICAgICAgIEludFNpemUgbWF4QmFja3dhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xs
YWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5taW5pbXVtU2Ny
b2xsUG9zaXRpb24oKTsKKyAgICAgICAgZmxvYXQgZGVsdGFYID0gKHBnZS5kZWx0YVgoKSA8IDAu
ZikgPyBtYXgocGdlLmRlbHRhWCgpLCAgLWZsb2F0KG1heEZvcndhcmRTY3JvbGxEZWx0YS53aWR0
aCgpKSkgOiBtaW4ocGdlLmRlbHRhWCgpLCBmbG9hdChtYXhCYWNrd2FyZFNjcm9sbERlbHRhLndp
ZHRoKCkpKTsKKyAgICAgICAgZmxvYXQgZGVsdGFZID0gKHBnZS5kZWx0YVkoKSA8IDAuZikgPyBt
YXgocGdlLmRlbHRhWSgpLCAgLWZsb2F0KG1heEZvcndhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSkp
IDogbWluKHBnZS5kZWx0YVkoKSwgZmxvYXQobWF4QmFja3dhcmRTY3JvbGxEZWx0YS5oZWlnaHQo
KSkpOworICAgICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gbV9zY3JvbGxhYmxlQXJlYS0+dmlz
aWJsZUNvbnRlbnRSZWN0KHRydWUpOworICAgICAgICBGbG9hdFBvaW50IG9mZnNldCA9IEZsb2F0
UG9pbnQoY29udGVudFJlY3QueCgpIC0gZGVsdGFYLCBjb250ZW50UmVjdC55KCkgLSBkZWx0YVkp
OworICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24ob2Zmc2V0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25U
eXBlOiB7CisgICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAvLyBUT0RPOiBhZGQgYW55IG90aGVyIGV2ZW50IHR5cGVzIHdlIHNo
b3VsZCBoYW5kbGUKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBUT0RPOiBhZGQgYW55IG90aGVy
IGV2ZW50IHR5cGVzIHdlIHNob3VsZCBoYW5kbGUKLSAgICAgICAgeyB9CisgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KICNlbmRpZgpAQCAtNTU4LDEwICs2NDQsMjYgQEAgdm9pZCBTY3JvbGxBbmlt
YXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiog
dGltZXIpCiAgICAgZG91YmxlIGRlbHRhVG9OZXh0RnJhbWUgPSBjZWlsKChjdXJyZW50VGltZSAt
IG1fc3RhcnRUaW1lKSAqIGtGcmFtZVJhdGUpIC8ga0ZyYW1lUmF0ZSAtIChjdXJyZW50VGltZSAt
IG1fc3RhcnRUaW1lKTsKIAogICAgIGJvb2wgY29udGludWVBbmltYXRpb24gPSBmYWxzZTsKLSAg
ICBpZiAobV9ob3Jpem9udGFsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX2hvcml6b250YWxEYXRhLmFu
aW1hdGVTY3JvbGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkKLSAgICAgICAgY29u
dGludWVBbmltYXRpb24gPSB0cnVlOwotICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGlt
ZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05l
eHRGcmFtZSkpCi0gICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKworICAgIFBlckF4
aXNEYXRhKiBkYXRhID0gMDsKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0YS5tX3N0YXJ0VGltZSkK
KyAgICAgICAgZGF0YSA9ICZtX2hvcml6b250YWxEYXRhOworICAgIGVsc2UgaWYgKG1fdmVydGlj
YWxEYXRhLm1fc3RhcnRUaW1lKQorICAgICAgICBkYXRhID0gJm1fdmVydGljYWxEYXRhOworCisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgc3dpdGNoIChkYXRhLT5tX2FuaW1hdGlvbk1vZGUpIHsK
KyAgICAgICAgY2FzZSBTY3JvbGw6CisgICAgICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IGRh
dGEtPmFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsaW5nOgorICAgICAgICAgICAgY29udGludWVB
bmltYXRpb24gPSBkYXRhLT5hbmltYXRlRmxpbmcoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZy
YW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Y29udGludWVBbmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQogCiAgICAgaWYgKG1fem9vbURhdGEubV9pc0FuaW1hdGluZykgewogI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5v
bmUuaAppbmRleCBmOTRkNTIzOWI3MTliNjIwMjRjMThiNDcxYjUxNTdiZDRjNTMxY2YyLi4yNDVi
MDcwMDJjOWJhNDllYmQzYzIwYTk0Zjc2OGZlZTY0YjQ2NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtMSwxMCArMSwxMCBAQAogLyoKICAq
IENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgog
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
ICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
ICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAK
ICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGZsaW5nKGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHpvb20oY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKQEAgLTU5LDYgKzYwLDEyIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAKKyAgICBlbnVtIEFuaW1hdGlvbk1vZGUgeworICAgICAgICBTY3JvbGwsCisgICAg
ICAgIEZsaW5nLAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIGVudW0gQ3VydmUgewogICAg
ICAgICBMaW5lYXIsCiAgICAgICAgIFF1YWRyYXRpYywKQEAgLTk2LDYgKzEwMyw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgdm9pZCByZXNldCgpOwogICAgICAgICBib29sIHVwZGF0ZURhdGFGcm9t
UGFyYW1ldGVycyhmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBmbG9hdCBzY3JvbGxhYmxl
U2l6ZSwgZG91YmxlIGN1cnJlbnRUaW1lLCBQYXJhbWV0ZXJzKik7CiAgICAgICAgIGJvb2wgYW5p
bWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUpOworICAgICAgICBib29sIGFuaW1hdGVGbGlu
Zyhkb3VibGUgY3VycmVudFRpbWUpOwogICAgICAgICB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGgo
aW50IHZpc2libGVMZW5ndGgpOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3VydmVBdChDdXJ2
ZSwgZG91YmxlIHQpOwpAQCAtMTI5LDYgKzEzNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3Vy
dmUgbV9yZWxlYXNlQ3VydmU7CiAKICAgICAgICAgaW50IG1fdmlzaWJsZUxlbmd0aDsKKyAgICAg
ICAgQW5pbWF0aW9uTW9kZSBtX2FuaW1hdGlvbk1vZGU7CiAgICAgfTsKIAogICAgIC8vIFdoaWxl
IHpvb21pbmcsIHNjYWxlLCBwb3NYIGFuZCBwb3NZIG5lZWQgdG8gc3RheSB0aWdodGx5IGNvdXBs
ZWQsIHNvIHVzZSBhIHNlcGFyYXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117493</attachid>
            <date>2011-12-01 14:40:55 -0800</date>
            <delta_ts>2011-12-01 15:11:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73489-20111201174053.patch</filename>
            <type>text/plain</type>
            <size>10462</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY5MjZiNDJiYmY0NGQ5
YjY2YmI3NzMzODYwMTI4YWI5NTE0OGQ5OC4uMTgyMmYwOGQwNThlMThlNmJmMGNhN2NmZDdmN2Q4
MGExZGQ3MzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTMwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBmbGluZyBhbmlt
YXRpb24gc3VwcG9ydCB0byBTY3JvbGxBbmltYXRvck5vbmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgorICAgICAgICAoc3RkOjpHZXRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNE
YXRhOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjphbmltYXRlRmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JO
b25lOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpmbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorCiAy
MDExLTExLTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIGRlZmVycmVkIGJhY2tlbmQtPmZyb250LWVuZCBj
b21tYW5kcyBwcm9jZXNzaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKaW5kZXggMWY0Y2M0M2YxMjY1OGY3NWVhMWZiYWJmMTY2ZmU0NDUxMmJl
MGUwZi4uMzI0MzFmZjFhMjJlNmUxOTJkOWFkNzA4YTkxMGY3NmNlNGI4MTFmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC01Niw2ICs1
NiwxNSBAQCBjb25zdCBkb3VibGUga0ZyYW1lUmF0ZSA9IDYwOwogY29uc3QgZG91YmxlIGtUaWNr
VGltZSA9IDEgLyBrRnJhbWVSYXRlOwogY29uc3QgZG91YmxlIGtNaW5pbXVtVGltZXJJbnRlcnZh
bCA9IC4wMDE7CiBjb25zdCBkb3VibGUga1pvb21UaWNrcyA9IDExOworY29uc3QgZG91YmxlIGtE
ZWZhdWx0RmxpbmdBY2NlbGVyYXRpb24gPSAtNDUwMC4wOyAvLyBwaXhlbHMvc2Vjb25kXjIKKwor
ZG91YmxlIEdldFBvc2l0aW9uKGRvdWJsZSBpbml0aWFsUG9zaXRpb24sIGRvdWJsZSBpbml0aWFs
VmVsb2NpdHksIGRvdWJsZSBhY2NlbGVyYXRpb24sIGRvdWJsZSB0KQoreworICAgIGRvdWJsZSBt
YXhUID0gLWluaXRpYWxWZWxvY2l0eSAvIGFjY2VsZXJhdGlvbjsKKyAgICBpZiAodCA+IG1heFQp
CisgICAgICAgIHQgPSBtYXhUOworICAgIHJldHVybiBpbml0aWFsUG9zaXRpb24gKyB0ICogKGlu
aXRpYWxWZWxvY2l0eSArIDAuNWYgKiBhY2NlbGVyYXRpb24gKiB0KTsKK30KIAogUGFzc093blB0
cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEpCiB7CkBAIC0yMzAsNiArMjM5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ck5vbmU6OlBlckF4aXNEYXRhOjpyZXNldCgpCiAgICAgbV9yZWxlYXNlUG9zaXRpb24gPSAwOwog
ICAgIG1fcmVsZWFzZVRpbWUgPSAwOwogICAgIG1fcmVsZWFzZUN1cnZlID0gUXVhZHJhdGljOwor
ICAgIG1fYW5pbWF0aW9uTW9kZSA9IE5vbmU7CiB9CiAKIApAQCAtMzY2LDYgKzM3NiwzNSBAQCBi
b29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoZG91Ymxl
IGN1cnJlbnRUaW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNjcm9sbEFuaW1hdG9y
Tm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVGbGluZyhkb3VibGUgY3VycmVudFRpbWUpCit7Cisg
ICAgaWYgKGN1cnJlbnRUaW1lIC0gbV9sYXN0QW5pbWF0aW9uVGltZSA8IGtNaW5pbXVtVGltZXJJ
bnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2xhc3RBbmltYXRpb25UaW1l
ID0gY3VycmVudFRpbWU7CisKKyAgICBkb3VibGUgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBt
X3N0YXJ0VGltZTsKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25UaW1lKSB7CisgICAg
ICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0aW9uOworICAgICAgICByZXNl
dCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZmxvYXQgYWNjZWxlcmF0
aW9uID0ga0RlZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiAqIChtX3N0YXJ0VmVsb2NpdHkgPiAwID8g
MSA6IC0xKTsKKyAgICBmbG9hdCBuZXdQb3NpdGlvbiA9IEdldFBvc2l0aW9uKG1fc3RhcnRQb3Np
dGlvbiwgbV9zdGFydFZlbG9jaXR5LCBhY2NlbGVyYXRpb24sIGRlbHRhVGltZSk7CisKKyAgICBp
ZiAoZmFicyhuZXdQb3NpdGlvbiAtIG1fc3RhcnRQb3NpdGlvbikgPgorICAgICAgICBmYWJzKG1f
ZGVzaXJlZFBvc2l0aW9uIC0gbV9zdGFydFBvc2l0aW9uKSkgeworICAgICAgICAvLyBXZSd2ZSBv
dmVyc2hvdC4gQWxsIGRvbmUuCisgICAgICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJl
ZFBvc2l0aW9uOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKm1fY3VycmVu
dFBvc2l0aW9uID0gbmV3UG9zaXRpb247CisgICAgcmV0dXJuIHRydWU7Cit9CisKKwogdm9pZCBT
Y3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjp1cGRhdGVWaXNpYmxlTGVuZ3RoKGludCB2
aXNpYmxlTGVuZ3RoKQogewogICAgIG1fdmlzaWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CkBA
IC00NDgsNiArNDg3LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbChTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIKIAogICAgIFBlckF4aXNE
YXRhJiBkYXRhID0gKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKSA/IG1fdmVydGlj
YWxEYXRhIDogbV9ob3Jpem9udGFsRGF0YTsKICAgICBib29sIG5lZWRUb1Njcm9sbCA9IGRhdGEu
dXBkYXRlRGF0YUZyb21QYXJhbWV0ZXJzKHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXpl
LCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCAmcGFyYW1ldGVycyk7CisgICAg
ZGF0YS5tX2FuaW1hdGlvbk1vZGUgPSBTY3JvbGw7CiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAh
bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gZGF0
YS5tX3N0YXJ0VGltZTsKICAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRpb25U
aW1lcik7CkBAIC00NzEsNiArNTExLDMxIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3Jv
bGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiB9CiAK
ICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6Zmxp
bmcoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBpZiAoIXBnZS5kZWx0
YVgoKSAmJiAhcGdlLmRlbHRhWSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZhYnMocGdlLmRlbHRhWCgpKSA+IGZhYnMocGdlLmRl
bHRhWSgpKSA/IEhvcml6b250YWxTY3JvbGxiYXIgOiBWZXJ0aWNhbFNjcm9sbGJhcjsKKyAgICBT
Y3JvbGxiYXIqIHNjcm9sbGJhciA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8g
bV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXIoKSA6IG1fc2Nyb2xsYWJsZUFyZWEt
Pmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBmbG9hdCB2ZWxvY2l0eSA9IG9yaWVudGF0aW9u
ID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gLXBnZS5kZWx0YVkoKSA6IC1wZ2UuZGVsdGFYKCk7Cisg
ICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSkgeworICAg
ICAgICBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBTY3JvbGxCeVBpeGVsLCBz
Y3JvbGxiYXItPnBpeGVsU3RlcCgpLCB2ZWxvY2l0eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBQZXJBeGlzRGF0YSYgZGF0YSA9IChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9s
bGJhcikgPyBtX3ZlcnRpY2FsRGF0YSA6IG1faG9yaXpvbnRhbERhdGE7CisgICAgZGF0YS5tX3N0
YXJ0VGltZSA9IGRhdGEubV9sYXN0QW5pbWF0aW9uVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CisgICAgZGF0YS5tX3N0YXJ0UG9zaXRpb24gPSAqKGRhdGEubV9jdXJy
ZW50UG9zaXRpb24pOworICAgIGRhdGEubV9zdGFydFZlbG9jaXR5ID0gdmVsb2NpdHk7CisgICAg
ZGF0YS5tX2FuaW1hdGlvblRpbWUgPSAtZmFicyh2ZWxvY2l0eSkgLyBrRGVmYXVsdEZsaW5nQWNj
ZWxlcmF0aW9uOworICAgIGZsb2F0IGFjY2VsZXJhdGlvbiA9IGtEZWZhdWx0RmxpbmdBY2NlbGVy
YXRpb24gKiAoZGF0YS5tX3N0YXJ0VmVsb2NpdHkgPiAwID8gMSA6IC0xKTsKKyAgICBkYXRhLm1f
ZGVzaXJlZFBvc2l0aW9uID0gR2V0UG9zaXRpb24oZGF0YS5tX3N0YXJ0UG9zaXRpb24sIGRhdGEu
bV9zdGFydFZlbG9jaXR5LCBhY2NlbGVyYXRpb24sIGRhdGEubV9hbmltYXRpb25UaW1lKTsKKyAg
ICBkYXRhLm1fYW5pbWF0aW9uTW9kZSA9IEZsaW5nOworICAgIG1fc3RhcnRUaW1lID0gZGF0YS5t
X3N0YXJ0VGltZTsKKyAgICBhbmltYXRpb25UaW1lckZpcmVkKCZtX2FuaW1hdGlvblRpbWVyKTsK
K30KKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIHBnZSkKIHsKICAgICBBU1NFUlQocGdlLnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6RG91YmxlVGFwVHlwZSk7CkBAIC01MTksMTAgKzU4NCwyNyBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yTm9uZTo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiBwZ2UpCiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAg
ICAgICAgem9vbShwZ2UpOwogICAgICAgICBicmVhazsKLQorICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6IHsKKyAgICAgICAgZmxpbmcocGdlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGU6IHsKKyAgICAgICAgSW50U2l6ZSBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9s
bGFibGVBcmVhLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEtPnNj
cm9sbFBvc2l0aW9uKCk7CisgICAgICAgIEludFNpemUgbWF4QmFja3dhcmRTY3JvbGxEZWx0YSA9
IG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5t
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgZmxvYXQgZGVsdGFYID0gKHBnZS5kZWx0
YVgoKSA8IDAuZikgPyBtYXgocGdlLmRlbHRhWCgpLCAgLWZsb2F0KG1heEZvcndhcmRTY3JvbGxE
ZWx0YS53aWR0aCgpKSkgOiBtaW4ocGdlLmRlbHRhWCgpLCBmbG9hdChtYXhCYWNrd2FyZFNjcm9s
bERlbHRhLndpZHRoKCkpKTsKKyAgICAgICAgZmxvYXQgZGVsdGFZID0gKHBnZS5kZWx0YVkoKSA8
IDAuZikgPyBtYXgocGdlLmRlbHRhWSgpLCAgLWZsb2F0KG1heEZvcndhcmRTY3JvbGxEZWx0YS5o
ZWlnaHQoKSkpIDogbWluKHBnZS5kZWx0YVkoKSwgZmxvYXQobWF4QmFja3dhcmRTY3JvbGxEZWx0
YS5oZWlnaHQoKSkpOworICAgICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gbV9zY3JvbGxhYmxl
QXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpOworICAgICAgICBGbG9hdFBvaW50IG9mZnNl
dCA9IEZsb2F0UG9pbnQoY29udGVudFJlY3QueCgpIC0gZGVsdGFYLCBjb250ZW50UmVjdC55KCkg
LSBkZWx0YVkpOworICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24ob2Zmc2V0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6
OlRhcERvd25UeXBlOiB7CisgICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICAvLyBUT0RPOiBhZGQgYW55IG90aGVyIGV2ZW50IHR5
cGVzIHdlIHNob3VsZCBoYW5kbGUKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBUT0RPOiBhZGQg
YW55IG90aGVyIGV2ZW50IHR5cGVzIHdlIHNob3VsZCBoYW5kbGUKLSAgICAgICAgeyB9CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KICNlbmRpZgpAQCAtNTU4LDEwICs2NDAsMjYgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0
b3JOb25lPiogdGltZXIpCiAgICAgZG91YmxlIGRlbHRhVG9OZXh0RnJhbWUgPSBjZWlsKChjdXJy
ZW50VGltZSAtIG1fc3RhcnRUaW1lKSAqIGtGcmFtZVJhdGUpIC8ga0ZyYW1lUmF0ZSAtIChjdXJy
ZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKIAogICAgIGJvb2wgY29udGludWVBbmltYXRpb24gPSBm
YWxzZTsKLSAgICBpZiAobV9ob3Jpem9udGFsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX2hvcml6b250
YWxEYXRhLmFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkKLSAg
ICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOwotICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5t
X3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsg
ZGVsdGFUb05leHRGcmFtZSkpCi0gICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKwor
ICAgIFBlckF4aXNEYXRhKiBkYXRhID0gMDsKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0YS5tX3N0
YXJ0VGltZSkKKyAgICAgICAgZGF0YSA9ICZtX2hvcml6b250YWxEYXRhOworICAgIGVsc2UgaWYg
KG1fdmVydGljYWxEYXRhLm1fc3RhcnRUaW1lKQorICAgICAgICBkYXRhID0gJm1fdmVydGljYWxE
YXRhOworCisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgc3dpdGNoIChkYXRhLT5tX2FuaW1hdGlv
bk1vZGUpIHsKKyAgICAgICAgY2FzZSBTY3JvbGw6CisgICAgICAgICAgICBjb250aW51ZUFuaW1h
dGlvbiA9IGRhdGEtPmFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1l
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsaW5nOgorICAgICAgICAgICAg
Y29udGludWVBbmltYXRpb24gPSBkYXRhLT5hbmltYXRlRmxpbmcoY3VycmVudFRpbWUgKyBkZWx0
YVRvTmV4dEZyYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgY29udGludWVBbmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKG1fem9vbURhdGEubV9pc0FuaW1hdGluZykgewog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvck5vbmUuaAppbmRleCBmOTRkNTIzOWI3MTliNjIwMjRjMThiNDcxYjUxNTdiZDRjNTMx
Y2YyLi4yNDViMDcwMDJjOWJhNDllYmQzYzIwYTk0Zjc2OGZlZTY0YjQ2NzgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtMSwxMCArMSwxMCBA
QAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0Ogot
ICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcg
QEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBv
aW50Jik7CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGZs
aW5nKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHpvb20o
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKQEAgLTU5LDYg
KzYwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKik7CiAKKyAgICBlbnVtIEFuaW1hdGlvbk1vZGUgeworICAgICAgICBTY3Jv
bGwsCisgICAgICAgIEZsaW5nLAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIGVudW0gQ3Vy
dmUgewogICAgICAgICBMaW5lYXIsCiAgICAgICAgIFF1YWRyYXRpYywKQEAgLTk2LDYgKzEwMyw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZXNldCgpOwogICAgICAgICBib29sIHVwZGF0
ZURhdGFGcm9tUGFyYW1ldGVycyhmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBmbG9hdCBz
Y3JvbGxhYmxlU2l6ZSwgZG91YmxlIGN1cnJlbnRUaW1lLCBQYXJhbWV0ZXJzKik7CiAgICAgICAg
IGJvb2wgYW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUpOworICAgICAgICBib29sIGFu
aW1hdGVGbGluZyhkb3VibGUgY3VycmVudFRpbWUpOwogICAgICAgICB2b2lkIHVwZGF0ZVZpc2li
bGVMZW5ndGgoaW50IHZpc2libGVMZW5ndGgpOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3Vy
dmVBdChDdXJ2ZSwgZG91YmxlIHQpOwpAQCAtMTI5LDYgKzEzNyw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgQ3VydmUgbV9yZWxlYXNlQ3VydmU7CiAKICAgICAgICAgaW50IG1fdmlzaWJsZUxlbmd0
aDsKKyAgICAgICAgQW5pbWF0aW9uTW9kZSBtX2FuaW1hdGlvbk1vZGU7CiAgICAgfTsKIAogICAg
IC8vIFdoaWxlIHpvb21pbmcsIHNjYWxlLCBwb3NYIGFuZCBwb3NZIG5lZWQgdG8gc3RheSB0aWdo
dGx5IGNvdXBsZWQsIHNvIHVzZSBhIHNlcGFyYXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117499</attachid>
            <date>2011-12-01 15:12:00 -0800</date>
            <delta_ts>2011-12-07 12:59:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73489-20111201181159.patch</filename>
            <type>text/plain</type>
            <size>10484</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY5MjZiNDJiYmY0NGQ5
YjY2YmI3NzMzODYwMTI4YWI5NTE0OGQ5OC4uMTgyMmYwOGQwNThlMThlNmJmMGNhN2NmZDdmN2Q4
MGExZGQ3MzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTMwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBmbGluZyBhbmlt
YXRpb24gc3VwcG9ydCB0byBTY3JvbGxBbmltYXRvck5vbmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgorICAgICAgICAoc3RkOjpHZXRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNE
YXRhOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjphbmltYXRlRmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JO
b25lOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpmbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorCiAy
MDExLTExLTMwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIGRlZmVycmVkIGJhY2tlbmQtPmZyb250LWVuZCBj
b21tYW5kcyBwcm9jZXNzaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAKaW5kZXggMWY0Y2M0M2YxMjY1OGY3NWVhMWZiYWJmMTY2ZmU0NDUxMmJl
MGUwZi4uNWFmMTFiMzZkN2ZkYWMxYmRjZTA5N2ExNmFkYzRhMTM4M2ViYWVhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC01Niw2ICs1
NiwxNSBAQCBjb25zdCBkb3VibGUga0ZyYW1lUmF0ZSA9IDYwOwogY29uc3QgZG91YmxlIGtUaWNr
VGltZSA9IDEgLyBrRnJhbWVSYXRlOwogY29uc3QgZG91YmxlIGtNaW5pbXVtVGltZXJJbnRlcnZh
bCA9IC4wMDE7CiBjb25zdCBkb3VibGUga1pvb21UaWNrcyA9IDExOworY29uc3QgZG91YmxlIGtE
ZWZhdWx0RmxpbmdBY2NlbGVyYXRpb24gPSAtNDUwMC4wOyAvLyBwaXhlbHMvc2Vjb25kXjIKKwor
c3RhdGljIGRvdWJsZSBnZXRGbGluZ1Bvc2l0aW9uKGRvdWJsZSBpbml0aWFsUG9zaXRpb24sIGRv
dWJsZSBpbml0aWFsVmVsb2NpdHksIGRvdWJsZSBhY2NlbGVyYXRpb24sIGRvdWJsZSB0KQorewor
ICAgIGRvdWJsZSBtYXhUID0gLWluaXRpYWxWZWxvY2l0eSAvIGFjY2VsZXJhdGlvbjsKKyAgICBp
ZiAodCA+IG1heFQpCisgICAgICAgIHQgPSBtYXhUOworICAgIHJldHVybiBpbml0aWFsUG9zaXRp
b24gKyB0ICogKGluaXRpYWxWZWxvY2l0eSArIDAuNWYgKiBhY2NlbGVyYXRpb24gKiB0KTsKK30K
IAogUGFzc093blB0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CkBAIC0yMzAsNiArMjM5LDcgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjpyZXNldCgpCiAgICAgbV9yZWxlYXNlUG9z
aXRpb24gPSAwOwogICAgIG1fcmVsZWFzZVRpbWUgPSAwOwogICAgIG1fcmVsZWFzZUN1cnZlID0g
UXVhZHJhdGljOworICAgIG1fYW5pbWF0aW9uTW9kZSA9IE5vbmU7CiB9CiAKIApAQCAtMzY2LDYg
KzM3NiwzNSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVT
Y3JvbGwoZG91YmxlIGN1cnJlbnRUaW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNj
cm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVGbGluZyhkb3VibGUgY3VycmVu
dFRpbWUpCit7CisgICAgaWYgKGN1cnJlbnRUaW1lIC0gbV9sYXN0QW5pbWF0aW9uVGltZSA8IGtN
aW5pbXVtVGltZXJJbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2xhc3RB
bmltYXRpb25UaW1lID0gY3VycmVudFRpbWU7CisKKyAgICBkb3VibGUgZGVsdGFUaW1lID0gY3Vy
cmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRpb25U
aW1lKSB7CisgICAgICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0aW9uOwor
ICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZmxv
YXQgYWNjZWxlcmF0aW9uID0ga0RlZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiAqIChtX3N0YXJ0VmVs
b2NpdHkgPiAwID8gMSA6IC0xKTsKKyAgICBmbG9hdCBuZXdQb3NpdGlvbiA9IGdldEZsaW5nUG9z
aXRpb24obV9zdGFydFBvc2l0aW9uLCBtX3N0YXJ0VmVsb2NpdHksIGFjY2VsZXJhdGlvbiwgZGVs
dGFUaW1lKTsKKworICAgIGlmIChmYWJzKG5ld1Bvc2l0aW9uIC0gbV9zdGFydFBvc2l0aW9uKSA+
CisgICAgICAgIGZhYnMobV9kZXNpcmVkUG9zaXRpb24gLSBtX3N0YXJ0UG9zaXRpb24pKSB7Cisg
ICAgICAgIC8vIFdlJ3ZlIG92ZXJzaG90LiBBbGwgZG9uZS4KKyAgICAgICAgKm1fY3VycmVudFBv
c2l0aW9uID0gbV9kZXNpcmVkUG9zaXRpb247CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCiB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0ZVZp
c2libGVMZW5ndGgoaW50IHZpc2libGVMZW5ndGgpCiB7CiAgICAgbV92aXNpYmxlTGVuZ3RoID0g
dmlzaWJsZUxlbmd0aDsKQEAgLTQ0OCw2ICs0ODcsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9u
ZTo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxh
cgogCiAgICAgUGVyQXhpc0RhdGEmIGRhdGEgPSAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3Jv
bGxiYXIpID8gbV92ZXJ0aWNhbERhdGEgOiBtX2hvcml6b250YWxEYXRhOwogICAgIGJvb2wgbmVl
ZFRvU2Nyb2xsID0gZGF0YS51cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMoc3RlcCwgbXVsdGlwbGll
ciwgc2Nyb2xsYWJsZVNpemUsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksICZw
YXJhbWV0ZXJzKTsKKyAgICBkYXRhLm1fYW5pbWF0aW9uTW9kZSA9IFNjcm9sbDsKICAgICBpZiAo
bmVlZFRvU2Nyb2xsICYmICFtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAg
bV9zdGFydFRpbWUgPSBkYXRhLm1fc3RhcnRUaW1lOwogICAgICAgICBhbmltYXRpb25UaW1lckZp
cmVkKCZtX2FuaW1hdGlvblRpbWVyKTsKQEAgLTQ3MSw2ICs1MTEsMzEgQEAgdm9pZCBTY3JvbGxB
bmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBv
aW50JiBvZmZzZXQKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK3ZvaWQgU2Nyb2xs
QW5pbWF0b3JOb25lOjpmbGluZyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQorewor
ICAgIGlmICghcGdlLmRlbHRhWCgpICYmICFwZ2UuZGVsdGFZKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gZmFicyhwZ2UuZGVsdGFY
KCkpID4gZmFicyhwZ2UuZGVsdGFZKCkpID8gSG9yaXpvbnRhbFNjcm9sbGJhciA6IFZlcnRpY2Fs
U2Nyb2xsYmFyOworICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gb3JpZW50YXRpb24gPT0gVmVy
dGljYWxTY3JvbGxiYXIgPyBtX3Njcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcigpIDog
bV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAgIGZsb2F0IHZlbG9j
aXR5ID0gb3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIgPyAtcGdlLmRlbHRhWSgpIDog
LXBnZS5kZWx0YVgoKTsKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9y
RW5hYmxlZCgpKSB7CisgICAgICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwob3JpZW50YXRpb24s
IFNjcm9sbEJ5UGl4ZWwsIHNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIHZlbG9jaXR5KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFBlckF4aXNEYXRhJiBkYXRhID0gKG9yaWVudGF0aW9u
ID09IFZlcnRpY2FsU2Nyb2xsYmFyKSA/IG1fdmVydGljYWxEYXRhIDogbV9ob3Jpem9udGFsRGF0
YTsKKyAgICBkYXRhLm1fc3RhcnRUaW1lID0gZGF0YS5tX2xhc3RBbmltYXRpb25UaW1lID0gV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBkYXRhLm1fc3RhcnRQb3NpdGlv
biA9ICooZGF0YS5tX2N1cnJlbnRQb3NpdGlvbik7CisgICAgZGF0YS5tX3N0YXJ0VmVsb2NpdHkg
PSB2ZWxvY2l0eTsKKyAgICBkYXRhLm1fYW5pbWF0aW9uVGltZSA9IC1mYWJzKHZlbG9jaXR5KSAv
IGtEZWZhdWx0RmxpbmdBY2NlbGVyYXRpb247CisgICAgZmxvYXQgYWNjZWxlcmF0aW9uID0ga0Rl
ZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiAqIChkYXRhLm1fc3RhcnRWZWxvY2l0eSA+IDAgPyAxIDog
LTEpOworICAgIGRhdGEubV9kZXNpcmVkUG9zaXRpb24gPSBnZXRGbGluZ1Bvc2l0aW9uKGRhdGEu
bV9zdGFydFBvc2l0aW9uLCBkYXRhLm1fc3RhcnRWZWxvY2l0eSwgYWNjZWxlcmF0aW9uLCBkYXRh
Lm1fYW5pbWF0aW9uVGltZSk7CisgICAgZGF0YS5tX2FuaW1hdGlvbk1vZGUgPSBGbGluZzsKKyAg
ICBtX3N0YXJ0VGltZSA9IGRhdGEubV9zdGFydFRpbWU7CisgICAgYW5pbWF0aW9uVGltZXJGaXJl
ZCgmbV9hbmltYXRpb25UaW1lcik7Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjp6b29t
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCiB7CiAgICAgQVNTRVJUKHBnZS50eXBl
KCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpOwpAQCAtNTE5LDEwICs1
ODQsMjcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVudChjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OkRvdWJsZVRhcFR5cGU6CiAgICAgICAgIHpvb20ocGdlKTsKICAgICAgICAgYnJlYWs7Ci0K
KyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOiB7CisgICAgICAg
IGZsaW5nKHBnZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CisgICAgICAgIEludFNpemUgbWF4Rm9yd2Fy
ZFNjcm9sbERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkg
LSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgICAgICBJbnRTaXplIG1h
eEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigp
IC0gbV9zY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIGZs
b2F0IGRlbHRhWCA9IChwZ2UuZGVsdGFYKCkgPCAwLmYpID8gbWF4KHBnZS5kZWx0YVgoKSwgIC1m
bG9hdChtYXhGb3J3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSkpIDogbWluKHBnZS5kZWx0YVgoKSwg
ZmxvYXQobWF4QmFja3dhcmRTY3JvbGxEZWx0YS53aWR0aCgpKSk7CisgICAgICAgIGZsb2F0IGRl
bHRhWSA9IChwZ2UuZGVsdGFZKCkgPCAwLmYpID8gbWF4KHBnZS5kZWx0YVkoKSwgIC1mbG9hdCht
YXhGb3J3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkpKSA6IG1pbihwZ2UuZGVsdGFZKCksIGZsb2F0
KG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkpKTsKKyAgICAgICAgSW50UmVjdCBjb250
ZW50UmVjdCA9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKKyAg
ICAgICAgRmxvYXRQb2ludCBvZmZzZXQgPSBGbG9hdFBvaW50KGNvbnRlbnRSZWN0LngoKSAtIGRl
bHRhWCwgY29udGVudFJlY3QueSgpIC0gZGVsdGFZKTsKKyAgICAgICAgc2Nyb2xsVG9PZmZzZXRX
aXRob3V0QW5pbWF0aW9uKG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZTogeworICAgICAgICBzdG9wQW5pbWF0
aW9uVGltZXJJZk5lZWRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgLy8gVE9ETzog
YWRkIGFueSBvdGhlciBldmVudCB0eXBlcyB3ZSBzaG91bGQgaGFuZGxlCiAgICAgZGVmYXVsdDoK
LSAgICAgICAgLy8gVE9ETzogYWRkIGFueSBvdGhlciBldmVudCB0eXBlcyB3ZSBzaG91bGQgaGFu
ZGxlCi0gICAgICAgIHsgfQorICAgICAgICBicmVhazsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTU1
OCwxMCArNjQwLDI2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZp
cmVkKFRpbWVyPFNjcm9sbEFuaW1hdG9yTm9uZT4qIHRpbWVyKQogICAgIGRvdWJsZSBkZWx0YVRv
TmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRl
KSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSk7CiAKICAgICBib29s
IGNvbnRpbnVlQW5pbWF0aW9uID0gZmFsc2U7Ci0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEubV9z
dGFydFRpbWUgJiYgbV9ob3Jpem9udGFsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsg
ZGVsdGFUb05leHRGcmFtZSkpCi0gICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKLSAg
ICBpZiAobV92ZXJ0aWNhbERhdGEubV9zdGFydFRpbWUgJiYgbV92ZXJ0aWNhbERhdGEuYW5pbWF0
ZVNjcm9sbChjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUpKQotICAgICAgICBjb250aW51
ZUFuaW1hdGlvbiA9IHRydWU7CisKKyAgICBQZXJBeGlzRGF0YSogZGF0YSA9IDA7CisgICAgaWYg
KG1faG9yaXpvbnRhbERhdGEubV9zdGFydFRpbWUpCisgICAgICAgIGRhdGEgPSAmbV9ob3Jpem9u
dGFsRGF0YTsKKyAgICBlbHNlIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSkKKyAgICAg
ICAgZGF0YSA9ICZtX3ZlcnRpY2FsRGF0YTsKKworICAgIGlmIChkYXRhKSB7CisgICAgICAgIHN3
aXRjaCAoZGF0YS0+bV9hbmltYXRpb25Nb2RlKSB7CisgICAgICAgIGNhc2UgU2Nyb2xsOgorICAg
ICAgICAgICAgY29udGludWVBbmltYXRpb24gPSBkYXRhLT5hbmltYXRlU2Nyb2xsKGN1cnJlbnRU
aW1lICsgZGVsdGFUb05leHRGcmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBGbGluZzoKKyAgICAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gZGF0YS0+YW5pbWF0ZUZs
aW5nKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gZmFsc2U7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChtX3pvb21E
YXRhLm1faXNBbmltYXRpbmcpIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggZjk0ZDUyMzliNzE5YjYy
MDI0YzE4YjQ3MWI1MTU3YmQ0YzUzMWNmMi4uMjQ1YjA3MDAyYzliYTQ5ZWJkM2MyMGE5NGY3Njhm
ZWU2NGI0Njc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmgKQEAgLTEsMTAgKzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAor
ICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTUxLDYg
KzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQorICAgIHZpcnR1YWwgdm9pZCBmbGluZyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwog
ICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYpOwogI2VuZGlmCkBAIC01OSw2ICs2MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCisgICAgZW51bSBBbmltYXRp
b25Nb2RlIHsKKyAgICAgICAgU2Nyb2xsLAorICAgICAgICBGbGluZywKKyAgICAgICAgTm9uZQor
ICAgIH07CisKICAgICBlbnVtIEN1cnZlIHsKICAgICAgICAgTGluZWFyLAogICAgICAgICBRdWFk
cmF0aWMsCkBAIC05Niw2ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKICAgICAgICAgYm9vbCB1cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMoZmxvYXQgc3RlcCwgZmxv
YXQgbXVsdGlwbGllciwgZmxvYXQgc2Nyb2xsYWJsZVNpemUsIGRvdWJsZSBjdXJyZW50VGltZSwg
UGFyYW1ldGVycyopOwogICAgICAgICBib29sIGFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRU
aW1lKTsKKyAgICAgICAgYm9vbCBhbmltYXRlRmxpbmcoZG91YmxlIGN1cnJlbnRUaW1lKTsKICAg
ICAgICAgdm9pZCB1cGRhdGVWaXNpYmxlTGVuZ3RoKGludCB2aXNpYmxlTGVuZ3RoKTsKIAogICAg
ICAgICBzdGF0aWMgZG91YmxlIGN1cnZlQXQoQ3VydmUsIGRvdWJsZSB0KTsKQEAgLTEyOSw2ICsx
MzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEN1cnZlIG1fcmVsZWFzZUN1cnZlOwogCiAgICAg
ICAgIGludCBtX3Zpc2libGVMZW5ndGg7CisgICAgICAgIEFuaW1hdGlvbk1vZGUgbV9hbmltYXRp
b25Nb2RlOwogICAgIH07CiAKICAgICAvLyBXaGlsZSB6b29taW5nLCBzY2FsZSwgcG9zWCBhbmQg
cG9zWSBuZWVkIHRvIHN0YXkgdGlnaHRseSBjb3VwbGVkLCBzbyB1c2UgYSBzZXBhcmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118256</attachid>
            <date>2011-12-07 12:59:48 -0800</date>
            <delta_ts>2011-12-07 13:54:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73489-20111207155947.patch</filename>
            <type>text/plain</type>
            <size>16725</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRlNDgyNDExMzY4ZTgz
ZTFlZTAyZjI3YmMzOTQ3ZWE1ZTliN2ZhYi4uNDFjMmQxZGU4MjhiNGQ1NDU5YTM5MDc1YjA5YmFh
YzY2ZGNhOTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTMwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBmbGluZyBhbmlt
YXRpb24gc3VwcG9ydCB0byBTY3JvbGxBbmltYXRvck5vbmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgZmxpbmcgYWRkZWQgdG8gU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcAorCisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcDoKKyAgICAgICAgKHN0ZDo6R2V0
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlz
RGF0YTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJB
eGlzRGF0YTo6YW5pbWF0ZUZsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
Tm9uZTo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6Zmxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpoYW5kbGVHZXN0dXJl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25U
aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaDoKKwog
MjAxMS0xMi0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICA8
dmlkZW8+IGVsZW1lbnRzIHNob3VsZCBkaXNhYmxlIHRoZSBzeXN0ZW0gYW5kIGRpc3BsYXkgc2xl
ZXAgd2hlbiBwbGF5aW5nIG9uIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggOGVjZDM1YTViNGE2YTE2ODBmN2JiMWM2OTdkNTdlMmZiZjRhYTg4MC4uNTBhMWEyNmEz
MTJmZDJkNTI4ZTAxMGMzMTE3NzQ3N2YwMGM4YzgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMjIzMCw4ICsyMjMwLDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQog
ICAgIC8vIGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKICAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50
eXBlKCkpIHsKLSAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZTogewog
ICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIG5vdCBoaXQgdGVzdCBtdWx0
aXBsZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhhcyBiZWVuIGNvcnJlY3RlZCBhcyBzdWdnZXN0
ZWQgYWJvdmUuCiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0
b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwpAQCAtMjI0
MiwxNSArMjI0MCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgaGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogewotICAg
ICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVs
dGlwbGllcjsKLSAgICAgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBpbnRlcmltIGltcGxlbWVu
dGF0aW9uIG9uY2UgdGhlIGFib3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJlc3NlZC4KLSAgICAgICAg
SW50UG9pbnQgcG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQu
cG9zaXRpb24oKS55KCkpOwotICAgICAgICBJbnRQb2ludCBnbG9iYWxQb2ludChnZXN0dXJlRXZl
bnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLnko
KSk7Ci0gICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHBvaW50
LCBnbG9iYWxQb2ludCwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZ
KCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIHRpY2tEaXZpc29yLCBnZXN0dXJlRXZlbnQuZGVs
dGFZKCkgLyB0aWNrRGl2aXNvciwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGdlc3R1cmVFdmVu
dC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5
KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOwotICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5
bnRoZXRpY1doZWVsRXZlbnQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgY2Fz
ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZToKKyAgICBjYXNlIFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpEb3VibGVUYXBUeXBlOgogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEJlZ2luVHlwZToKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGY3M2M1
Y2MwNjQzM2MzZWE2ZGQ1NWFlMTEzYzAyOTQ2MjliNGE4ODQuLjZhMmNkZGM3NWY4YTA0YmRlY2Y0
NWNiY2NhNGE4ZTgwOGYwNjIzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5jcHAKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisj
aW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjYsOCArMTMwLDI2IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBlKQogfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotdm9pZCBTY3JvbGxBbmltYXRv
cjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3I6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgcGdlKQogeworICAgIHN3aXRjaCAocGdlLnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICAgICAgSW50U2l6ZSBtYXhG
b3J3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5tYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIEludFNp
emUgbWF4QmFja3dhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0
aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsKKyAgICAg
ICAgZmxvYXQgZGVsdGFYID0gKHBnZS5kZWx0YVgoKSA8IDAuZikgPyBtYXgocGdlLmRlbHRhWCgp
LCAgLWZsb2F0KG1heEZvcndhcmRTY3JvbGxEZWx0YS53aWR0aCgpKSkgOiBtaW4ocGdlLmRlbHRh
WCgpLCBmbG9hdChtYXhCYWNrd2FyZFNjcm9sbERlbHRhLndpZHRoKCkpKTsKKyAgICAgICAgZmxv
YXQgZGVsdGFZID0gKHBnZS5kZWx0YVkoKSA8IDAuZikgPyBtYXgocGdlLmRlbHRhWSgpLCAgLWZs
b2F0KG1heEZvcndhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSkpIDogbWluKHBnZS5kZWx0YVkoKSwg
ZmxvYXQobWF4QmFja3dhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSkpOworICAgICAgICBJbnRSZWN0
IGNvbnRlbnRSZWN0ID0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUp
OworICAgICAgICBGbG9hdFBvaW50IG9mZnNldCA9IEZsb2F0UG9pbnQoY29udGVudFJlY3QueCgp
IC0gZGVsdGFYLCBjb250ZW50UmVjdC55KCkgLSBkZWx0YVkpOworICAgICAgICBzY3JvbGxUb09m
ZnNldFdpdGhvdXRBbmltYXRpb24ob2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CisgICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
VGFwRG93blR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZToKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCmluZGV4IDFmNGNjNDNmMTI2NThmNzVlYTFmYmFi
ZjE2NmZlNDQ1MTJiZTBlMGYuLmQ0ZGI0MTQyM2E4MmRmNmY1NWY3MTg4ZmRkYWM1MDVhMzM5M2Vl
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9u
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNw
cApAQCAtNTYsNiArNTYsMTUgQEAgY29uc3QgZG91YmxlIGtGcmFtZVJhdGUgPSA2MDsKIGNvbnN0
IGRvdWJsZSBrVGlja1RpbWUgPSAxIC8ga0ZyYW1lUmF0ZTsKIGNvbnN0IGRvdWJsZSBrTWluaW11
bVRpbWVySW50ZXJ2YWwgPSAuMDAxOwogY29uc3QgZG91YmxlIGtab29tVGlja3MgPSAxMTsKK2Nv
bnN0IGRvdWJsZSBrRGVmYXVsdEZsaW5nQWNjZWxlcmF0aW9uID0gLTI1MDAuMDsgLy8gcGl4ZWxz
L3NlY29uZF4yCisKK3N0YXRpYyBkb3VibGUgZ2V0RmxpbmdQb3NpdGlvbihkb3VibGUgaW5pdGlh
bFBvc2l0aW9uLCBkb3VibGUgaW5pdGlhbFZlbG9jaXR5LCBkb3VibGUgYWNjZWxlcmF0aW9uLCBk
b3VibGUgdCkKK3sKKyAgICBkb3VibGUgbWF4VCA9IC1pbml0aWFsVmVsb2NpdHkgLyBhY2NlbGVy
YXRpb247CisgICAgaWYgKHQgPiBtYXhUKQorICAgICAgICB0ID0gbWF4VDsKKyAgICByZXR1cm4g
aW5pdGlhbFBvc2l0aW9uICsgdCAqIChpbml0aWFsVmVsb2NpdHkgKyAwLjVmICogYWNjZWxlcmF0
aW9uICogdCk7Cit9CiAKIFBhc3NPd25QdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewpAQCAtMjMwLDYgKzIz
OSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6cmVzZXQoKQogICAg
IG1fcmVsZWFzZVBvc2l0aW9uID0gMDsKICAgICBtX3JlbGVhc2VUaW1lID0gMDsKICAgICBtX3Jl
bGVhc2VDdXJ2ZSA9IFF1YWRyYXRpYzsKKyAgICBtX2FuaW1hdGlvbk1vZGUgPSBOb25lOwogfQog
CiAKQEAgLTMzMSw2ICszNDEsMjAgQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNE
YXRhOjp1cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMoZmxvYXQgc3RlcCwgZmxvYXQKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjp1cGRh
dGVEYXRhRnJvbUZsaW5nUGFyYW1ldGVycyhmbG9hdCB2ZWxvY2l0eSkKK3sKKyAgICBtX3N0YXJ0
VGltZSA9IG1fbGFzdEFuaW1hdGlvblRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworICAgIG1fc3RhcnRQb3NpdGlvbiA9ICoobV9jdXJyZW50UG9zaXRpb24pOworICAg
IG1fc3RhcnRWZWxvY2l0eSA9IG1fY3VycmVudFZlbG9jaXR5ID0gdmVsb2NpdHk7CisgICAgbV9h
bmltYXRpb25UaW1lID0gLWZhYnModmVsb2NpdHkpIC8ga0RlZmF1bHRGbGluZ0FjY2VsZXJhdGlv
bjsKKyAgICBmbG9hdCBhY2NlbGVyYXRpb24gPSBrRGVmYXVsdEZsaW5nQWNjZWxlcmF0aW9uICog
KG1fc3RhcnRWZWxvY2l0eSA+IDAgPyAxIDogLTEpOworICAgIG1fZGVzaXJlZFBvc2l0aW9uID0g
Z2V0RmxpbmdQb3NpdGlvbihtX3N0YXJ0UG9zaXRpb24sIG1fc3RhcnRWZWxvY2l0eSwgYWNjZWxl
cmF0aW9uLCBtX2FuaW1hdGlvblRpbWUpOworICAgIGlmIChtX2Rlc2lyZWRQb3NpdGlvbiA9PSBt
X3N0YXJ0UG9zaXRpb24pCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hbmltYXRpb25Nb2Rl
ID0gRmxpbmc7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIEZJWE1FOiBBZGQgaW4gamFuayBk
ZXRlY3Rpb24gdHJhY2UgZXZlbnRzIGludG8gdGhpcyBmdW5jdGlvbi4KIGJvb2wgU2Nyb2xsQW5p
bWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUp
CiB7CkBAIC0zNjYsNiArMzkwLDM1IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlz
RGF0YTo6YW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZUZsaW5n
KGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBpZiAoY3VycmVudFRpbWUgLSBtX2xhc3RBbmlt
YXRpb25UaW1lIDwga01pbmltdW1UaW1lckludGVydmFsKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIG1fbGFzdEFuaW1hdGlvblRpbWUgPSBjdXJyZW50VGltZTsKKworICAgIGRvdWJsZSBk
ZWx0YVRpbWUgPSBjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lOworICAgIGlmIChkZWx0YVRpbWUg
PiBtX2FuaW1hdGlvblRpbWUpIHsKKyAgICAgICAgKm1fY3VycmVudFBvc2l0aW9uID0gbV9kZXNp
cmVkUG9zaXRpb247CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBmbG9hdCBhY2NlbGVyYXRpb24gPSBrRGVmYXVsdEZsaW5nQWNjZWxlcmF0aW9u
ICogKG1fc3RhcnRWZWxvY2l0eSA+IDAgPyAxIDogLTEpOworICAgIGZsb2F0IG5ld1Bvc2l0aW9u
ID0gZ2V0RmxpbmdQb3NpdGlvbihtX3N0YXJ0UG9zaXRpb24sIG1fc3RhcnRWZWxvY2l0eSwgYWNj
ZWxlcmF0aW9uLCBkZWx0YVRpbWUpOworICAgIG1fY3VycmVudFZlbG9jaXR5ID0gbV9zdGFydFZl
bG9jaXR5ICsgYWNjZWxlcmF0aW9uICogZGVsdGFUaW1lOworCisgICAgaWYgKGZhYnMobmV3UG9z
aXRpb24gLSBtX3N0YXJ0UG9zaXRpb24pICsgMC41ID4KKyAgICAgICAgZmFicyhtX2Rlc2lyZWRQ
b3NpdGlvbiAtIG1fc3RhcnRQb3NpdGlvbikpIHsKKyAgICAgICAgLy8gV2UndmUgb3ZlcnNob3Qu
IEFsbCBkb25lLgorICAgICAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBtX2Rlc2lyZWRQb3NpdGlv
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICptX2N1cnJlbnRQb3NpdGlv
biA9IG5ld1Bvc2l0aW9uOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFNjcm9sbEFuaW1h
dG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0ZVZpc2libGVMZW5ndGgoaW50IHZpc2libGVMZW5n
dGgpCiB7CiAgICAgbV92aXNpYmxlTGVuZ3RoID0gdmlzaWJsZUxlbmd0aDsKQEAgLTQ0OCw2ICs1
MDEsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcgogCiAgICAgUGVyQXhpc0RhdGEmIGRhdGEg
PSAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpID8gbV92ZXJ0aWNhbERhdGEgOiBt
X2hvcml6b250YWxEYXRhOwogICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gZGF0YS51cGRhdGVEYXRh
RnJvbVBhcmFtZXRlcnMoc3RlcCwgbXVsdGlwbGllciwgc2Nyb2xsYWJsZVNpemUsIFdURjo6bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksICZwYXJhbWV0ZXJzKTsKKyAgICBkYXRhLm1fYW5p
bWF0aW9uTW9kZSA9IFNjcm9sbDsKICAgICBpZiAobmVlZFRvU2Nyb2xsICYmICFtX2FuaW1hdGlv
blRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbV9zdGFydFRpbWUgPSBkYXRhLm1fc3RhcnRU
aW1lOwogICAgICAgICBhbmltYXRpb25UaW1lckZpcmVkKCZtX2FuaW1hdGlvblRpbWVyKTsKQEAg
LTQ3MSw2ICs1MjUsMjIgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKIH0KIAogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpmbGluZyhjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQoreworICAgIGlmICghcGdlLmRlbHRhWCgpICYmICFw
Z2UuZGVsdGFZKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uID0gZmFicyhwZ2UuZGVsdGFYKCkpID4gZmFicyhwZ2UuZGVsdGFZKCkpID8g
SG9yaXpvbnRhbFNjcm9sbGJhciA6IFZlcnRpY2FsU2Nyb2xsYmFyOworICAgIFNjcm9sbGJhciog
c2Nyb2xsYmFyID0gb3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIgPyBtX3Njcm9sbGFi
bGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcigpIDogbV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRh
bFNjcm9sbGJhcigpOworICAgIGZsb2F0IHZlbG9jaXR5ID0gb3JpZW50YXRpb24gPT0gVmVydGlj
YWxTY3JvbGxiYXIgPyAtcGdlLmRlbHRhWSgpIDogLXBnZS5kZWx0YVgoKTsKKyAgICBQZXJBeGlz
RGF0YSYgZGF0YSA9IChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgPyBtX3ZlcnRp
Y2FsRGF0YSA6IG1faG9yaXpvbnRhbERhdGE7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEtPnNj
cm9sbEFuaW1hdG9yRW5hYmxlZCgpICYmIGRhdGEudXBkYXRlRGF0YUZyb21GbGluZ1BhcmFtZXRl
cnModmVsb2NpdHkpKSB7CisgICAgICAgIG1fc3RhcnRUaW1lID0gZGF0YS5tX3N0YXJ0VGltZTsK
KyAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRpb25UaW1lcik7CisgICAgfSBl
bHNlCisgICAgICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwob3JpZW50YXRpb24sIFNjcm9sbEJ5
UGl4ZWwsIHNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIHZlbG9jaXR5KTsKK30KKwogdm9pZCBTY3Jv
bGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKIHsK
ICAgICBBU1NFUlQocGdlLnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFw
VHlwZSk7CkBAIC01MTUsMTUgKzU4NSwyNSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6em9v
bShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQogdm9pZCBTY3JvbGxBbmltYXRvck5v
bmU6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgcGdlKQog
ewogICAgIFRSQUNFX0VWRU5UKCJTY3JvbGxBbmltYXRvck5vbmU6OmhhbmRsZUdlc3R1cmVFdmVu
dCIsIHRoaXMsIDApOworICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7CiAgICAgc3dpdGNoIChwZ2Uu
dHlwZSgpKSB7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToK
ICAgICAgICAgem9vbShwZ2UpOwogICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIC8vIFRPRE86IGFkZCBhbnkgb3RoZXIgZXZlbnQgdHlwZXMgd2Ugc2hvdWxkIGhhbmRsZQot
ICAgICAgICB7IH0KKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBl
OgorICAgICAgICBmbGluZyhwZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpUYXBEb3duVHlwZToKKyAgICAgICAgc3RvcEFuaW1hdGlvblRpbWVySWZO
ZWVkZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsQmVnaW5UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVw
ZGF0ZVR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZToKKyAgICAg
ICAgaGFuZGxlZCA9IGZhbHNlOworICAgICAgICBicmVhazsKICAgICB9CisgICAgaWYgKCFoYW5k
bGVkKQorICAgICAgICBTY3JvbGxBbmltYXRvcjo6aGFuZGxlR2VzdHVyZUV2ZW50KHBnZSk7CiB9
CiAjZW5kaWYKIApAQCAtNTU4LDEwICs2MzgsMjYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiogdGltZXIpCiAg
ICAgZG91YmxlIGRlbHRhVG9OZXh0RnJhbWUgPSBjZWlsKChjdXJyZW50VGltZSAtIG1fc3RhcnRU
aW1lKSAqIGtGcmFtZVJhdGUpIC8ga0ZyYW1lUmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRU
aW1lKTsKIAogICAgIGJvb2wgY29udGludWVBbmltYXRpb24gPSBmYWxzZTsKLSAgICBpZiAobV9o
b3Jpem9udGFsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX2hvcml6b250YWxEYXRhLmFuaW1hdGVTY3Jv
bGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkKLSAgICAgICAgY29udGludWVBbmlt
YXRpb24gPSB0cnVlOwotICAgIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX3Zl
cnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkp
Ci0gICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1ZTsKKworICAgIFBlckF4aXNEYXRhKiBk
YXRhID0gMDsKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0YS5tX3N0YXJ0VGltZSkKKyAgICAgICAg
ZGF0YSA9ICZtX2hvcml6b250YWxEYXRhOworICAgIGVsc2UgaWYgKG1fdmVydGljYWxEYXRhLm1f
c3RhcnRUaW1lKQorICAgICAgICBkYXRhID0gJm1fdmVydGljYWxEYXRhOworCisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgc3dpdGNoIChkYXRhLT5tX2FuaW1hdGlvbk1vZGUpIHsKKyAgICAgICAg
Y2FzZSBTY3JvbGw6CisgICAgICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IGRhdGEtPmFuaW1h
dGVTY3JvbGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEZsaW5nOgorICAgICAgICAgICAgY29udGludWVBbmltYXRpb24g
PSBkYXRhLT5hbmltYXRlRmxpbmcoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGludWVB
bmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQog
CiAgICAgaWYgKG1fem9vbURhdGEubV9pc0FuaW1hdGluZykgewogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAppbmRl
eCBmOTRkNTIzOWI3MTliNjIwMjRjMThiNDcxYjUxNTdiZDRjNTMxY2YyLi44MGNhODg5ZDgxYWIx
NDQ1ZGI0NTE1NGRlNTg1YmM4N2Y5M2MzNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50
Jik7CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGZsaW5n
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHpvb20oY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKQEAgLTU5LDYgKzYw
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CiAKKyAgICBlbnVtIEFuaW1hdGlvbk1vZGUgeworICAgICAgICBTY3JvbGws
CisgICAgICAgIEZsaW5nLAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIGVudW0gQ3VydmUg
ewogICAgICAgICBMaW5lYXIsCiAgICAgICAgIFF1YWRyYXRpYywKQEAgLTk1LDcgKzEwMiw5IEBA
IHByb3RlY3RlZDoKICAgICAgICAgUGVyQXhpc0RhdGEoU2Nyb2xsQW5pbWF0b3JOb25lKiBwYXJl
bnQsIGZsb2F0KiBjdXJyZW50UG9zLCBpbnQgdmlzaWJsZUxlbmd0aCk7CiAgICAgICAgIHZvaWQg
cmVzZXQoKTsKICAgICAgICAgYm9vbCB1cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMoZmxvYXQgc3Rl
cCwgZmxvYXQgbXVsdGlwbGllciwgZmxvYXQgc2Nyb2xsYWJsZVNpemUsIGRvdWJsZSBjdXJyZW50
VGltZSwgUGFyYW1ldGVycyopOworICAgICAgICBib29sIHVwZGF0ZURhdGFGcm9tRmxpbmdQYXJh
bWV0ZXJzKGZsb2F0IHZlbG9jaXR5KTsKICAgICAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKGRvdWJs
ZSBjdXJyZW50VGltZSk7CisgICAgICAgIGJvb2wgYW5pbWF0ZUZsaW5nKGRvdWJsZSBjdXJyZW50
VGltZSk7CiAgICAgICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aChpbnQgdmlzaWJsZUxlbmd0
aCk7CiAKICAgICAgICAgc3RhdGljIGRvdWJsZSBjdXJ2ZUF0KEN1cnZlLCBkb3VibGUgdCk7CkBA
IC0xMjksNiArMTM4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDdXJ2ZSBtX3JlbGVhc2VDdXJ2
ZTsKIAogICAgICAgICBpbnQgbV92aXNpYmxlTGVuZ3RoOworICAgICAgICBBbmltYXRpb25Nb2Rl
IG1fYW5pbWF0aW9uTW9kZTsKICAgICB9OwogCiAgICAgLy8gV2hpbGUgem9vbWluZywgc2NhbGUs
IHBvc1ggYW5kIHBvc1kgbmVlZCB0byBzdGF5IHRpZ2h0bHkgY291cGxlZCwgc28gdXNlIGEgc2Vw
YXJhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5p
bWF0b3JOb25lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFu
aW1hdG9yTm9uZVRlc3QuY3BwCmluZGV4IDg1Y2NhOTA2NjAzMzdmZTlhMDZiNjk5MzM0MmEzMWEz
NWEzMjViM2YuLjBjYzQ4Y2I5MDE4OTY4YmY3NDFiNWFjYzAxM2RhYWJjM2ViOGI3MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5v
bmVUZXN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRl
ICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlRyZWVUZXN0SGVscGVycy5oIgpAQCAtMTk1
LDYgKzE5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgYm9vbCB1cGRhdGVE
YXRhRnJvbVBhcmFtZXRlcnMoZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgZmxvYXQgc2Ny
b2xsYWJsZVNpemUsIGRvdWJsZSBjdXJyZW50VGltZSwgU2Nyb2xsQW5pbWF0b3JOb25lOjpQYXJh
bWV0ZXJzKik7CiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKGRvdWJsZSBjdXJyZW50VGltZSk7Cisg
ICAgYm9vbCBhbmltYXRlRmxpbmcoZG91YmxlIGN1cnJlbnRUaW1lKTsKIAogICAgIGRvdWJsZSBh
dHRhY2tBcmVhKFNjcm9sbEFuaW1hdG9yTm9uZTo6Q3VydmUsIGRvdWJsZSBzdGFydFQsIGRvdWJs
ZSBlbmRUKTsKICAgICBkb3VibGUgcmVsZWFzZUFyZWEoU2Nyb2xsQW5pbWF0b3JOb25lOjpDdXJ2
ZSwgZG91YmxlIHN0YXJ0VCwgZG91YmxlIGVuZFQpOwpAQCAtMjkxLDYgKzI5MywyMiBAQCBib29s
IFNjcm9sbEFuaW1hdG9yTm9uZVRlc3Q6OmFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRUaW1l
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JOb25lVGVzdDo6
YW5pbWF0ZUZsaW5nKGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBkb3VibGUgb2xkVmVsb2Np
dHkgPSBtX2RhdGEtPm1fY3VycmVudFZlbG9jaXR5OworICAgIGRvdWJsZSBvbGRQb3NpdGlvbiA9
ICptX2RhdGEtPm1fY3VycmVudFBvc2l0aW9uOworICAgIGJvb2wgcmVzdWx0ID0gbV9kYXRhLT5h
bmltYXRlRmxpbmcoY3VycmVudFRpbWUpOworICAgIC8vIFdlIG11c3QgYWx3YXlzIGJlIHNsb3dp
bmcgZG93bi4KKyAgICBFWFBFQ1RfR1QoZmFicyhvbGRWZWxvY2l0eSksIGZhYnMobV9kYXRhLT5t
X2N1cnJlbnRWZWxvY2l0eSkpOworICAgIC8vIEFuZCBnZXR0aW5nIGNsb3NlciB0byB0aGUgdGFy
Z2V0LgorICAgIEVYUEVDVF9HVChmYWJzKG9sZFBvc2l0aW9uIC0gbV9kYXRhLT5tX2Rlc2lyZWRQ
b3NpdGlvbiksIGZhYnMoKm1fZGF0YS0+bV9jdXJyZW50UG9zaXRpb24gLSBtX2RhdGEtPm1fZGVz
aXJlZFBvc2l0aW9uKSk7CisgICAgLy8gQW5kIGlmIHdlJ3JlIGRvbmUsIHdlIGJldHRlciBiZSBh
dCB0aGUgcmlnaHQgc3BvdC4KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgRVhQRUNUX0VRKG1f
ZGF0YS0+bV9kZXNpcmVkUG9zaXRpb24sICptX2RhdGEtPm1fY3VycmVudFBvc2l0aW9uKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGRvdWJsZSBTY3JvbGxBbmltYXRvck5vbmVUZXN0Ojph
dHRhY2tBcmVhKFNjcm9sbEFuaW1hdG9yTm9uZTo6Q3VydmUgY3VydmUsIGRvdWJsZSBzdGFydFQs
IGRvdWJsZSBlbmRUKQogewogICAgIHJldHVybiBTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNE
YXRhOjphdHRhY2tBcmVhKGN1cnZlLCBzdGFydFQsIGVuZFQpOwpAQCAtOTcxLDUgKzk4OSwxOCBA
QCBURVNUX0YoU2Nyb2xsQW5pbWF0b3JOb25lVGVzdCwgVmFyeWluZ0lucHV0c0VxdWl2YWxlbmN5
Q29hc3RTdGVlcCkKICAgICBFWFBFQ1RfRVEoZGF0YVNpbmdsZSwgZGF0YU1hbnkpOwogfQogCitU
RVNUX0YoU2Nyb2xsQW5pbWF0b3JOb25lVGVzdCwgRmxpbmcpCit7CisgICAgZG91YmxlIGNvbnN0
IG1heFQgPSAxMC4wOyAvLyBhIHNjcm9sbCBiZXR0ZXIgbm90IHRha2UgbG9uZ2VyIHRoYW4gMTAg
c2Vjb25kcy4KKyAgICBjb25zdCBkb3VibGUgc3RhcnRQb3NpdGlvbiA9ICptX2RhdGEtPm1fY3Vy
cmVudFBvc2l0aW9uOworICAgIG1fZGF0YS0+dXBkYXRlRGF0YUZyb21GbGluZ1BhcmFtZXRlcnMo
MTAwMCk7IC8vIHBpeGVscy9zZWNvbmQKKyAgICBkb3VibGUgdDsKKyAgICBmb3IgKHQgPSBtX2Rh
dGEtPm1fc3RhcnRUaW1lICsga1RpY2tUaW1lOyB0IC0gbV9kYXRhLT5tX3N0YXJ0VGltZSA8IG1h
eFQgJiYgYW5pbWF0ZUZsaW5nKHQpOyB0ICs9IGtUaWNrVGltZSkgeyB9CisgICAgRVhQRUNUX0dU
KG1heFQsIHQgLSBtX2RhdGEtPm1fc3RhcnRUaW1lKTsKKyAgICBtX2RhdGEtPnVwZGF0ZURhdGFG
cm9tRmxpbmdQYXJhbWV0ZXJzKC0xMDAwKTsgLy8gcGl4ZWxzL3NlY29uZAorICAgIGZvciAodCA9
IG1fZGF0YS0+bV9zdGFydFRpbWUgKyBrVGlja1RpbWU7IHQgLSBtX2RhdGEtPm1fc3RhcnRUaW1l
IDwgbWF4VCAmJiBhbmltYXRlRmxpbmcodCk7IHQgKz0ga1RpY2tUaW1lKSB7IH0KKyAgICBFWFBF
Q1RfR1QobWF4VCwgdCAtIG1fZGF0YS0+bV9zdGFydFRpbWUpOworICAgIEVYUEVDVF9FUShzdGFy
dFBvc2l0aW9uLCAqbV9kYXRhLT5tX2N1cnJlbnRQb3NpdGlvbik7Cit9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118272</attachid>
            <date>2011-12-07 13:54:47 -0800</date>
            <delta_ts>2012-02-21 20:35:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73489-20111207165446.patch</filename>
            <type>text/plain</type>
            <size>16942</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYwNmZkOGVhMDhmYmQy
NmFiZjY2NjgyNzBjMTUwYjc2ZDIzYjliNC4uYzRmMTY3Nzk2ZjhlOTYxMjUxYTMwMWQxMGUyOTc4
NzYzZmM2N2NkZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTMwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBmbGluZyBhbmlt
YXRpb24gc3VwcG9ydCB0byBTY3JvbGxBbmltYXRvck5vbmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3JOb25lIG5vdyByZXNwb25k
cyB0byBTY3JvbGxFbmRUeXBlIGdlc3R1cmUgZXZlbnRzIGFuZAorICAgICAgICBpbml0aWF0ZXMg
YSBmbGluZyBhbmltYXRpb24uCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3Igbm93IHJlc3BvbmRz
IHRvIFNjcm9sbFVwZGF0ZVR5cGUgZ2VzdHVyZSBldmVudHMgYW5kCisgICAgICAgIHNjcm9sbHMg
YWNjb3JkaW5nbHkgKHdpdGggbm8gYW5pbWF0aW9uKS4KKworICAgICAgICBUZXN0IGZvciBmbGlu
ZyBhZGRlZCB0byBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9u
ZVRlc3QuY3BwCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwOgor
ICAgICAgICAoc3RkOjpHZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvck5vbmU6OlBlckF4aXNEYXRhOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjphbmltYXRlRmxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JOb25lOjpmbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5v
bmU6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
ck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5oOgorCiAyMDExLTEyLTA3ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW5kZXJPYmplY3Q6OnN0eWxlKCk6IElubGluZSBlYXJseS1yZXR1
cm4gY29uZGl0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDhlY2Qz
NWE1YjRhNmExNjgwZjdiYjFjNjk3ZDU3ZTJmYmY0YWE4ODAuLjUwYTFhMjZhMzEyZmQyZDUyOGUw
MTBjMzExNzc0NzdmMDBjOGM4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
QEAgLTIyMzAsOCArMjIzMCw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAvLyBlbmQg
Z2VzdHVyZSBhcyB3ZWxsLgogCiAgICAgc3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7Ci0g
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwRG93blR5cGU6Ci0gICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKICAgICAgICAgLy8g
RklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGltZXMg
b25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3ZlLgog
ICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQucG9z
aXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3VzZUV2
ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdl
c3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50
Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKQEAgLTIyNDIsMTUgKzIyNDAs
OCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2
ZW50KGZha2VNb3VzZVVwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKLSAgICAgICAgY29uc3Qg
ZmxvYXQgdGlja0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlja011bHRpcGxpZXI7Ci0g
ICAgICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBvbmNl
IHRoZSBhYm92ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCi0gICAgICAgIEludFBvaW50IHBv
aW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLngoKSwgZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCku
eSgpKTsKLSAgICAgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCkpOwotICAgICAg
ICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChwb2ludCwgZ2xvYmFsUG9p
bnQsIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJl
RXZlbnQuZGVsdGFYKCkgLyB0aWNrRGl2aXNvciwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpIC8gdGlj
a0Rpdmlzb3IsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBnZXN0dXJlRXZlbnQuc2hpZnRLZXko
KSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJl
RXZlbnQubWV0YUtleSgpKTsKLSAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVl
bEV2ZW50KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGNhc2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6VGFwRG93blR5cGU6CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91Ymxl
VGFwVHlwZToKICAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6
CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBmNzNjNWNjMDY0MzNjM2Vh
NmRkNTVhZTExM2MwMjk0NjI5YjRhODg0Li42YTJjZGRjNzVmOGEwNGJkZWNmNDVjYmNjYTRhOGU4
MDhmMDYyMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
CkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorI2luY2x1ZGUgIlBs
YXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI2LDggKzEzMCwyNiBAQCBib29sIFNjcm9sbEFuaW1h
dG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKIH0KIAog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCit2b2lkIFNjcm9sbEFuaW1h
dG9yOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkK
IHsKKyAgICBzd2l0Y2ggKHBnZS50eXBlKCkpIHsKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxVcGRhdGVUeXBlOiB7CisgICAgICAgIEludFNpemUgbWF4Rm9yd2FyZFNjcm9s
bERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBtX3Nj
cm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgICAgICBJbnRTaXplIG1heEJhY2t3
YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpIC0gbV9z
Y3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIGZsb2F0IGRl
bHRhWCA9IChwZ2UuZGVsdGFYKCkgPCAwLmYpID8gbWF4KHBnZS5kZWx0YVgoKSwgIC1mbG9hdCht
YXhGb3J3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSkpIDogbWluKHBnZS5kZWx0YVgoKSwgZmxvYXQo
bWF4QmFja3dhcmRTY3JvbGxEZWx0YS53aWR0aCgpKSk7CisgICAgICAgIGZsb2F0IGRlbHRhWSA9
IChwZ2UuZGVsdGFZKCkgPCAwLmYpID8gbWF4KHBnZS5kZWx0YVkoKSwgIC1mbG9hdChtYXhGb3J3
YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkpKSA6IG1pbihwZ2UuZGVsdGFZKCksIGZsb2F0KG1heEJh
Y2t3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkpKTsKKyAgICAgICAgSW50UmVjdCBjb250ZW50UmVj
dCA9IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKKyAgICAgICAg
RmxvYXRQb2ludCBvZmZzZXQgPSBGbG9hdFBvaW50KGNvbnRlbnRSZWN0LngoKSAtIGRlbHRhWCwg
Y29udGVudFJlY3QueSgpIC0gZGVsdGFZKTsKKyAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0
QW5pbWF0aW9uKG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpEb3VibGVUYXBUeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpT
Y3JvbGxFbmRUeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcERvd25UeXBl
OgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6CisgICAgICAgIGJyZWFr
OworICAgIH0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcAppbmRleCAxZjRjYzQzZjEyNjU4Zjc1ZWExZmJhYmYxNjZmZTQ0NTEy
YmUwZTBmLi5kNGRiNDE0MjNhODJkZjZmNTVmNzE4OGZkZGFjNTA1YTMzOTNlZTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKQEAgLTU2LDYg
KzU2LDE1IEBAIGNvbnN0IGRvdWJsZSBrRnJhbWVSYXRlID0gNjA7CiBjb25zdCBkb3VibGUga1Rp
Y2tUaW1lID0gMSAvIGtGcmFtZVJhdGU7CiBjb25zdCBkb3VibGUga01pbmltdW1UaW1lckludGVy
dmFsID0gLjAwMTsKIGNvbnN0IGRvdWJsZSBrWm9vbVRpY2tzID0gMTE7Citjb25zdCBkb3VibGUg
a0RlZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiA9IC0yNTAwLjA7IC8vIHBpeGVscy9zZWNvbmReMgor
CitzdGF0aWMgZG91YmxlIGdldEZsaW5nUG9zaXRpb24oZG91YmxlIGluaXRpYWxQb3NpdGlvbiwg
ZG91YmxlIGluaXRpYWxWZWxvY2l0eSwgZG91YmxlIGFjY2VsZXJhdGlvbiwgZG91YmxlIHQpCit7
CisgICAgZG91YmxlIG1heFQgPSAtaW5pdGlhbFZlbG9jaXR5IC8gYWNjZWxlcmF0aW9uOworICAg
IGlmICh0ID4gbWF4VCkKKyAgICAgICAgdCA9IG1heFQ7CisgICAgcmV0dXJuIGluaXRpYWxQb3Np
dGlvbiArIHQgKiAoaW5pdGlhbFZlbG9jaXR5ICsgMC41ZiAqIGFjY2VsZXJhdGlvbiAqIHQpOwor
fQogCiBQYXNzT3duUHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKQEAgLTIzMCw2ICsyMzksNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnJlc2V0KCkKICAgICBtX3JlbGVhc2VQ
b3NpdGlvbiA9IDA7CiAgICAgbV9yZWxlYXNlVGltZSA9IDA7CiAgICAgbV9yZWxlYXNlQ3VydmUg
PSBRdWFkcmF0aWM7CisgICAgbV9hbmltYXRpb25Nb2RlID0gTm9uZTsKIH0KIAogCkBAIC0zMzEs
NiArMzQxLDIwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRl
RGF0YUZyb21QYXJhbWV0ZXJzKGZsb2F0IHN0ZXAsIGZsb2F0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRlRGF0YUZyb21G
bGluZ1BhcmFtZXRlcnMoZmxvYXQgdmVsb2NpdHkpCit7CisgICAgbV9zdGFydFRpbWUgPSBtX2xh
c3RBbmltYXRpb25UaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAg
ICBtX3N0YXJ0UG9zaXRpb24gPSAqKG1fY3VycmVudFBvc2l0aW9uKTsKKyAgICBtX3N0YXJ0VmVs
b2NpdHkgPSBtX2N1cnJlbnRWZWxvY2l0eSA9IHZlbG9jaXR5OworICAgIG1fYW5pbWF0aW9uVGlt
ZSA9IC1mYWJzKHZlbG9jaXR5KSAvIGtEZWZhdWx0RmxpbmdBY2NlbGVyYXRpb247CisgICAgZmxv
YXQgYWNjZWxlcmF0aW9uID0ga0RlZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiAqIChtX3N0YXJ0VmVs
b2NpdHkgPiAwID8gMSA6IC0xKTsKKyAgICBtX2Rlc2lyZWRQb3NpdGlvbiA9IGdldEZsaW5nUG9z
aXRpb24obV9zdGFydFBvc2l0aW9uLCBtX3N0YXJ0VmVsb2NpdHksIGFjY2VsZXJhdGlvbiwgbV9h
bmltYXRpb25UaW1lKTsKKyAgICBpZiAobV9kZXNpcmVkUG9zaXRpb24gPT0gbV9zdGFydFBvc2l0
aW9uKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fYW5pbWF0aW9uTW9kZSA9IEZsaW5nOwor
ICAgIHJldHVybiB0cnVlOworfQorCiAvLyBGSVhNRTogQWRkIGluIGphbmsgZGV0ZWN0aW9uIHRy
YWNlIGV2ZW50cyBpbnRvIHRoaXMgZnVuY3Rpb24uCiBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6
UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRUaW1lKQogewpAQCAtMzY2
LDYgKzM5MCwzNSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1h
dGVTY3JvbGwoZG91YmxlIGN1cnJlbnRUaW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29s
IFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVGbGluZyhkb3VibGUgY3Vy
cmVudFRpbWUpCit7CisgICAgaWYgKGN1cnJlbnRUaW1lIC0gbV9sYXN0QW5pbWF0aW9uVGltZSA8
IGtNaW5pbXVtVGltZXJJbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2xh
c3RBbmltYXRpb25UaW1lID0gY3VycmVudFRpbWU7CisKKyAgICBkb3VibGUgZGVsdGFUaW1lID0g
Y3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKKyAgICBpZiAoZGVsdGFUaW1lID4gbV9hbmltYXRp
b25UaW1lKSB7CisgICAgICAgICptX2N1cnJlbnRQb3NpdGlvbiA9IG1fZGVzaXJlZFBvc2l0aW9u
OworICAgICAgICByZXNldCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
ZmxvYXQgYWNjZWxlcmF0aW9uID0ga0RlZmF1bHRGbGluZ0FjY2VsZXJhdGlvbiAqIChtX3N0YXJ0
VmVsb2NpdHkgPiAwID8gMSA6IC0xKTsKKyAgICBmbG9hdCBuZXdQb3NpdGlvbiA9IGdldEZsaW5n
UG9zaXRpb24obV9zdGFydFBvc2l0aW9uLCBtX3N0YXJ0VmVsb2NpdHksIGFjY2VsZXJhdGlvbiwg
ZGVsdGFUaW1lKTsKKyAgICBtX2N1cnJlbnRWZWxvY2l0eSA9IG1fc3RhcnRWZWxvY2l0eSArIGFj
Y2VsZXJhdGlvbiAqIGRlbHRhVGltZTsKKworICAgIGlmIChmYWJzKG5ld1Bvc2l0aW9uIC0gbV9z
dGFydFBvc2l0aW9uKSArIDAuNSA+CisgICAgICAgIGZhYnMobV9kZXNpcmVkUG9zaXRpb24gLSBt
X3N0YXJ0UG9zaXRpb24pKSB7CisgICAgICAgIC8vIFdlJ3ZlIG92ZXJzaG90LiBBbGwgZG9uZS4K
KyAgICAgICAgKm1fY3VycmVudFBvc2l0aW9uID0gbV9kZXNpcmVkUG9zaXRpb247CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3Np
dGlvbjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OlBl
ckF4aXNEYXRhOjp1cGRhdGVWaXNpYmxlTGVuZ3RoKGludCB2aXNpYmxlTGVuZ3RoKQogewogICAg
IG1fdmlzaWJsZUxlbmd0aCA9IHZpc2libGVMZW5ndGg7CkBAIC00NDgsNiArNTAxLDcgQEAgYm9v
bCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiwgU2Nyb2xsR3JhbnVsYXIKIAogICAgIFBlckF4aXNEYXRhJiBkYXRhID0gKG9yaWVudGF0
aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKSA/IG1fdmVydGljYWxEYXRhIDogbV9ob3Jpem9udGFs
RGF0YTsKICAgICBib29sIG5lZWRUb1Njcm9sbCA9IGRhdGEudXBkYXRlRGF0YUZyb21QYXJhbWV0
ZXJzKHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXplLCBXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpLCAmcGFyYW1ldGVycyk7CisgICAgZGF0YS5tX2FuaW1hdGlvbk1vZGUg
PSBTY3JvbGw7CiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhbV9hbmltYXRpb25UaW1lci5pc0Fj
dGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gZGF0YS5tX3N0YXJ0VGltZTsKICAgICAg
ICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRpb25UaW1lcik7CkBAIC00NzEsNiArNTI1
LDIyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0CiB9CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCit2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6ZmxpbmcoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIHBnZSkKK3sKKyAgICBpZiAoIXBnZS5kZWx0YVgoKSAmJiAhcGdlLmRlbHRhWSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
biA9IGZhYnMocGdlLmRlbHRhWCgpKSA+IGZhYnMocGdlLmRlbHRhWSgpKSA/IEhvcml6b250YWxT
Y3JvbGxiYXIgOiBWZXJ0aWNhbFNjcm9sbGJhcjsKKyAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9
IG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gbV9zY3JvbGxhYmxlQXJlYS0+dmVy
dGljYWxTY3JvbGxiYXIoKSA6IG1fc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXIo
KTsKKyAgICBmbG9hdCB2ZWxvY2l0eSA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFy
ID8gLXBnZS5kZWx0YVkoKSA6IC1wZ2UuZGVsdGFYKCk7CisgICAgUGVyQXhpc0RhdGEmIGRhdGEg
PSAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpID8gbV92ZXJ0aWNhbERhdGEgOiBt
X2hvcml6b250YWxEYXRhOworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSAmJiBkYXRhLnVwZGF0ZURhdGFGcm9tRmxpbmdQYXJhbWV0ZXJzKHZlbG9jaXR5
KSkgeworICAgICAgICBtX3N0YXJ0VGltZSA9IGRhdGEubV9zdGFydFRpbWU7CisgICAgICAgIGFu
aW1hdGlvblRpbWVyRmlyZWQoJm1fYW5pbWF0aW9uVGltZXIpOworICAgIH0gZWxzZQorICAgICAg
ICBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBTY3JvbGxCeVBpeGVsLCBzY3Jv
bGxiYXItPnBpeGVsU3RlcCgpLCB2ZWxvY2l0eSk7Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JO
b25lOjp6b29tKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBwZ2UpCiB7CiAgICAgQVNTRVJU
KHBnZS50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGUpOwpAQCAt
NTE1LDE1ICs1ODUsMjUgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6Onpvb20oY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHBnZSkKIHsKICAgICBUUkFD
RV9FVkVOVCgiU2Nyb2xsQW5pbWF0b3JOb25lOjpoYW5kbGVHZXN0dXJlRXZlbnQiLCB0aGlzLCAw
KTsKKyAgICBib29sIGhhbmRsZWQgPSB0cnVlOwogICAgIHN3aXRjaCAocGdlLnR5cGUoKSkgewog
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OkRvdWJsZVRhcFR5cGU6CiAgICAgICAgIHpv
b20ocGdlKTsKICAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICAvLyBUT0RP
OiBhZGQgYW55IG90aGVyIGV2ZW50IHR5cGVzIHdlIHNob3VsZCBoYW5kbGUKLSAgICAgICAgeyB9
CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZToKKyAgICAgICAg
ZmxpbmcocGdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVu
dDo6VGFwRG93blR5cGU6CisgICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2lu
VHlwZToKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlOgor
ICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6CisgICAgICAgIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGlmICghaGFuZGxlZCkKKyAgICAg
ICAgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZUdlc3R1cmVFdmVudChwZ2UpOwogfQogI2VuZGlmCiAK
QEAgLTU1OCwxMCArNjM4LDI2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25U
aW1lckZpcmVkKFRpbWVyPFNjcm9sbEFuaW1hdG9yTm9uZT4qIHRpbWVyKQogICAgIGRvdWJsZSBk
ZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSkgKiBrRnJh
bWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSk7CiAKICAg
ICBib29sIGNvbnRpbnVlQW5pbWF0aW9uID0gZmFsc2U7Ci0gICAgaWYgKG1faG9yaXpvbnRhbERh
dGEubV9zdGFydFRpbWUgJiYgbV9ob3Jpem9udGFsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRU
aW1lICsgZGVsdGFUb05leHRGcmFtZSkpCi0gICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1
ZTsKLSAgICBpZiAobV92ZXJ0aWNhbERhdGEubV9zdGFydFRpbWUgJiYgbV92ZXJ0aWNhbERhdGEu
YW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUpKQotICAgICAgICBj
b250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisKKyAgICBQZXJBeGlzRGF0YSogZGF0YSA9IDA7Cisg
ICAgaWYgKG1faG9yaXpvbnRhbERhdGEubV9zdGFydFRpbWUpCisgICAgICAgIGRhdGEgPSAmbV9o
b3Jpem9udGFsRGF0YTsKKyAgICBlbHNlIGlmIChtX3ZlcnRpY2FsRGF0YS5tX3N0YXJ0VGltZSkK
KyAgICAgICAgZGF0YSA9ICZtX3ZlcnRpY2FsRGF0YTsKKworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIHN3aXRjaCAoZGF0YS0+bV9hbmltYXRpb25Nb2RlKSB7CisgICAgICAgIGNhc2UgU2Nyb2xs
OgorICAgICAgICAgICAgY29udGludWVBbmltYXRpb24gPSBkYXRhLT5hbmltYXRlU2Nyb2xsKGN1
cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBGbGluZzoKKyAgICAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gZGF0YS0+YW5p
bWF0ZUZsaW5nKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0g
ZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICht
X3pvb21EYXRhLm1faXNBbmltYXRpbmcpIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggZjk0ZDUyMzli
NzE5YjYyMDI0YzE4YjQ3MWI1MTU3YmQ0YzUzMWNmMi4uODBjYTg4OWQ4MWFiMTQ0NWRiNDUxNTRk
ZTU4NWJjODdmOTNjMzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3JOb25lLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogCiAjaWYg
RU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBmbGluZyhjb25zdCBQbGF0
Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIHZpcnR1YWwgdm9pZCB6b29tKGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCkBAIC01OSw2ICs2MCwxMiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciop
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciop
OwogCisgICAgZW51bSBBbmltYXRpb25Nb2RlIHsKKyAgICAgICAgU2Nyb2xsLAorICAgICAgICBG
bGluZywKKyAgICAgICAgTm9uZQorICAgIH07CisKICAgICBlbnVtIEN1cnZlIHsKICAgICAgICAg
TGluZWFyLAogICAgICAgICBRdWFkcmF0aWMsCkBAIC05NSw3ICsxMDIsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIFBlckF4aXNEYXRhKFNjcm9sbEFuaW1hdG9yTm9uZSogcGFyZW50LCBmbG9hdCog
Y3VycmVudFBvcywgaW50IHZpc2libGVMZW5ndGgpOwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAg
ICAgICAgIGJvb2wgdXBkYXRlRGF0YUZyb21QYXJhbWV0ZXJzKGZsb2F0IHN0ZXAsIGZsb2F0IG11
bHRpcGxpZXIsIGZsb2F0IHNjcm9sbGFibGVTaXplLCBkb3VibGUgY3VycmVudFRpbWUsIFBhcmFt
ZXRlcnMqKTsKKyAgICAgICAgYm9vbCB1cGRhdGVEYXRhRnJvbUZsaW5nUGFyYW1ldGVycyhmbG9h
dCB2ZWxvY2l0eSk7CiAgICAgICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRp
bWUpOworICAgICAgICBib29sIGFuaW1hdGVGbGluZyhkb3VibGUgY3VycmVudFRpbWUpOwogICAg
ICAgICB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGgoaW50IHZpc2libGVMZW5ndGgpOwogCiAgICAg
ICAgIHN0YXRpYyBkb3VibGUgY3VydmVBdChDdXJ2ZSwgZG91YmxlIHQpOwpAQCAtMTI5LDYgKzEz
OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3VydmUgbV9yZWxlYXNlQ3VydmU7CiAKICAgICAg
ICAgaW50IG1fdmlzaWJsZUxlbmd0aDsKKyAgICAgICAgQW5pbWF0aW9uTW9kZSBtX2FuaW1hdGlv
bk1vZGU7CiAgICAgfTsKIAogICAgIC8vIFdoaWxlIHpvb21pbmcsIHNjYWxlLCBwb3NYIGFuZCBw
b3NZIG5lZWQgdG8gc3RheSB0aWdodGx5IGNvdXBsZWQsIHNvIHVzZSBhIHNlcGFyYXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVU
ZXN0LmNwcAppbmRleCA4NWNjYTkwNjYwMzM3ZmU5YTA2YjY5OTMzNDJhMzFhMzVhMzI1YjNmLi4w
Y2M0OGNiOTAxODk2OGJmNzQxYjVhY2MwMTNkYWFiYzNlYjhiNzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVF
dmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJs
ZUFyZWEuaCIKICNpbmNsdWRlICJUcmVlVGVzdEhlbHBlcnMuaCIKQEAgLTE5NSw2ICsxOTYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgdXBkYXRlRGF0YUZyb21QYXJh
bWV0ZXJzKGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIsIGZsb2F0IHNjcm9sbGFibGVTaXpl
LCBkb3VibGUgY3VycmVudFRpbWUsIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGFyYW1ldGVycyopOwog
ICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChkb3VibGUgY3VycmVudFRpbWUpOworICAgIGJvb2wgYW5p
bWF0ZUZsaW5nKGRvdWJsZSBjdXJyZW50VGltZSk7CiAKICAgICBkb3VibGUgYXR0YWNrQXJlYShT
Y3JvbGxBbmltYXRvck5vbmU6OkN1cnZlLCBkb3VibGUgc3RhcnRULCBkb3VibGUgZW5kVCk7CiAg
ICAgZG91YmxlIHJlbGVhc2VBcmVhKFNjcm9sbEFuaW1hdG9yTm9uZTo6Q3VydmUsIGRvdWJsZSBz
dGFydFQsIGRvdWJsZSBlbmRUKTsKQEAgLTI5MSw2ICsyOTMsMjIgQEAgYm9vbCBTY3JvbGxBbmlt
YXRvck5vbmVUZXN0OjphbmltYXRlU2Nyb2xsKGRvdWJsZSBjdXJyZW50VGltZSkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitib29sIFNjcm9sbEFuaW1hdG9yTm9uZVRlc3Q6OmFuaW1hdGVGbGlu
Zyhkb3VibGUgY3VycmVudFRpbWUpCit7CisgICAgZG91YmxlIG9sZFZlbG9jaXR5ID0gbV9kYXRh
LT5tX2N1cnJlbnRWZWxvY2l0eTsKKyAgICBkb3VibGUgb2xkUG9zaXRpb24gPSAqbV9kYXRhLT5t
X2N1cnJlbnRQb3NpdGlvbjsKKyAgICBib29sIHJlc3VsdCA9IG1fZGF0YS0+YW5pbWF0ZUZsaW5n
KGN1cnJlbnRUaW1lKTsKKyAgICAvLyBXZSBtdXN0IGFsd2F5cyBiZSBzbG93aW5nIGRvd24uCisg
ICAgRVhQRUNUX0dUKGZhYnMob2xkVmVsb2NpdHkpLCBmYWJzKG1fZGF0YS0+bV9jdXJyZW50VmVs
b2NpdHkpKTsKKyAgICAvLyBBbmQgZ2V0dGluZyBjbG9zZXIgdG8gdGhlIHRhcmdldC4KKyAgICBF
WFBFQ1RfR1QoZmFicyhvbGRQb3NpdGlvbiAtIG1fZGF0YS0+bV9kZXNpcmVkUG9zaXRpb24pLCBm
YWJzKCptX2RhdGEtPm1fY3VycmVudFBvc2l0aW9uIC0gbV9kYXRhLT5tX2Rlc2lyZWRQb3NpdGlv
bikpOworICAgIC8vIEFuZCBpZiB3ZSdyZSBkb25lLCB3ZSBiZXR0ZXIgYmUgYXQgdGhlIHJpZ2h0
IHNwb3QuCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIEVYUEVDVF9FUShtX2RhdGEtPm1fZGVz
aXJlZFBvc2l0aW9uLCAqbV9kYXRhLT5tX2N1cnJlbnRQb3NpdGlvbik7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBkb3VibGUgU2Nyb2xsQW5pbWF0b3JOb25lVGVzdDo6YXR0YWNrQXJlYShT
Y3JvbGxBbmltYXRvck5vbmU6OkN1cnZlIGN1cnZlLCBkb3VibGUgc3RhcnRULCBkb3VibGUgZW5k
VCkKIHsKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YXR0YWNr
QXJlYShjdXJ2ZSwgc3RhcnRULCBlbmRUKTsKQEAgLTk3MSw1ICs5ODksMTggQEAgVEVTVF9GKFNj
cm9sbEFuaW1hdG9yTm9uZVRlc3QsIFZhcnlpbmdJbnB1dHNFcXVpdmFsZW5jeUNvYXN0U3RlZXAp
CiAgICAgRVhQRUNUX0VRKGRhdGFTaW5nbGUsIGRhdGFNYW55KTsKIH0KIAorVEVTVF9GKFNjcm9s
bEFuaW1hdG9yTm9uZVRlc3QsIEZsaW5nKQoreworICAgIGRvdWJsZSBjb25zdCBtYXhUID0gMTAu
MDsgLy8gYSBzY3JvbGwgYmV0dGVyIG5vdCB0YWtlIGxvbmdlciB0aGFuIDEwIHNlY29uZHMuCisg
ICAgY29uc3QgZG91YmxlIHN0YXJ0UG9zaXRpb24gPSAqbV9kYXRhLT5tX2N1cnJlbnRQb3NpdGlv
bjsKKyAgICBtX2RhdGEtPnVwZGF0ZURhdGFGcm9tRmxpbmdQYXJhbWV0ZXJzKDEwMDApOyAvLyBw
aXhlbHMvc2Vjb25kCisgICAgZG91YmxlIHQ7CisgICAgZm9yICh0ID0gbV9kYXRhLT5tX3N0YXJ0
VGltZSArIGtUaWNrVGltZTsgdCAtIG1fZGF0YS0+bV9zdGFydFRpbWUgPCBtYXhUICYmIGFuaW1h
dGVGbGluZyh0KTsgdCArPSBrVGlja1RpbWUpIHsgfQorICAgIEVYUEVDVF9HVChtYXhULCB0IC0g
bV9kYXRhLT5tX3N0YXJ0VGltZSk7CisgICAgbV9kYXRhLT51cGRhdGVEYXRhRnJvbUZsaW5nUGFy
YW1ldGVycygtMTAwMCk7IC8vIHBpeGVscy9zZWNvbmQKKyAgICBmb3IgKHQgPSBtX2RhdGEtPm1f
c3RhcnRUaW1lICsga1RpY2tUaW1lOyB0IC0gbV9kYXRhLT5tX3N0YXJ0VGltZSA8IG1heFQgJiYg
YW5pbWF0ZUZsaW5nKHQpOyB0ICs9IGtUaWNrVGltZSkgeyB9CisgICAgRVhQRUNUX0dUKG1heFQs
IHQgLSBtX2RhdGEtPm1fc3RhcnRUaW1lKTsKKyAgICBFWFBFQ1RfRVEoc3RhcnRQb3NpdGlvbiwg
Km1fZGF0YS0+bV9jdXJyZW50UG9zaXRpb24pOworfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCg==
</data>
<flag name="review"
          id="117957"
          type_id="1"
          status="-"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="118001"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>