<?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>74769</bug_id>
          
          <creation_ts>2011-12-16 16:55:24 -0800</creation_ts>
          <short_desc>[chromium] Add CCTimer class for the compositor</short_desc>
          <delta_ts>2012-01-05 12:53:45 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tien-Ren Chen">trchen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>trchen</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>523162</commentid>
    <comment_count>0</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-16 16:55:24 -0800</bug_when>
    <thetext>[chromium] Add CCTimer class for the compositor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523169</commentid>
    <comment_count>1</comment_count>
      <attachid>119702</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-16 17:04:06 -0800</bug_when>
    <thetext>Created attachment 119702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523170</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 17:10:55 -0800</bug_when>
    <thetext>Attachment 119702 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/chromium/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebKit/chromium/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524290</commentid>
    <comment_count>3</comment_count>
      <attachid>119702</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-19 16:45:56 -0800</bug_when>
    <thetext>Comment on attachment 119702
Patch

Can you fix the tab issue?

This appears to be copy-pasting a fair amount of boilerplate, not all of which is really relevant for our use cases. For example I don&apos;t think we have any need for repeating timers or for passing a CCTimer* to the timer fired callback. Let&apos;s start with the API that we need and the implementation we need to support that interface alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524321</commentid>
    <comment_count>4</comment_count>
      <attachid>119956</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-19 17:17:38 -0800</bug_when>
    <thetext>Created attachment 119956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524328</commentid>
    <comment_count>5</comment_count>
      <attachid>119956</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-19 17:24:09 -0800</bug_when>
    <thetext>Comment on attachment 119956
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:78
&gt; +class CCTimer : public CCTimerBase {
&gt; +public:
&gt; +    CCTimer(CCThread* thread, CCTimerClient* client = 0) : CCTimerBase(thread), m_client(client) { }

why do we need the base class here? we only have one subclass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524339</commentid>
    <comment_count>6</comment_count>
      <attachid>119963</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-19 17:39:17 -0800</bug_when>
    <thetext>Created attachment 119963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525667</commentid>
    <comment_count>7</comment_count>
      <attachid>119963</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-21 15:01:02 -0800</bug_when>
    <thetext>Comment on attachment 119963
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:35
&gt; +#include &lt;cfloat&gt;

what is cfloat for? does it need to be included in this header?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:48
&gt; +    CCTimer(CCThread* thread, CCTimerClient* client) : m_client(client), m_thread(thread), m_task(0) { }

please expand the initializer list to one statement per line

to keep this header smaller and more readable could you move the implementations of the c&apos;tor/d&apos;tor into the .cpp? I don&apos;t expect this to be performance-critical code

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:51
&gt; +    void startOneShot(double interval);

is this seconds, milliseconds, microseconds, something else? we try to tag parameter names that represent periods of time with a suffix to indicate the unit

CCThread and CCDelayBasedTimeSource both have time values of milliseconds with a &quot;Ms&quot; suffix, can we stick with that?

can you document in the header what this function does if there&apos;s already a timer pending (looks like it cancels the previous task, which i think is great behavior but it should be documented)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:52
&gt; +    void stop() { deschedule(); }

why are stop() and deschedule() different functions if they are just aliases of each other? Can you fold them into one function?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:59
&gt; +        Task(CCTimer* timer) : CCThread::Task(0), m_timer(timer) { }

explicit on this constructor, please

can you expand the member initializations out to separate lines? we very rarely combine multiple statements to a single line in webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525733</commentid>
    <comment_count>8</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-12-21 15:35:09 -0800</bug_when>
    <thetext>Independent of this patch, I think we should eradicate all millisecond-unit measures out of CC. That way we dont have to deal with this confusion. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525737</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-21 15:39:16 -0800</bug_when>
    <thetext>That would work too, although we should still tag in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525741</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-12-21 15:40:43 -0800</bug_when>
    <thetext>Fine by me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525747</commentid>
    <comment_count>11</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-21 15:45:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 119963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119963&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:35
&gt; &gt; +#include &lt;cfloat&gt;
&gt; 
&gt; what is cfloat for? does it need to be included in this header?

Removed. It is leftover from the shrink.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:48
&gt; &gt; +    CCTimer(CCThread* thread, CCTimerClient* client) : m_client(client), m_thread(thread), m_task(0) { }
&gt; 
&gt; please expand the initializer list to one statement per line
&gt; to keep this header smaller and more readable could you move the implementations of the c&apos;tor/d&apos;tor into the .cpp? I don&apos;t expect this to be performance-critical code

Done

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:51
&gt; &gt; +    void startOneShot(double interval);
&gt; 
&gt; is this seconds, milliseconds, microseconds, something else? we try to tag parameter names that represent periods of time with a suffix to indicate the unit
&gt; CCThread and CCDelayBasedTimeSource both have time values of milliseconds with a &quot;Ms&quot; suffix, can we stick with that?

Done

However I totally agree with Nat that the use of millisecond is a source of confusion. Why not just use seconds?

&gt; can you document in the header what this function does if there&apos;s already a timer pending (looks like it cancels the previous task, which i think is great behavior but it should be documented)

Done

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:52
&gt; &gt; +    void stop() { deschedule(); }
&gt; 
&gt; why are stop() and deschedule() different functions if they are just aliases of each other? Can you fold them into one function?

Done

But I&apos;m a little bit reluctant to this. I designed them into 2 function because they have different semantics. deschedule() means to break the link between the task and the timer, where stop() is a public function that request the timer to cancel. deschedule() is a mean to cancel, but cancel does not necessarily need to be implemented this way.

Anyway, I agree with you that keep things simple is good, so I&apos;m fine with either way.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTimer.h:59
&gt; &gt; +        Task(CCTimer* timer) : CCThread::Task(0), m_timer(timer) { }
&gt; 
&gt; explicit on this constructor, please
&gt; 
&gt; can you expand the member initializations out to separate lines? we very rarely combine multiple statements to a single line in webkit

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525749</commentid>
    <comment_count>12</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-21 15:46:48 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; That would work too, although we should still tag in that case.

So other code will also migrate to use seconds eventually?

Personally I prefer seconds much better than milliseconds, but I agree with you that things should be unified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525780</commentid>
    <comment_count>13</comment_count>
      <attachid>120234</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-21 16:08:50 -0800</bug_when>
    <thetext>Created attachment 120234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525787</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 16:13:55 -0800</bug_when>
    <thetext>Attachment 120234 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
   97efa88..723f8ee  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 103468 = 97efa88a66ff7f597257cf86d0f8315cd016e1e3
r103470 = 723f8ee6c151d1039a19237711dc00f3284f27f8
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167519 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

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>525805</commentid>
    <comment_count>15</comment_count>
      <attachid>120237</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-21 16:25:17 -0800</bug_when>
    <thetext>Created attachment 120237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525815</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 16:28:58 -0800</bug_when>
    <thetext>Attachment 120237 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
   710a358..eea810d  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 103471 = 710a358c829343885bc1490e41fde775bbcdfd98
r103472 = 1044a8135bc559ae0c921f4d5fb016e6f39433e1
r103473 = eea810d79cfd732c04ef10cfc8da0e3793db3102
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167519 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

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>525829</commentid>
    <comment_count>17</comment_count>
      <attachid>120237</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-12-21 16:38:36 -0800</bug_when>
    <thetext>Comment on attachment 120237
Patch

I think the style bot is hosed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525854</commentid>
    <comment_count>18</comment_count>
      <attachid>120244</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2011-12-21 17:12:54 -0800</bug_when>
    <thetext>Created attachment 120244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525859</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 17:17:02 -0800</bug_when>
    <thetext>Attachment 120244 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
   7877ad0..e4a13f1  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 103474 = 7877ad0b253dfa76fd0208597dbae7ce5072fea0
r103475 = aa75dfaa601e7c5fcc0780716e0903da229dd1a5
r103476 = e4a13f19647c218b1fc1ce0ecc69c5ed16a4d7f4
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167528 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

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>528844</commentid>
    <comment_count>20</comment_count>
      <attachid>120244</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-03 10:43:12 -0800</bug_when>
    <thetext>Comment on attachment 120244
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530560</commentid>
    <comment_count>21</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-05 12:53:45 -0800</bug_when>
    <thetext>Committed r104199: &lt;http://trac.webkit.org/changeset/104199&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119702</attachid>
            <date>2011-12-16 17:04:06 -0800</date>
            <delta_ts>2011-12-19 17:17:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74769-20111216170405.patch</filename>
            <type>text/plain</type>
            <size>13179</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg2YjFhYjNlYjM0OTA5
YjRkNjkzZTNkMmM4NGJkZjYyMDg4YTA2Ni4uNzY3ODBjOTA2NzVhYjU2MmY0YmNhZDJiZjUzYjM1
ZmRjNjkyMTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTE2ICBUaWVu
IFJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBDQ1RpbWVyIGNsYXNzIGZvciB0aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworCUFkZCBDQ1RpbWVyIGNsYXNzIHRoYXQgaGFzIHNpbWlsYXIgaW50
ZXJmYWNlIGFzIFdlYkNvcmU6OlRpbWVyLCBidXQKKwljYW4gYmUgdXNlZCB3aXRoIENDVGhyZWFk
LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNDVGlt
ZXJCYXNlOjpUYXNrOjp+VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyQmFzZTo6VGFz
azo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lckJhc2U6OnN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXJCYXNlOjpkZXNjaGVkdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGltZXJCYXNlOjpzY2hlZHVsZVJlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXJCYXNlOjpDQ1RpbWVy
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyQmFzZTo6fkNDVGltZXJCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGltZXJCYXNlOjpzdGFydFJlcGVhdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RpbWVyQmFzZTo6c3RhcnRPbmVTaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXJCYXNlOjppc0FjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyQmFzZTo6VGFzazo6VGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RpbWVyQ2xpZW50Ojp+Q0NUaW1lckNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbWVyOjpDQ1RpbWVyKToKKwogMjAxMS0xMi0xNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIDwhRE9DVFlQRSBodG1sPjxwcmU+JiN4MGE7JiN4MGE7
QTwvcHJlPiBkb2Vzbid0IHBhcnNlIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAyMjMwZjliOGJiYzRhMzdhYjY2NDA3MGMzN2VkMTI3MWUxZGI5MzVkLi5mZGQwOGZlYTMy
Y2Q0YTU2ZWNmZTYxNzI2YzA3NTAzMjEwMTQ2MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTE2ICBUaWVuIFJlbiBDaGVuICA8dHJjaGVuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBDQ1RpbWVyIGNsYXNzIGZvciB0
aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCUFk
ZCBDQ1RpbWVyIGNsYXNzIHRoYXQgaGFzIHNpbWlsYXIgaW50ZXJmYWNlIGFzIFdlYkNvcmU6OlRp
bWVyLCBidXQKKwljYW4gYmUgdXNlZCB3aXRoIENDVGhyZWFkLgorCisgICAgICAgICogV2ViS2l0
Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NUaW1lclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ1RpbWVyVGVzdDo6Q0NUaW1lclRlc3QpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkNDVGltZXJUZXN0OjpvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisKIDIwMTEtMTItMTYgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJPYmplY3RTdG9yZS5jb3VudCgp
IGFuZCBJREJJbmRleC5jb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjliNjFiMWFjY2JkMmYz
YjY3NWY2ZjE0MmE4MDY0NmNjZTM1MWI3Yy4uNjc4MzNjNmE0NDFkYWY2MjNhZTRhMjJhYzgwZWRl
ZGNlNjczZDY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY1OSw2ICszNjU5LDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFRhc2suaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaW1lci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGltZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaW1lU291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYjFhOTM5YTk4ZjdjMDQxYWJhM2Q3ZjdmOTI2NDY4YzQ5ZGZjYjRlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaW1lci5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJjYy9DQ1RpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NUaW1lckJhc2U6OlRh
c2s6On5UYXNrKCkKK3sKKyAgICBpZiAoIW1fdGltZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IEFTU0VSVChtX3RpbWVyLT5tX3Rhc2sgPT0gdGhpcyk7CisgICAgbV90aW1lci0+ZGVzY2hlZHVs
ZSgpOworfQordm9pZCBDQ1RpbWVyQmFzZTo6VGFzazo6cGVyZm9ybVRhc2soKQoreworICAgIGlm
ICghbV90aW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90aW1lci0+ZmlyZWQoKTsKKyAg
ICBtX3RpbWVyLT5zY2hlZHVsZVJlcGVhdCgpOworfQorCit2b2lkIENDVGltZXJCYXNlOjpzdGFy
dChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKQoreworICAg
IGRlc2NoZWR1bGUoKTsKKworICAgIGlmIChuZXh0RmlyZUludGVydmFsID09IHNfaW52YWxpZElu
dGVydmFsKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Rhc2sgPSBuZXcgVGFzayh0aGlzKTsK
KyAgICBtX3RocmVhZC0+cG9zdERlbGF5ZWRUYXNrKGFkb3B0UHRyKG1fdGFzayksIG5leHRGaXJl
SW50ZXJ2YWwgKiAxMDAwKTsKKworICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZh
bDsKK30KKwordm9pZCBDQ1RpbWVyQmFzZTo6ZGVzY2hlZHVsZSgpCit7CisgICAgaWYgKCFtX3Rh
c2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGFzay0+bV90aW1lciA9IDA7CisgICAgbV90
YXNrID0gMDsKK30KKwordm9pZCBDQ1RpbWVyQmFzZTo6c2NoZWR1bGVSZXBlYXQoKQoreworICAg
IHN0YXJ0KG1fcmVwZWF0SW50ZXJ2YWwsIG1fcmVwZWF0SW50ZXJ2YWwpOworfQorCit2b2lkIEND
VGltZXI6OmZpcmVkKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5v
blRpbWVyRmlyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YWQ0OTc1ZTBlYzg3N2RiMjRlMDE4YjljZjhmYzIzODY3YmZmMTY1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaW1lci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDVGltZXJfaAorI2RlZmlu
ZSBDQ1RpbWVyX2gKKworI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCisjaW5jbHVkZSA8Y2Zsb2F0
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDVGltZXJCYXNlIHsKK3B1YmxpYzoK
KyAgICBDQ1RpbWVyQmFzZShDQ1RocmVhZCogdGhyZWFkKSA6IG1fdGhyZWFkKHRocmVhZCksIG1f
dGFzaygwKSB7IH0KKyAgICB2aXJ0dWFsIH5DQ1RpbWVyQmFzZSgpIHsgZGVzY2hlZHVsZSgpOyB9
CisKKyAgICB2b2lkIHN0YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBkb3VibGUgcmVwZWF0
SW50ZXJ2YWwpOworCisgICAgdm9pZCBzdGFydFJlcGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2
YWwpIHsgc3RhcnQocmVwZWF0SW50ZXJ2YWwsIHJlcGVhdEludGVydmFsKTsgfQorICAgIHZvaWQg
c3RhcnRPbmVTaG90KGRvdWJsZSBpbnRlcnZhbCkgeyBzdGFydChpbnRlcnZhbCwgc19pbnZhbGlk
SW50ZXJ2YWwpOyB9CisgICAgdm9pZCBzdG9wKCkgeyBzdGFydChzX2ludmFsaWRJbnRlcnZhbCwg
c19pbnZhbGlkSW50ZXJ2YWwpOyB9CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV90YXNrOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSA9IDA7
CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBzX2ludmFsaWRJbnRlcnZhbCA9
IERCTF9NQVg7CisKKyAgICBjbGFzcyBUYXNrIDogcHVibGljIENDVGhyZWFkOjpUYXNrIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFRhc2soQ0NUaW1lckJhc2UqIHRpbWVyKSA6IENDVGhyZWFkOjpU
YXNrKDApLCBtX3RpbWVyKHRpbWVyKSB7IH0KKyAgICAgICAgflRhc2soKTsKKyAgICAgICAgdm9p
ZCBwZXJmb3JtVGFzaygpOworICAgICAgICBDQ1RpbWVyQmFzZSAqbV90aW1lcjsgLy8gbnVsbCBp
ZiBjYW5jZWxsZWQKKyAgICB9OworCisgICAgdm9pZCBkZXNjaGVkdWxlKCk7CisgICAgdm9pZCBz
Y2hlZHVsZVJlcGVhdCgpOworCisgICAgQ0NUaHJlYWQqIG1fdGhyZWFkOworICAgIFRhc2sqIG1f
dGFzazsgLy8gd2VhayBwb2ludGVyCisgICAgZG91YmxlIG1fcmVwZWF0SW50ZXJ2YWw7Cit9Owor
CitjbGFzcyBDQ1RpbWVyOworCitjbGFzcyBDQ1RpbWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5DQ1RpbWVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZp
cmVkKENDVGltZXIqKSA9IDA7Cit9OworCitjbGFzcyBDQ1RpbWVyIDogcHVibGljIENDVGltZXJC
YXNlIHsKK3B1YmxpYzoKKyAgICBDQ1RpbWVyKENDVGhyZWFkKiB0aHJlYWQsIENDVGltZXJDbGll
bnQqIGNsaWVudCA9IDApIDogQ0NUaW1lckJhc2UodGhyZWFkKSwgbV9jbGllbnQoY2xpZW50KSB7
IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmlyZWQoKTsKKworcHJpdmF0ZToKKyAgICBDQ1Rp
bWVyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBkYjk5ODk3YzI1MzdkZjFjOTEw
ZTAxYTdjZjNkZDZjODNhZGVmZDZmLi4xNWNlOGI0MjczODdlZjllZWI0OWRlMDY4MzY4MGE1MTI3
M2Y4YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTY5LDYgKzY5LDcgQEAK
ICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0NDVGltZXJU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRmxvYXRRdWFkVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9G
cmFtZVRlc3RIZWxwZXJzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlt
ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTA3M2RjNjQ4ZTQ0OWFiYWM4OTViMzZlMTMwNzgzYmJk
NTEzZjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbWVyVGVzdC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgImNjL0NDVGltZXIuaCIKKworI2luY2x1ZGUgIkNDU2NoZWR1bGVyVGVzdENvbW1vbi5o
IgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOworCituYW1lc3BhY2UgeworCitjbGFzcyBDQ1Rp
bWVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgQ0NUaW1lckNsaWVudCB7Citw
dWJsaWM6CisgICAgQ0NUaW1lclRlc3QoKSA6IG1fZmxhZyhmYWxzZSkgeyB9CisKKyAgICB2b2lk
IG9uVGltZXJGaXJlZChDQ1RpbWVyKikgeyBtX2ZsYWcgPSB0cnVlOyB9CisgICAgCitwcm90ZWN0
ZWQ6CisgICAgRmFrZUNDVGhyZWFkIG1fdGhyZWFkOworICAgIGJvb2wgbV9mbGFnOworfTsKKwor
VEVTVF9GKENDVGltZXJUZXN0LCBSZXBlYXRpbmdUaGVuU3RvcCkKK3sKKyAgICBDQ1RpbWVyIHRp
bWVyKCZtX3RocmVhZCwgdGhpcyk7CisgICAgdGltZXIuc3RhcnQoMSwgMSk7CisKKyAgICBtX3Ro
cmVhZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVYUEVDVF9UUlVFKG1fZmxhZyk7CisKKyAgICBt
X2ZsYWcgPSBmYWxzZTsKKyAgICBtX3RocmVhZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVYUEVD
VF9UUlVFKG1fZmxhZyk7CisKKyAgICBtX2ZsYWcgPSBmYWxzZTsKKyAgICB0aW1lci5zdG9wKCk7
CisgICAgbV90aHJlYWQucnVuUGVuZGluZ1Rhc2soKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9mbGFn
KTsKK30KKworVEVTVF9GKENDVGltZXJUZXN0LCBOb25SZXBlYXRpbmcpCit7CisgICAgQ0NUaW1l
ciB0aW1lcigmbV90aHJlYWQsIHRoaXMpOworICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgxKTsKKwor
ICAgIG1fdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7CisgICAgRVhQRUNUX1RSVUUobV9mbGFnKTsK
KyAgICBFWFBFQ1RfRkFMU0UobV90aHJlYWQuaGFzUGVuZGluZ1Rhc2soKSk7Cit9CisKK1RFU1Rf
RihDQ1RpbWVyVGVzdCwgU3RvcEJ5U2NvcGUpCit7CisgICAgeworICAgICAgICBDQ1RpbWVyIHRp
bWVyKCZtX3RocmVhZCwgdGhpcyk7CisgICAgICAgIHRpbWVyLnN0YXJ0KDEsIDEpOworICAgIH0K
KworICAgIG1fdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7CisgICAgRVhQRUNUX0ZBTFNFKG1fZmxh
Zyk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119956</attachid>
            <date>2011-12-19 17:17:38 -0800</date>
            <delta_ts>2011-12-19 17:39:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74769-20111219171737.patch</filename>
            <type>text/plain</type>
            <size>12319</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMwZGQ4YjJkZjgyMjZi
NTIxMzAxMjgwZGFmMDM0NWU3YzM3Mzk0YS4uYTczMWRjZjIwZWViNjIxMWUyNjliNmViMjA5YWJm
M2ZiZjY1OWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTEyLTE2ICBUaWVu
IFJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBDQ1RpbWVyIGNsYXNzIGZvciB0aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaW1wbGUgdGltZXIgY2xhc3MgZm9yIEND
VGhyZWFkIHRoYXQgdGhlIHRpbWVyZWQgdGFzayBjYW4gYmUKKyAgICAgICAgbWFudWFsbHkgY2Fu
Y2VsbGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDVGltZXJCYXNlOjpUYXNrOjp+VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyQmFz
ZTo6VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lckJhc2U6OnN0
YXJ0T25lU2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyQmFzZTo6ZGVzY2hlZHVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDVGltZXJCYXNlOjpDQ1RpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyQmFz
ZTo6fkNDVGltZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXJCYXNlOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXJCYXNlOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbWVyQmFzZTo6VGFzazo6VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVy
Q2xpZW50Ojp+Q0NUaW1lckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpDQ1Rp
bWVyKToKKwogMjAxMS0xMi0xOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQiBtdWx0aXBsZSBjYWxscyB0byB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZShuYW1lKSBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIGluc3RhbmNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDJmMDhjY2Q3Y2NhMTU0NzBkNDYzZGVkOTQ2MDUzY2VlZDBiYmU2NTEu
LmIyZTJmNjRiOWMyY2NjZTg3MmFkMmQyZTQ3MDVhNzc0M2U1ZTJlYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMTYgIFRpZW4gUmVuIENoZW4g
IDx0cmNoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIENDVGltZXIg
Y2xhc3MgZm9yIHRoZSBjb21wb3NpdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSB0aW1lciBjbGFzcyBmb3IgQ0NUaHJlYWQgdGhh
dCB0aGUgdGltZXJlZCB0YXNrIGNhbiBiZQorICAgICAgICBtYW51YWxseSBjYW5jZWxsZWQuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbWVyVGVzdC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDVGltZXJUZXN0OjpDQ1RpbWVyVGVzdCk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NUaW1lclRlc3Q6Om9uVGltZXJGaXJlZCk6CisKIDIw
MTEtMTItMTkgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBb
Y2hyb21pdW1dIEFkZCBtb3JlIHVzaW5nIHN0YXRlbWVudHMgdG8gKHJlKWZpeCBDaHJvbWl1bSBi
dWlsZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4NTY5ODcwMTAzYTc4ZDMyM2YyYjI4YWMxNjdl
MjVhZjYxOThhNTQxLi42MzNiYWFlMjIwYWI3M2FlODg2NjM4MWViYTY0MGZjYTVlMGQ5NWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0zNjY4LDYgKzM2NjgsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFzay5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNw
cCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVTb3Vy
Y2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVmlkZW9MYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzM2I1
ZGM1NjFmNDNlZGZkYjBhNDFlMGZjZjM2MzcxMDQ2MmUzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNwcApA
QCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImNjL0NDVGltZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ1RpbWVyQmFzZTo6VGFzazo6flRhc2soKQor
eworICAgIGlmICghbV90aW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fdGlt
ZXItPm1fdGFzayA9PSB0aGlzKTsKKyAgICBtX3RpbWVyLT5kZXNjaGVkdWxlKCk7Cit9Cit2b2lk
IENDVGltZXJCYXNlOjpUYXNrOjpwZXJmb3JtVGFzaygpCit7CisgICAgaWYgKCFtX3RpbWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVyLT5maXJlZCgpOworfQorCit2b2lkIENDVGlt
ZXJCYXNlOjpzdGFydE9uZVNob3QoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwpCit7CisgICAgZGVz
Y2hlZHVsZSgpOworCisgICAgbV90YXNrID0gbmV3IFRhc2sodGhpcyk7CisgICAgbV90aHJlYWQt
PnBvc3REZWxheWVkVGFzayhhZG9wdFB0cihtX3Rhc2spLCBuZXh0RmlyZUludGVydmFsICogMTAw
MCk7Cit9CisKK3ZvaWQgQ0NUaW1lckJhc2U6OmRlc2NoZWR1bGUoKQoreworICAgIGlmICghbV90
YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Rhc2stPm1fdGltZXIgPSAwOworICAgIG1f
dGFzayA9IDA7Cit9CisKK3ZvaWQgQ0NUaW1lcjo6ZmlyZWQoKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPm9uVGltZXJGaXJlZCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc2NDQ3NGRjOGY3MmJlMmJiZmU3NTI5
NTU0YzAwMTBmYzYxNzNlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuaApAQCAtMCwwICsxLDg5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDQ1RpbWVyX2gKKyNkZWZpbmUgQ0NUaW1lcl9oCisKKyNpbmNsdWRlICJjYy9DQ1RocmVhZC5o
IgorI2luY2x1ZGUgPGNmbG9hdD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1Rp
bWVyQmFzZSB7CitwdWJsaWM6CisgICAgQ0NUaW1lckJhc2UoQ0NUaHJlYWQqIHRocmVhZCkgOiBt
X3RocmVhZCh0aHJlYWQpLCBtX3Rhc2soMCkgeyB9CisgICAgdmlydHVhbCB+Q0NUaW1lckJhc2Uo
KSB7IGRlc2NoZWR1bGUoKTsgfQorCisgICAgdm9pZCBzdGFydE9uZVNob3QoZG91YmxlIGludGVy
dmFsKTsKKyAgICB2b2lkIHN0b3AoKSB7IGRlc2NoZWR1bGUoKTsgfQorCisgICAgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFzazsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIGZpcmVkKCkgPSAwOworCitwcml2YXRlOgorICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMg
Q0NUaHJlYWQ6OlRhc2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGFzayhDQ1RpbWVyQmFzZSog
dGltZXIpIDogQ0NUaHJlYWQ6OlRhc2soMCksIG1fdGltZXIodGltZXIpIHsgfQorICAgICAgICB+
VGFzaygpOworICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKCk7CisgICAgICAgIENDVGltZXJCYXNl
ICptX3RpbWVyOyAvLyBudWxsIGlmIGNhbmNlbGxlZAorICAgIH07CisKKyAgICB2b2lkIGRlc2No
ZWR1bGUoKTsKKworICAgIENDVGhyZWFkKiBtX3RocmVhZDsKKyAgICBUYXNrKiBtX3Rhc2s7IC8v
IHdlYWsgcG9pbnRlcgorfTsKKworY2xhc3MgQ0NUaW1lcjsKKworY2xhc3MgQ0NUaW1lckNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q0NUaW1lckNsaWVudCgpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIG9uVGltZXJGaXJlZCgpID0gMDsKK307CisKK2NsYXNzIENDVGltZXIgOiBwdWJs
aWMgQ0NUaW1lckJhc2UgeworcHVibGljOgorICAgIENDVGltZXIoQ0NUaHJlYWQqIHRocmVhZCwg
Q0NUaW1lckNsaWVudCogY2xpZW50ID0gMCkgOiBDQ1RpbWVyQmFzZSh0aHJlYWQpLCBtX2NsaWVu
dChjbGllbnQpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaXJlZCgpOworCitwcml2YXRl
OgorICAgIENDVGltZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IGExMGQ5MGNm
N2JlMGM2YmZhYzZkNGZkODcyYjhhZjc4YTU5Yjk5ZWUuLjQzNGZhYzZlMTI2YzM0Njc2YTAwNDA0
Zjg5YmI3MGRmOWY5Mzc3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNzAs
NiArNzAsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRhc2tUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVz
dHMvQ0NUaW1lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GbG9hdFF1YWRUZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGltZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaW1lclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5OGI2OTU2MjhmMTUwMGQwODU1NTY0
NjRjNjdkNGEyYjI0MzY3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGltZXJUZXN0LmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiY2MvQ0NUaW1lci5oIgorCisjaW5jbHVkZSAiQ0NTY2hlZHVsZXJU
ZXN0Q29tbW9uLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CisKK25hbWVzcGFjZSB7CisK
K2NsYXNzIENDVGltZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBDQ1RpbWVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBDQ1RpbWVyVGVzdCgpIDogbV9mbGFnKGZhbHNlKSB7IH0K
KworICAgIHZvaWQgb25UaW1lckZpcmVkKCkgeyBtX2ZsYWcgPSB0cnVlOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBGYWtlQ0NUaHJlYWQgbV90aHJlYWQ7CisgICAgYm9vbCBtX2ZsYWc7Cit9OworCitU
RVNUX0YoQ0NUaW1lclRlc3QsIE9uZVNob3QpCit7CisgICAgQ0NUaW1lciB0aW1lcigmbV90aHJl
YWQsIHRoaXMpOworICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgxKTsKKworICAgIG1fdGhyZWFkLnJ1
blBlbmRpbmdUYXNrKCk7CisgICAgRVhQRUNUX1RSVUUobV9mbGFnKTsKKyAgICBFWFBFQ1RfRkFM
U0UobV90aHJlYWQuaGFzUGVuZGluZ1Rhc2soKSk7Cit9CisKK1RFU1RfRihDQ1RpbWVyVGVzdCwg
U3RvcE1hbnVhbGx5KQoreworICAgIENDVGltZXIgdGltZXIoJm1fdGhyZWFkLCB0aGlzKTsKKyAg
ICB0aW1lci5zdGFydE9uZVNob3QoMSk7CisgICAgdGltZXIuc3RvcCgpOworCisgICAgbV90aHJl
YWQucnVuUGVuZGluZ1Rhc2soKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9mbGFnKTsKKyAgICBFWFBF
Q1RfRkFMU0UobV90aHJlYWQuaGFzUGVuZGluZ1Rhc2soKSk7Cit9CisKK1RFU1RfRihDQ1RpbWVy
VGVzdCwgU3RvcEJ5U2NvcGUpCit7CisgICAgeworICAgICAgICBDQ1RpbWVyIHRpbWVyKCZtX3Ro
cmVhZCwgdGhpcyk7CisgICAgICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgxKTsKKyAgICB9CisKKyAg
ICBtX3RocmVhZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVYUEVDVF9GQUxTRShtX2ZsYWcpOwor
fQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119963</attachid>
            <date>2011-12-19 17:39:17 -0800</date>
            <delta_ts>2011-12-21 16:08:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74769-20111219173916.patch</filename>
            <type>text/plain</type>
            <size>11889</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMwZGQ4YjJkZjgyMjZi
NTIxMzAxMjgwZGFmMDM0NWU3YzM3Mzk0YS4uZDY5MjFmNmQyMWU5ZjE5MTNlNjNkNGUyY2ZmNWE4
MDlkZjgyZThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTEyLTE2ICBUaWVu
IFJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBDQ1RpbWVyIGNsYXNzIGZvciB0aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaW1wbGUgdGltZXIgY2xhc3MgZm9yIEND
VGhyZWFkIHRoYXQgdGhlIHRpbWVyZWQgdGFzayBjYW4gYmUKKyAgICAgICAgbWFudWFsbHkgY2Fu
Y2VsbGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDVGltZXI6OlRhc2s6On5UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXI6OlRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXI6OnN0YXJ0T25lU2hvdCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpkZXNjaGVkdWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaW1lckNsaWVudDo6fkNDVGltZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaW1lcjo6Q0NUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjp+Q0NUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGltZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXI6OlRhc2s6OlRhc2sp
OgorCiAyMDExLTEyLTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgSW5kZXhlZERCIG11bHRpcGxlIGNhbGxzIHRvIHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KG5hbWUpIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgaW5zdGFuY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMmYwOGNjZDdjY2ExNTQ3MGQ0NjNkZWQ5NDYwNTNjZWVkMGJiZTY1MS4uYjJl
MmY2NGI5YzJjY2NlODcyYWQyZDJlNDcwNWE3NzQzZTVlMmVjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMi0xNiAgVGllbiBSZW4gQ2hlbiAgPHRy
Y2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgQ0NUaW1lciBjbGFz
cyBmb3IgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgc2ltcGxlIHRpbWVyIGNsYXNzIGZvciBDQ1RocmVhZCB0aGF0IHRo
ZSB0aW1lcmVkIHRhc2sgY2FuIGJlCisgICAgICAgIG1hbnVhbGx5IGNhbmNlbGxlZC4KKworICAg
ICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDVGltZXJUZXN0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NUaW1lclRlc3Q6OkNDVGltZXJUZXN0KToKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpDQ1RpbWVyVGVzdDo6b25UaW1lckZpcmVkKToKKwogMjAxMS0x
Mi0xOSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQWRkIG1vcmUgdXNpbmcgc3RhdGVtZW50cyB0byAocmUpZml4IENocm9taXVtIGJ1aWxk
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg1Njk4NzAxMDNhNzhkMzIzZjJiMjhhYzE2N2UyNWFm
NjE5OGE1NDEuLjYzM2JhYWUyMjBhYjczYWU4ODY2MzgxZWJhNjQwZmNhNWUwZDk1ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM2NjgsNiArMzY2OCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRUYXNrLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0xheWVySW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2NGY1OTI0
ZWQyNmRiYmZmMmFmNGIxZDA2NjQ0NWFmNWMxYTY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiY2MvQ0NUaW1lci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDVGltZXI6OlRhc2s6On5UYXNrKCkKK3sKKyAgICBp
ZiAoIW1fdGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3RpbWVyLT5tX3Rh
c2sgPT0gdGhpcyk7CisgICAgbV90aW1lci0+ZGVzY2hlZHVsZSgpOworfQordm9pZCBDQ1RpbWVy
OjpUYXNrOjpwZXJmb3JtVGFzaygpCit7CisgICAgaWYgKCFtX3RpbWVyIHx8ICFtX3RpbWVyLT5t
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90aW1lci0+bV9jbGllbnQtPm9uVGlt
ZXJGaXJlZCgpOworfQorCit2b2lkIENDVGltZXI6OnN0YXJ0T25lU2hvdChkb3VibGUgbmV4dEZp
cmVJbnRlcnZhbCkKK3sKKyAgICBkZXNjaGVkdWxlKCk7CisKKyAgICBtX3Rhc2sgPSBuZXcgVGFz
ayh0aGlzKTsKKyAgICBtX3RocmVhZC0+cG9zdERlbGF5ZWRUYXNrKGFkb3B0UHRyKG1fdGFzayks
IG5leHRGaXJlSW50ZXJ2YWwgKiAxMDAwKTsKK30KKwordm9pZCBDQ1RpbWVyOjpkZXNjaGVkdWxl
KCkKK3sKKyAgICBpZiAoIW1fdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90YXNrLT5t
X3RpbWVyID0gMDsKKyAgICBtX3Rhc2sgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U1MTE2MmQ3NTAxNTBkMGYzMDZiMGU1YzEwNzRjNDYw
MmI4YzVhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGltZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1RpbWVy
X2gKKyNkZWZpbmUgQ0NUaW1lcl9oCisKKyNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgorI2luY2x1
ZGUgPGNmbG9hdD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1RpbWVyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DQ1RpbWVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgb25UaW1lckZpcmVkKCkgPSAwOworfTsKKworY2xhc3MgQ0NUaW1lciB7CitwdWJs
aWM6CisgICAgQ0NUaW1lcihDQ1RocmVhZCogdGhyZWFkLCBDQ1RpbWVyQ2xpZW50KiBjbGllbnQp
IDogbV9jbGllbnQoY2xpZW50KSwgbV90aHJlYWQodGhyZWFkKSwgbV90YXNrKDApIHsgfQorICAg
IH5DQ1RpbWVyKCkgeyBkZXNjaGVkdWxlKCk7IH0KKworICAgIHZvaWQgc3RhcnRPbmVTaG90KGRv
dWJsZSBpbnRlcnZhbCk7CisgICAgdm9pZCBzdG9wKCkgeyBkZXNjaGVkdWxlKCk7IH0KKworICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3Rhc2s7IH0KKworcHJpdmF0ZToKKyAg
ICBjbGFzcyBUYXNrIDogcHVibGljIENDVGhyZWFkOjpUYXNrIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFRhc2soQ0NUaW1lciogdGltZXIpIDogQ0NUaHJlYWQ6OlRhc2soMCksIG1fdGltZXIodGlt
ZXIpIHsgfQorICAgICAgICB+VGFzaygpOworICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKCk7Cisg
ICAgICAgIENDVGltZXIgKm1fdGltZXI7IC8vIG51bGwgaWYgY2FuY2VsbGVkCisgICAgfTsKKwor
ICAgIHZvaWQgZGVzY2hlZHVsZSgpOworCisgICAgQ0NUaW1lckNsaWVudCogbV9jbGllbnQ7Cisg
ICAgQ0NUaHJlYWQqIG1fdGhyZWFkOworICAgIFRhc2sqIG1fdGFzazsgLy8gd2VhayBwb2ludGVy
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkKaW5kZXggYTEwZDkwY2Y3YmUwYzZiZmFjNmQ0ZmQ4NzJiOGFmNzhhNTliOTll
ZS4uNDM0ZmFjNmUxMjZjMzQ2NzZhMDA0MDRmODliYjcwZGY5ZjkzNzdiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCkBAIC03MCw2ICs3MCw3IEBACiAgICAgICAgICAgICAndGVzdHMv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGFza1Rl
c3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1RpbWVyVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRl
c3RIZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaW1lclRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbWVyVGVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjk4YjY5NTYyOGYxNTAwZDA4NTU1NjQ2NGM2N2Q0YTJiMjQzNjc0MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaW1lclRlc3QuY3BwCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1RpbWVyLmgi
CisKKyNpbmNsdWRlICJDQ1NjaGVkdWxlclRlc3RDb21tb24uaCIKKyNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXRUZXN0czsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgQ0NUaW1lclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCwgcHVibGljIENDVGltZXJDbGllbnQgeworcHVibGljOgorICAgIENDVGltZXJU
ZXN0KCkgOiBtX2ZsYWcoZmFsc2UpIHsgfQorCisgICAgdm9pZCBvblRpbWVyRmlyZWQoKSB7IG1f
ZmxhZyA9IHRydWU7IH0KKworcHJvdGVjdGVkOgorICAgIEZha2VDQ1RocmVhZCBtX3RocmVhZDsK
KyAgICBib29sIG1fZmxhZzsKK307CisKK1RFU1RfRihDQ1RpbWVyVGVzdCwgT25lU2hvdCkKK3sK
KyAgICBDQ1RpbWVyIHRpbWVyKCZtX3RocmVhZCwgdGhpcyk7CisgICAgdGltZXIuc3RhcnRPbmVT
aG90KDEpOworCisgICAgbV90aHJlYWQucnVuUGVuZGluZ1Rhc2soKTsKKyAgICBFWFBFQ1RfVFJV
RShtX2ZsYWcpOworICAgIEVYUEVDVF9GQUxTRShtX3RocmVhZC5oYXNQZW5kaW5nVGFzaygpKTsK
K30KKworVEVTVF9GKENDVGltZXJUZXN0LCBTdG9wTWFudWFsbHkpCit7CisgICAgQ0NUaW1lciB0
aW1lcigmbV90aHJlYWQsIHRoaXMpOworICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgxKTsKKyAgICB0
aW1lci5zdG9wKCk7CisKKyAgICBtX3RocmVhZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVYUEVD
VF9GQUxTRShtX2ZsYWcpOworICAgIEVYUEVDVF9GQUxTRShtX3RocmVhZC5oYXNQZW5kaW5nVGFz
aygpKTsKK30KKworVEVTVF9GKENDVGltZXJUZXN0LCBTdG9wQnlTY29wZSkKK3sKKyAgICB7Cisg
ICAgICAgIENDVGltZXIgdGltZXIoJm1fdGhyZWFkLCB0aGlzKTsKKyAgICAgICAgdGltZXIuc3Rh
cnRPbmVTaG90KDEpOworICAgIH0KKworICAgIG1fdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG1fZmxhZyk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120234</attachid>
            <date>2011-12-21 16:08:50 -0800</date>
            <delta_ts>2011-12-21 16:25:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74769-20111221160849.patch</filename>
            <type>text/plain</type>
            <size>11976</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMwZGQ4YjJkZjgyMjZi
NTIxMzAxMjgwZGFmMDM0NWU3YzM3Mzk0YS4uNzhlMDVhODQ2MWQ1NzYzNDMzOTViYjMzZDg3MWIz
YTAzZGJkMTUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTIxICBUaWVu
IFJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBDQ1RpbWVyIGNsYXNzIGZvciB0aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaW1wbGUgdGltZXIgY2xhc3MgZm9yIEND
VGhyZWFkIHRoYXQgdGhlIHRpbWVyZWQgdGFzayBjYW4gYmUKKyAgICAgICAgbWFudWFsbHkgY2Fu
Y2VsbGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDVGltZXI6OlRhc2s6OlRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6VGFzazo6
flRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6VGFzazo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6Q0NUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbWVyOjp+Q0NUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpzdGFydE9uZVNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNDVGltZXJDbGllbnQ6On5DQ1RpbWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGltZXI6OmlzQWN0aXZlKToKKwogMjAxMS0xMi0xOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQiBtdWx0aXBsZSBjYWxscyB0byB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZShuYW1lKSBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIGluc3RhbmNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJmMDhjY2Q3Y2NhMTU0NzBkNDYzZGVkOTQ2MDUz
Y2VlZDBiYmU2NTEuLjJiOGZjNmMyM2UzM2E2YjY4ODFiNjhlZmQ5NzYzMmFkYzkxNTI0ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMjEgIFRp
ZW4gUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
QWRkIENDVGltZXIgY2xhc3MgZm9yIHRoZSBjb21wb3NpdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc2OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSB0aW1lciBjbGFzcyBmb3Ig
Q0NUaHJlYWQgdGhhdCB0aGUgdGltZXJlZCB0YXNrIGNhbiBiZQorICAgICAgICBtYW51YWxseSBj
YW5jZWxsZWQuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ1Rp
bWVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDVGltZXJUZXN0OjpD
Q1RpbWVyVGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NUaW1lclRlc3Q6Om9uVGltZXJG
aXJlZCk6CisKIDIwMTEtMTItMTkgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbY2hyb21pdW1dIEFkZCBtb3JlIHVzaW5nIHN0YXRlbWVudHMgdG8gKHJlKWZp
eCBDaHJvbWl1bSBidWlsZGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4NTY5ODcwMTAzYTc4ZDMy
M2YyYjI4YWMxNjdlMjVhZjYxOThhNTQxLi42MzNiYWFlMjIwYWI3M2FlODg2NjM4MWViYTY0MGZj
YTVlMGQ5NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjY4LDYgKzM2NjgsOCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFzay5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
ZExheWVySW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbWVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaW1lci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbWVTb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkY2Y4OTEyMzFiYWFjZTdiMzM2OGMyMzM0M2FjOTdiYTAxYjRiN2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbWVyLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImNjL0NDVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ1RpbWVyOjpUYXNrOjpU
YXNrKENDVGltZXIqIHRpbWVyKQorICAgIDogQ0NUaHJlYWQ6OlRhc2soMCkKKyAgICAsIG1fdGlt
ZXIodGltZXIpCit7Cit9CisKK0NDVGltZXI6OlRhc2s6On5UYXNrKCkKK3sKKyAgICBpZiAoIW1f
dGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3RpbWVyLT5tX3Rhc2sgPT0g
dGhpcyk7CisgICAgbV90aW1lci0+c3RvcCgpOworfQordm9pZCBDQ1RpbWVyOjpUYXNrOjpwZXJm
b3JtVGFzaygpCit7CisgICAgaWYgKCFtX3RpbWVyIHx8ICFtX3RpbWVyLT5tX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV90aW1lci0+bV9jbGllbnQtPm9uVGltZXJGaXJlZCgpOwor
fQorCitDQ1RpbWVyOjpDQ1RpbWVyKENDVGhyZWFkKiB0aHJlYWQsIENDVGltZXJDbGllbnQqIGNs
aWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fdGhyZWFkKHRocmVhZCkKKyAg
ICAsIG1fdGFzaygwKQoreworfQorCitDQ1RpbWVyOjp+Q0NUaW1lcigpCit7CisgICAgc3RvcCgp
OworfQorCit2b2lkIENDVGltZXI6OnN0YXJ0T25lU2hvdChkb3VibGUgaW50ZXJ2YWxNcykKK3sK
KyAgICBzdG9wKCk7CisKKyAgICBtX3Rhc2sgPSBuZXcgVGFzayh0aGlzKTsKKyAgICBtX3RocmVh
ZC0+cG9zdERlbGF5ZWRUYXNrKGFkb3B0UHRyKG1fdGFzayksIGludGVydmFsTXMpOworfQorCit2
b2lkIENDVGltZXI6OnN0b3AoKQoreworICAgIGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3Rhc2stPm1fdGltZXIgPSAwOworICAgIG1fdGFzayA9IDA7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTQyYjcxYTdlYWQwOWQ0
MjRmNWU5Y2ExMDk2ZWY0MzlkMjg0OTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIENDVGltZXJfaAorI2RlZmluZSBDQ1RpbWVyX2gKKworI2luY2x1ZGUgImNjL0ND
VGhyZWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NUaW1lckNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q0NUaW1lckNsaWVudCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIG9uVGltZXJGaXJlZCgpID0gMDsKK307CisKK2NsYXNzIENDVGltZXIgeworcHVibGlj
OgorICAgIENDVGltZXIoQ0NUaHJlYWQqLCBDQ1RpbWVyQ2xpZW50Kik7CisgICAgfkNDVGltZXIo
KTsKKworICAgIC8vIElmIGEgcHJldmlvdXMgdGFzayBpcyBwZW5kaW5nLCBpdCB3aWxsIGJlIHJl
cGxhY2VkIHdpdGggdGhlIG5ldyBvbmUuCisgICAgdm9pZCBzdGFydE9uZVNob3QoZG91YmxlIGlu
dGVydmFsTXMpOworICAgIHZvaWQgc3RvcCgpOworCisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFzazsgfQorCitwcml2YXRlOgorICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMg
Q0NUaHJlYWQ6OlRhc2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgVGFzayhDQ1Rp
bWVyKik7CisgICAgICAgIH5UYXNrKCk7CisgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soKTsKKyAg
ICAgICAgQ0NUaW1lciAqbV90aW1lcjsgLy8gbnVsbCBpZiBjYW5jZWxsZWQKKyAgICB9OworCisg
ICAgQ0NUaW1lckNsaWVudCogbV9jbGllbnQ7CisgICAgQ0NUaHJlYWQqIG1fdGhyZWFkOworICAg
IFRhc2sqIG1fdGFzazsgLy8gd2VhayBwb2ludGVyCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYTEwZDkwY2Y3
YmUwYzZiZmFjNmQ0ZmQ4NzJiOGFmNzhhNTliOTllZS4uNDM0ZmFjNmUxMjZjMzQ2NzZhMDA0MDRm
ODliYjcwZGY5ZjkzNzdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC03MCw2
ICs3MCw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGFza1Rlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0
cy9DQ1RpbWVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaW1lclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbWVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk4YjY5NTYyOGYxNTAwZDA4NTU1NjQ2
NGM2N2Q0YTJiMjQzNjc0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaW1lclRlc3QuY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCisKKyNpbmNsdWRlICJDQ1NjaGVkdWxlclRl
c3RDb21tb24uaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKKworbmFtZXNwYWNlIHsKKwor
Y2xhc3MgQ0NUaW1lclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIENDVGltZXJD
bGllbnQgeworcHVibGljOgorICAgIENDVGltZXJUZXN0KCkgOiBtX2ZsYWcoZmFsc2UpIHsgfQor
CisgICAgdm9pZCBvblRpbWVyRmlyZWQoKSB7IG1fZmxhZyA9IHRydWU7IH0KKworcHJvdGVjdGVk
OgorICAgIEZha2VDQ1RocmVhZCBtX3RocmVhZDsKKyAgICBib29sIG1fZmxhZzsKK307CisKK1RF
U1RfRihDQ1RpbWVyVGVzdCwgT25lU2hvdCkKK3sKKyAgICBDQ1RpbWVyIHRpbWVyKCZtX3RocmVh
ZCwgdGhpcyk7CisgICAgdGltZXIuc3RhcnRPbmVTaG90KDEpOworCisgICAgbV90aHJlYWQucnVu
UGVuZGluZ1Rhc2soKTsKKyAgICBFWFBFQ1RfVFJVRShtX2ZsYWcpOworICAgIEVYUEVDVF9GQUxT
RShtX3RocmVhZC5oYXNQZW5kaW5nVGFzaygpKTsKK30KKworVEVTVF9GKENDVGltZXJUZXN0LCBT
dG9wTWFudWFsbHkpCit7CisgICAgQ0NUaW1lciB0aW1lcigmbV90aHJlYWQsIHRoaXMpOworICAg
IHRpbWVyLnN0YXJ0T25lU2hvdCgxKTsKKyAgICB0aW1lci5zdG9wKCk7CisKKyAgICBtX3RocmVh
ZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVYUEVDVF9GQUxTRShtX2ZsYWcpOworICAgIEVYUEVD
VF9GQUxTRShtX3RocmVhZC5oYXNQZW5kaW5nVGFzaygpKTsKK30KKworVEVTVF9GKENDVGltZXJU
ZXN0LCBTdG9wQnlTY29wZSkKK3sKKyAgICB7CisgICAgICAgIENDVGltZXIgdGltZXIoJm1fdGhy
ZWFkLCB0aGlzKTsKKyAgICAgICAgdGltZXIuc3RhcnRPbmVTaG90KDEpOworICAgIH0KKworICAg
IG1fdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7CisgICAgRVhQRUNUX0ZBTFNFKG1fZmxhZyk7Cit9
CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120237</attachid>
            <date>2011-12-21 16:25:17 -0800</date>
            <delta_ts>2011-12-21 17:12:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74769-20111221162516.patch</filename>
            <type>text/plain</type>
            <size>11996</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg5N2RmMjNiN2IwNjll
ZjIxNzZjZTU5NGRhYmNhNGFiODAwNzc0YS4uN2I1ZmFhNmNiMjI0NWQ1NTI3ZTI0Y2NiN2U1MGY5
ZmJiMDE3ZWY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTIxICBUaWVu
IFJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBDQ1RpbWVyIGNsYXNzIGZvciB0aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaW1wbGUgdGltZXIgY2xhc3MgZm9yIEND
VGhyZWFkIHRoYXQgdGhlIHRpbWVyZWQgdGFzayBjYW4gYmUKKyAgICAgICAgbWFudWFsbHkgY2Fu
Y2VsbGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDVGltZXI6OlRhc2s6OlRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6VGFzazo6
flRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6VGFzazo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6Q0NUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RpbWVyOjp+Q0NUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpzdGFydE9uZVNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNDVGltZXJDbGllbnQ6On5DQ1RpbWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGltZXI6OmlzQWN0aXZlKToKKwogMjAxMS0xMi0yMSAgV3lhdHQgQ2Fyc3MgIDx3Y2Fyc3NAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggN2E5NzJiOGYzZGYwMWJmNGQ2OGIxNDJjZGI0MGQ3MDdiMWZj
Y2MzYS4uM2QxNmU0MTk1MjQxMzczNDBlZTk5NGQ2MzlmMDczM2E2OTNmNGIxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMi0yMSAgVGllbiBSZW4g
Q2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgQ0NU
aW1lciBjbGFzcyBmb3IgdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2ltcGxlIHRpbWVyIGNsYXNzIGZvciBDQ1RocmVh
ZCB0aGF0IHRoZSB0aW1lcmVkIHRhc2sgY2FuIGJlCisgICAgICAgIG1hbnVhbGx5IGNhbmNlbGxl
ZC4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDVGltZXJUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NUaW1lclRlc3Q6OkNDVGltZXJU
ZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ1RpbWVyVGVzdDo6b25UaW1lckZpcmVkKToK
KwogMjAxMS0xMi0yMCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNpb24gQVBJXSByZWZhY3RvciBleHRlbnNpb24g
QVBJIGJ1aWxkIGNvZGUsIGV4cG9zZSBleHBlcmltZW50YWwgQVBJcyBjb25kaXRpb25hbGx5IGlu
IGNocm9taXVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMTEyMTFmM2FiY2E2NGQwNDU3YzFmNGI1N2Zi
NmRkN2YxMmQzY2RmZS4uNDZmODczZjg1ZDg1MjJlNjE5ZGFiNGU3YjI2MjQ0MTUxNDY4MTgxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY2NCw2ICszNjY0LDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFRhc2suaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291
cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGNm
ODkxMjMxYmFhY2U3YjMzNjhjMjMzNDNhYzk3YmEwMWI0YjdhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5jcHAK
QEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbWVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NUaW1lcjo6VGFzazo6VGFzayhDQ1RpbWVy
KiB0aW1lcikKKyAgICA6IENDVGhyZWFkOjpUYXNrKDApCisgICAgLCBtX3RpbWVyKHRpbWVyKQor
eworfQorCitDQ1RpbWVyOjpUYXNrOjp+VGFzaygpCit7CisgICAgaWYgKCFtX3RpbWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV90aW1lci0+bV90YXNrID09IHRoaXMpOworICAg
IG1fdGltZXItPnN0b3AoKTsKK30KK3ZvaWQgQ0NUaW1lcjo6VGFzazo6cGVyZm9ybVRhc2soKQor
eworICAgIGlmICghbV90aW1lciB8fCAhbV90aW1lci0+bV9jbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdGltZXItPm1fY2xpZW50LT5vblRpbWVyRmlyZWQoKTsKK30KKworQ0NUaW1l
cjo6Q0NUaW1lcihDQ1RocmVhZCogdGhyZWFkLCBDQ1RpbWVyQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3RocmVhZCh0aHJlYWQpCisgICAgLCBtX3Rhc2so
MCkKK3sKK30KKworQ0NUaW1lcjo6fkNDVGltZXIoKQoreworICAgIHN0b3AoKTsKK30KKwordm9p
ZCBDQ1RpbWVyOjpzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsTXMpCit7CisgICAgc3RvcCgp
OworCisgICAgbV90YXNrID0gbmV3IFRhc2sodGhpcyk7CisgICAgbV90aHJlYWQtPnBvc3REZWxh
eWVkVGFzayhhZG9wdFB0cihtX3Rhc2spLCBpbnRlcnZhbE1zKTsKK30KKwordm9pZCBDQ1RpbWVy
OjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90
YXNrLT5tX3RpbWVyID0gMDsKKyAgICBtX3Rhc2sgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU0MmI3MWE3ZWFkMDlkNDI0ZjVlOWNhMTA5
NmVmNDM5ZDI4NDk2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
Q1RpbWVyX2gKKyNkZWZpbmUgQ0NUaW1lcl9oCisKKyNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDVGltZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkNDVGltZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblRp
bWVyRmlyZWQoKSA9IDA7Cit9OworCitjbGFzcyBDQ1RpbWVyIHsKK3B1YmxpYzoKKyAgICBDQ1Rp
bWVyKENDVGhyZWFkKiwgQ0NUaW1lckNsaWVudCopOworICAgIH5DQ1RpbWVyKCk7CisKKyAgICAv
LyBJZiBhIHByZXZpb3VzIHRhc2sgaXMgcGVuZGluZywgaXQgd2lsbCBiZSByZXBsYWNlZCB3aXRo
IHRoZSBuZXcgb25lLgorICAgIHZvaWQgc3RhcnRPbmVTaG90KGRvdWJsZSBpbnRlcnZhbE1zKTsK
KyAgICB2b2lkIHN0b3AoKTsKKworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X3Rhc2s7IH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBUYXNrIDogcHVibGljIENDVGhyZWFkOjpU
YXNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IFRhc2soQ0NUaW1lciopOworICAg
ICAgICB+VGFzaygpOworICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKCk7CisgICAgICAgIENDVGlt
ZXIgKm1fdGltZXI7IC8vIG51bGwgaWYgY2FuY2VsbGVkCisgICAgfTsKKworICAgIENDVGltZXJD
bGllbnQqIG1fY2xpZW50OworICAgIENDVGhyZWFkKiBtX3RocmVhZDsKKyAgICBUYXNrKiBtX3Rh
c2s7IC8vIHdlYWsgcG9pbnRlcgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IGU2NzRiYjZiODViMDg1Y2FiYWNj
OWQ5ZDY0OTk5M2Q1ZDYyZmU1Y2YuLmJmNTFmNTNhMTNiZDRjZjNlZjA1Nzk3YTlmNjQzYmFkM2M3
MzNkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNzUsNiArNzUsNyBAQAog
ICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oJywKICAgICAgICAgICAg
ICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVh
ZFRhc2tUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NUaW1lclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9Db21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAg
ICAgICAgICAgICAndGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbWVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGltZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOThi
Njk1NjI4ZjE1MDBkMDg1NTU2NDY0YzY3ZDRhMmIyNDM2NzQwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbWVyVGVzdC5jcHAKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDVGltZXIuaCIKKworI2lu
Y2x1ZGUgIkNDU2NoZWR1bGVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3Rz
OworCituYW1lc3BhY2UgeworCitjbGFzcyBDQ1RpbWVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0LCBwdWJsaWMgQ0NUaW1lckNsaWVudCB7CitwdWJsaWM6CisgICAgQ0NUaW1lclRlc3QoKSA6
IG1fZmxhZyhmYWxzZSkgeyB9CisKKyAgICB2b2lkIG9uVGltZXJGaXJlZCgpIHsgbV9mbGFnID0g
dHJ1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgRmFrZUNDVGhyZWFkIG1fdGhyZWFkOworICAgIGJv
b2wgbV9mbGFnOworfTsKKworVEVTVF9GKENDVGltZXJUZXN0LCBPbmVTaG90KQoreworICAgIEND
VGltZXIgdGltZXIoJm1fdGhyZWFkLCB0aGlzKTsKKyAgICB0aW1lci5zdGFydE9uZVNob3QoMSk7
CisKKyAgICBtX3RocmVhZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVYUEVDVF9UUlVFKG1fZmxh
Zyk7CisgICAgRVhQRUNUX0ZBTFNFKG1fdGhyZWFkLmhhc1BlbmRpbmdUYXNrKCkpOworfQorCitU
RVNUX0YoQ0NUaW1lclRlc3QsIFN0b3BNYW51YWxseSkKK3sKKyAgICBDQ1RpbWVyIHRpbWVyKCZt
X3RocmVhZCwgdGhpcyk7CisgICAgdGltZXIuc3RhcnRPbmVTaG90KDEpOworICAgIHRpbWVyLnN0
b3AoKTsKKworICAgIG1fdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7CisgICAgRVhQRUNUX0ZBTFNF
KG1fZmxhZyk7CisgICAgRVhQRUNUX0ZBTFNFKG1fdGhyZWFkLmhhc1BlbmRpbmdUYXNrKCkpOwor
fQorCitURVNUX0YoQ0NUaW1lclRlc3QsIFN0b3BCeVNjb3BlKQoreworICAgIHsKKyAgICAgICAg
Q0NUaW1lciB0aW1lcigmbV90aHJlYWQsIHRoaXMpOworICAgICAgICB0aW1lci5zdGFydE9uZVNo
b3QoMSk7CisgICAgfQorCisgICAgbV90aHJlYWQucnVuUGVuZGluZ1Rhc2soKTsKKyAgICBFWFBF
Q1RfRkFMU0UobV9mbGFnKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120244</attachid>
            <date>2011-12-21 17:12:54 -0800</date>
            <delta_ts>2012-01-03 10:43:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74769-20111221171253.patch</filename>
            <type>text/plain</type>
            <size>12182</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5MWQ1YTk0ZWE5ZmFi
NmM0MDdjOGQ1NmJmZDQ5ZDU4YmFiYTFhOC4uYTQyOTZlODE5YmRlNmEwYmQxMWMyMTdmZjJmYTE3
ZjFhYmM5ODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTIxICBUaWVu
IFJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBDQ1RpbWVyIGNsYXNzIGZvciB0aGUgY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaW1wbGUgdGltZXIgY2xhc3MgZm9yIEND
VGhyZWFkIHRoYXQgdGhlIHRpbWVyZWQgdGFzayBjYW4gYmUKKyAgICAgICAgbWFudWFsbHkgY2Fu
Y2VsbGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDVGltZXJUYXNrOjpDQ1RpbWVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyVGFz
azo6fkNDVGltZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXJUYXNrOjpwZXJmb3Jt
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpDQ1RpbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGltZXI6On5DQ1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGltZXI6OnN0
YXJ0T25lU2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbWVyOjpzdG9wKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaW1lckNsaWVudDo6fkNDVGltZXJDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaW1lcjo6aXNBY3RpdmUpOgorCiAyMDExLTEyLTIxICBQZXItRXJpayBCcm9kaW4g
IDxwZXItZXJpay5icm9kaW5AZXJpY3Nzb24uY29tPgogCiAgICAgICAgIERpc2NhcmQgZXZlbnQg
ZGF0YSBub3QgZm9sbG93ZWQgYnkgYW4gZW1wdHkgbGluZSBiZWZvcmUgZW9mIHdoZW4gcGFyc2lu
ZyBhbiBldmVudC1zdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2E5NzJiOGYz
ZGYwMWJmNGQ2OGIxNDJjZGI0MGQ3MDdiMWZjY2MzYS4uNDE2MDI2MDBkY2UwODY2YzMyMDliZTcw
YjM4YzlhMDI2MDVmNDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMS0xMi0yMSAgVGllbiBSZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBBZGQgQ0NUaW1lciBjbGFzcyBmb3IgdGhlIGNvbXBvc2l0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2lt
cGxlIHRpbWVyIGNsYXNzIGZvciBDQ1RocmVhZCB0aGF0IHRoZSB0aW1lcmVkIHRhc2sgY2FuIGJl
CisgICAgICAgIG1hbnVhbGx5IGNhbmNlbGxlZC4KKworICAgICAgICAqIFdlYktpdC5neXBpOgor
ICAgICAgICAqIHRlc3RzL0NDVGltZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRU
ZXN0czo6Q0NUaW1lclRlc3Q6OkNDVGltZXJUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q1RpbWVyVGVzdDo6b25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0Yp
OgorCiAyMDExLTEyLTIwICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbiBBUEldIHJlZmFjdG9yIGV4dGVuc2lv
biBBUEkgYnVpbGQgY29kZSwgZXhwb3NlIGV4cGVyaW1lbnRhbCBBUElzIGNvbmRpdGlvbmFsbHkg
aW4gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxMTIxMWYzYWJjYTY0ZDA0NTdjMWY0YjU3
ZmI2ZGQ3ZjEyZDNjZGZlLi40NmY4NzNmODVkODUyMmU2MTlkYWI0ZTdiMjYyNDQxNTE0NjgxODE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjY0LDYgKzM2NjQsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFzay5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1l
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVT
b3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
Y2M2MTMwNWMxOTg5ZWVlYjdhN2ZjZDU2OTViYjJjMjBiODZkZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmNw
cApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImNjL0NDVGlt
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1RpbWVyVGFzayA6IHB1Ymxp
YyBDQ1RocmVhZDo6VGFzayB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ0NUaW1lclRhc2soQ0NU
aW1lciogdGltZXIpCisgICAgICAgIDogQ0NUaHJlYWQ6OlRhc2soMCkKKyAgICAgICAgLCBtX3Rp
bWVyKHRpbWVyKQorICAgIHsKKyAgICB9CisKKyAgICB+Q0NUaW1lclRhc2soKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3RpbWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VS
VChtX3RpbWVyLT5tX3Rhc2sgPT0gdGhpcyk7CisgICAgICAgIG1fdGltZXItPnN0b3AoKTsKKyAg
ICB9CisKKyAgICB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB7CisgICAgICAgIGlmICghbV90aW1l
ciB8fCAhbV90aW1lci0+bV9jbGllbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bV90aW1lci0+bV9jbGllbnQtPm9uVGltZXJGaXJlZCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgQ0NUaW1lcjsKKworICAgIENDVGltZXIqIG1fdGltZXI7IC8vIG51bGwg
aWYgY2FuY2VsbGVkCit9OworCitDQ1RpbWVyOjpDQ1RpbWVyKENDVGhyZWFkKiB0aHJlYWQsIEND
VGltZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fdGhy
ZWFkKHRocmVhZCkKKyAgICAsIG1fdGFzaygwKQoreworfQorCitDQ1RpbWVyOjp+Q0NUaW1lcigp
Cit7CisgICAgc3RvcCgpOworfQorCit2b2lkIENDVGltZXI6OnN0YXJ0T25lU2hvdChkb3VibGUg
aW50ZXJ2YWxNcykKK3sKKyAgICBzdG9wKCk7CisKKyAgICBtX3Rhc2sgPSBuZXcgQ0NUaW1lclRh
c2sodGhpcyk7CisgICAgbV90aHJlYWQtPnBvc3REZWxheWVkVGFzayhhZG9wdFB0cihtX3Rhc2sp
LCBpbnRlcnZhbE1zKTsKK30KKwordm9pZCBDQ1RpbWVyOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1f
dGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90YXNrLT5tX3RpbWVyID0gMDsKKyAgICBt
X3Rhc2sgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjhkYjVlMTg5MzhmMDhmNTJhMTFjYTcxMGJjMmFlM2RkMmMzNzdiMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGltZXIuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1RpbWVyX2gKKyNkZWZpbmUgQ0NUaW1l
cl9oCisKKyNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENDVGltZXJUYXNrOworCitjbGFzcyBDQ1RpbWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5DQ1RpbWVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1l
ckZpcmVkKCkgPSAwOworfTsKKworY2xhc3MgQ0NUaW1lciB7CitwdWJsaWM6CisgICAgQ0NUaW1l
cihDQ1RocmVhZCosIENDVGltZXJDbGllbnQqKTsKKyAgICB+Q0NUaW1lcigpOworCisgICAgLy8g
SWYgYSBwcmV2aW91cyB0YXNrIGlzIHBlbmRpbmcsIGl0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0
aGUgbmV3IG9uZS4KKyAgICB2b2lkIHN0YXJ0T25lU2hvdChkb3VibGUgaW50ZXJ2YWxNcyk7Cisg
ICAgdm9pZCBzdG9wKCk7CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV90
YXNrOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENDVGltZXJUYXNrOworCisgICAg
Q0NUaW1lckNsaWVudCogbV9jbGllbnQ7CisgICAgQ0NUaHJlYWQqIG1fdGhyZWFkOworICAgIEND
VGltZXJUYXNrKiBtX3Rhc2s7IC8vIHdlYWsgcG9pbnRlcgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IGU2NzRi
YjZiODViMDg1Y2FiYWNjOWQ5ZDY0OTk5M2Q1ZDYyZmU1Y2YuLmJmNTFmNTNhMTNiZDRjZjNlZjA1
Nzk3YTlmNjQzYmFkM2M3MzNkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAt
NzUsNiArNzUsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5o
JywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9DQ1RocmVhZFRhc2tUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NUaW1l
clRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9Db21wb3NpdG9yRmFrZUdyYXBoaWNzQ29u
dGV4dDNELmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVz
dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbWVy
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGltZXJUZXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yOThiNjk1NjI4ZjE1MDBkMDg1NTU2NDY0YzY3ZDRhMmIyNDM2NzQwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbWVyVGVzdC5j
cHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0ND
VGltZXIuaCIKKworI2luY2x1ZGUgIkNDU2NoZWR1bGVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdFRlc3RzOworCituYW1lc3BhY2UgeworCitjbGFzcyBDQ1RpbWVyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgQ0NUaW1lckNsaWVudCB7CitwdWJsaWM6CisgICAg
Q0NUaW1lclRlc3QoKSA6IG1fZmxhZyhmYWxzZSkgeyB9CisKKyAgICB2b2lkIG9uVGltZXJGaXJl
ZCgpIHsgbV9mbGFnID0gdHJ1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgRmFrZUNDVGhyZWFkIG1f
dGhyZWFkOworICAgIGJvb2wgbV9mbGFnOworfTsKKworVEVTVF9GKENDVGltZXJUZXN0LCBPbmVT
aG90KQoreworICAgIENDVGltZXIgdGltZXIoJm1fdGhyZWFkLCB0aGlzKTsKKyAgICB0aW1lci5z
dGFydE9uZVNob3QoMSk7CisKKyAgICBtX3RocmVhZC5ydW5QZW5kaW5nVGFzaygpOworICAgIEVY
UEVDVF9UUlVFKG1fZmxhZyk7CisgICAgRVhQRUNUX0ZBTFNFKG1fdGhyZWFkLmhhc1BlbmRpbmdU
YXNrKCkpOworfQorCitURVNUX0YoQ0NUaW1lclRlc3QsIFN0b3BNYW51YWxseSkKK3sKKyAgICBD
Q1RpbWVyIHRpbWVyKCZtX3RocmVhZCwgdGhpcyk7CisgICAgdGltZXIuc3RhcnRPbmVTaG90KDEp
OworICAgIHRpbWVyLnN0b3AoKTsKKworICAgIG1fdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG1fZmxhZyk7CisgICAgRVhQRUNUX0ZBTFNFKG1fdGhyZWFkLmhhc1Bl
bmRpbmdUYXNrKCkpOworfQorCitURVNUX0YoQ0NUaW1lclRlc3QsIFN0b3BCeVNjb3BlKQorewor
ICAgIHsKKyAgICAgICAgQ0NUaW1lciB0aW1lcigmbV90aHJlYWQsIHRoaXMpOworICAgICAgICB0
aW1lci5zdGFydE9uZVNob3QoMSk7CisgICAgfQorCisgICAgbV90aHJlYWQucnVuUGVuZGluZ1Rh
c2soKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9mbGFnKTsKK30KKworfQo=
</data>
<flag name="review"
          id="120473"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>