<?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>142675</bug_id>
          
          <creation_ts>2015-03-13 11:47:13 -0700</creation_ts>
          <short_desc>GCTimer should know keep track of nested GC phases</short_desc>
          <delta_ts>2015-03-20 19:03:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          
          <blocked>140774</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenb</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenb</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076977</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-13 11:47:13 -0700</bug_when>
    <thetext>This would improve the GC phase timing output in Heap.cpp by linking phases nested inside other phases together, allowing tools to compute how much time we&apos;re spending in various nested phases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076978</commentid>
    <comment_count>1</comment_count>
      <attachid>248594</attachid>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-13 11:51:54 -0700</bug_when>
    <thetext>Created attachment 248594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076979</commentid>
    <comment_count>2</comment_count>
      <attachid>248595</attachid>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-13 11:52:45 -0700</bug_when>
    <thetext>Created attachment 248595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076980</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-13 11:55:00 -0700</bug_when>
    <thetext>What license should I put on the python script?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076982</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-13 11:57:05 -0700</bug_when>
    <thetext>Example output:

mhahnenberg-mbp:WebKit mhahnenberg$ cat ~/gc_timings2.txt | ~/gc_timing_parser.py
Collect - All total: 987.99, avg: 12.05 - 100.00%
     MarkRoots - All total: 479.16, avg: 5.84 - 48.50%
          VisitingLiveWeakHandles - All total: 112.62, avg: 1.37 - 23.50%
          VisitConservativeRoots - All total: 97.95, avg: 1.19 - 20.44%
          VisitStrongHandles - All total: 78.15, avg: 0.95 - 16.31%
          Convergence - All total: 76.83, avg: 0.94 - 16.03%
          VisitProtectedObjects - All total: 52.80, avg: 0.64 - 11.02%
          GatherStackRoots - All total: 19.24, avg: 0.23 - 4.02%
          TraceCodeBlocksAndJITStubRoutines - All total: 5.81, avg: 0.07 - 1.21%
          ClearLivenessData - All total: 4.91, avg: 0.06 - 1.02%
          ClearRememberedSet - All total: 2.16, avg: 0.03 - 0.45%
          VisitSmallStrings - All total: 0.31, avg: 0.00 - 0.06%
          GatherScratchBufferRoots - All total: 0.07, avg: 0.00 - 0.01%
          VisitHandleStack - All total: 0.04, avg: 0.00 - 0.01%
          VisitTempSortVectors - All total: 0.02, avg: 0.00 - 0.00%
          MarkingArgumentBuffers - All total: 0.02, avg: 0.00 - 0.00%
          MarkingException - All total: 0.01, avg: 0.00 - 0.00%
     FinalizeUnconditionalFinalizers - All total: 231.55, avg: 2.82 - 23.44%
     DeleteCodeBlocks - All total: 186.24, avg: 2.27 - 18.85%
          ClearUnmarkedExecutables - All total: 13.83, avg: 0.17 - 7.43%
     ReapingWeakHandles - All total: 27.50, avg: 0.34 - 2.78%
     StopAllocation - All total: 20.96, avg: 0.26 - 2.12%
     CopyBackingStores - All total: 19.07, avg: 0.23 - 1.93%
     DeleteSourceProviderCaches - All total: 12.12, avg: 0.15 - 1.23%
     PruningStaleEntriesFromWeakGCMaps - All total: 7.12, avg: 0.09 - 0.72%
     NotifyIncrementalSweeper - All total: 1.38, avg: 0.02 - 0.14%
     SnapshotMarkedSpace - All total: 1.07, avg: 0.01 - 0.11%
     ResetAllocators - All total: 0.55, avg: 0.01 - 0.06%
     FinalizeDFGWorklists - All total: 0.24, avg: 0.00 - 0.02%
     ResumeCompilerThreads - All total: 0.15, avg: 0.00 - 0.02%
     FlushWriteBarrierBuffer - All total: 0.14, avg: 0.00 - 0.01%
     RememberCurrentlyExecutingCodeBlocks - All total: 0.06, avg: 0.00 - 0.01%
     UpdateAllocationLimits - All total: 0.05, avg: 0.00 - 0.01%
     SweepingArrayBuffers - All total: 0.04, avg: 0.00 - 0.00%
     FinishingCollection - All total: 0.04, avg: 0.00 - 0.00%
     FlushOldStructureIDTables - All total: 0.02, avg: 0.00 - 0.00%
     DeleteOldCode - All total: 0.00, avg: 0.00 - 0.00%
StartingCollection - All total: 1.03, avg: 0.01 - 100.00%
SuspendCompilerThreads - All total: 0.75, avg: 0.01 - 100.00%

Collect - Eden total: 434.29, avg: 6.39 - 100.00%
     MarkRoots - Eden total: 217.62, avg: 3.20 - 50.11%
          VisitConservativeRoots - Eden total: 70.45, avg: 1.04 - 32.37%
          VisitingLiveWeakHandles - Eden total: 48.12, avg: 0.71 - 22.11%
          VisitStrongHandles - Eden total: 25.56, avg: 0.38 - 11.75%
          GatherStackRoots - Eden total: 17.19, avg: 0.25 - 7.90%
          Convergence - Eden total: 15.43, avg: 0.23 - 7.09%
          VisitProtectedObjects - Eden total: 9.62, avg: 0.14 - 4.42%
          TraceCodeBlocksAndJITStubRoutines - Eden total: 4.70, avg: 0.07 - 2.16%
          ClearRememberedSet - Eden total: 2.16, avg: 0.03 - 0.99%
          ClearLivenessData - Eden total: 1.29, avg: 0.02 - 0.59%
          GatherScratchBufferRoots - Eden total: 0.06, avg: 0.00 - 0.03%
          VisitHandleStack - Eden total: 0.03, avg: 0.00 - 0.01%
          VisitSmallStrings - Eden total: 0.02, avg: 0.00 - 0.01%
          VisitTempSortVectors - Eden total: 0.02, avg: 0.00 - 0.01%
          MarkingArgumentBuffers - Eden total: 0.02, avg: 0.00 - 0.01%
          MarkingException - Eden total: 0.01, avg: 0.00 - 0.00%
     FinalizeUnconditionalFinalizers - Eden total: 105.18, avg: 1.55 - 24.22%
     DeleteCodeBlocks - Eden total: 48.44, avg: 0.71 - 11.15%
          ClearUnmarkedExecutables - Eden total: 6.07, avg: 0.09 - 12.53%
     StopAllocation - Eden total: 18.28, avg: 0.27 - 4.21%
     CopyBackingStores - Eden total: 18.00, avg: 0.26 - 4.14%
     ReapingWeakHandles - Eden total: 12.96, avg: 0.19 - 2.98%
     DeleteSourceProviderCaches - Eden total: 10.93, avg: 0.16 - 2.52%
     NotifyIncrementalSweeper - Eden total: 1.23, avg: 0.02 - 0.28%
     ResetAllocators - Eden total: 0.45, avg: 0.01 - 0.10%
     FinalizeDFGWorklists - Eden total: 0.16, avg: 0.00 - 0.04%
     SnapshotMarkedSpace - Eden total: 0.14, avg: 0.00 - 0.03%
     FlushWriteBarrierBuffer - Eden total: 0.13, avg: 0.00 - 0.03%
     RememberCurrentlyExecutingCodeBlocks - Eden total: 0.05, avg: 0.00 - 0.01%
     UpdateAllocationLimits - Eden total: 0.05, avg: 0.00 - 0.01%
     SweepingArrayBuffers - Eden total: 0.03, avg: 0.00 - 0.01%
     FlushOldStructureIDTables - Eden total: 0.02, avg: 0.00 - 0.00%
     FinishingCollection - Eden total: 0.02, avg: 0.00 - 0.00%
     PruningStaleEntriesFromWeakGCMaps - Eden total: 0.01, avg: 0.00 - 0.00%
     DeleteOldCode - Eden total: 0.00, avg: nan - 0.00%
     ResumeCompilerThreads - Eden total: 0.00, avg: nan - 0.00%
SuspendCompilerThreads - Eden total: 0.00, avg: nan - 100.00%
StartingCollection - Eden total: 0.00, avg: nan - 100.00%

Collect - Full total: 553.69, avg: 39.55 - 100.00%
     MarkRoots - Full total: 261.54, avg: 18.68 - 47.24%
          VisitingLiveWeakHandles - Full total: 64.49, avg: 4.61 - 24.66%
          Convergence - Full total: 61.40, avg: 4.39 - 23.48%
          VisitStrongHandles - Full total: 52.59, avg: 3.76 - 20.11%
          VisitProtectedObjects - Full total: 43.19, avg: 3.08 - 16.51%
          VisitConservativeRoots - Full total: 27.49, avg: 1.96 - 10.51%
          ClearLivenessData - Full total: 3.62, avg: 0.26 - 1.38%
          GatherStackRoots - Full total: 2.05, avg: 0.15 - 0.78%
          TraceCodeBlocksAndJITStubRoutines - Full total: 1.11, avg: 0.08 - 0.42%
          VisitSmallStrings - Full total: 0.30, avg: 0.02 - 0.11%
          GatherScratchBufferRoots - Full total: 0.01, avg: 0.00 - 0.00%
          VisitHandleStack - Full total: 0.01, avg: 0.00 - 0.00%
          VisitTempSortVectors - Full total: 0.00, avg: 0.00 - 0.00%
          MarkingArgumentBuffers - Full total: 0.00, avg: 0.00 - 0.00%
          MarkingException - Full total: 0.00, avg: 0.00 - 0.00%
          ClearRememberedSet - Full total: 0.00, avg: 0.00 - 0.00%
     DeleteCodeBlocks - Full total: 137.79, avg: 9.84 - 24.89%
          ClearUnmarkedExecutables - Full total: 7.76, avg: 0.55 - 5.63%
     FinalizeUnconditionalFinalizers - Full total: 126.37, avg: 9.03 - 22.82%
     ReapingWeakHandles - Full total: 14.54, avg: 1.04 - 2.63%
     PruningStaleEntriesFromWeakGCMaps - Full total: 7.11, avg: 0.51 - 1.28%
     StopAllocation - Full total: 2.68, avg: 0.19 - 0.48%
     DeleteSourceProviderCaches - Full total: 1.18, avg: 0.08 - 0.21%
     CopyBackingStores - Full total: 1.07, avg: 0.08 - 0.19%
     SnapshotMarkedSpace - Full total: 0.92, avg: 0.07 - 0.17%
     NotifyIncrementalSweeper - Full total: 0.15, avg: 0.01 - 0.03%
     ResumeCompilerThreads - Full total: 0.15, avg: 0.00 - 0.03%
     ResetAllocators - Full total: 0.10, avg: 0.01 - 0.02%
     FinalizeDFGWorklists - Full total: 0.08, avg: 0.01 - 0.01%
     SweepingArrayBuffers - Full total: 0.01, avg: 0.00 - 0.00%
     RememberCurrentlyExecutingCodeBlocks - Full total: 0.01, avg: 0.00 - 0.00%
     FinishingCollection - Full total: 0.01, avg: 0.00 - 0.00%
     DeleteOldCode - Full total: 0.00, avg: 0.00 - 0.00%
     FlushOldStructureIDTables - Full total: 0.00, avg: 0.00 - 0.00%
     FlushWriteBarrierBuffer - Full total: 0.00, avg: 0.00 - 0.00%
     UpdateAllocationLimits - Full total: 0.00, avg: 0.00 - 0.00%
StartingCollection - Full total: 1.03, avg: 0.01 - 100.00%
SuspendCompilerThreads - Full total: 0.75, avg: 0.01 - 100.00%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076987</commentid>
    <comment_count>5</comment_count>
      <attachid>248595</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-13 12:21:44 -0700</bug_when>
    <thetext>Comment on attachment 248595
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078080</commentid>
    <comment_count>6</comment_count>
      <attachid>248898</attachid>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-17 18:55:26 -0700</bug_when>
    <thetext>Created attachment 248898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078081</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-17 18:55:53 -0700</bug_when>
    <thetext>Added license.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078236</commentid>
    <comment_count>8</comment_count>
      <attachid>248898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-18 10:10:18 -0700</bug_when>
    <thetext>Comment on attachment 248898
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:84
&gt; +        , m_parent(nullptr)

In new code it’s better to initialize these things at their declaration site:

    GCTimer* m_parent { nullptr };

Better than listing in the constructor(s) when the type is a neutral value like nullptr.
    
Also, struct members should not have &quot;m_&quot; prefixes on them. In WebKit coding style, private class members should, but for structs it’s not helpful.

&gt; Source/JavaScriptCore/heap/Heap.cpp:98
&gt; +        if (!m_parent)
&gt; +            m_parent = parent;
&gt; +        ASSERT(m_parent == parent);

This seems strange. What exactly does the if (!m_parent) protect against?

Given that this is a struct, I’m not sure it’s helpful to have this set function for this one particular member.

&gt; Source/JavaScriptCore/heap/Heap.cpp:159
&gt;      GCTimerScope(GCTimer* timer, HeapOperation collectionType)

GCTimer argument should be a reference, I think, not a pointer.

&gt; Source/JavaScriptCore/heap/Heap.cpp:177
&gt;      GCTimer* m_timer;
&gt;      double m_start;
&gt;      HeapOperation m_collectionType;
&gt; +    GCTimer* m_previousGlobalTimer;

Again, if this is a struct, then I don’t think we should have m_ prefixes on these.

Doesn’t make sense that we need both GCTimer::m_parent and GCTimerScope::m_previousGlobalTimer. I suggest we just use m_timer-&gt;m_parent instead of m_previousGlobalTimer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078257</commentid>
    <comment_count>9</comment_count>
      <attachid>248944</attachid>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-18 11:29:04 -0700</bug_when>
    <thetext>Created attachment 248944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078258</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-18 11:29:35 -0700</bug_when>
    <thetext>Fixed up all the GCTimer/GCCounter related structs w/ Darin&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079018</commentid>
    <comment_count>11</comment_count>
      <attachid>248944</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-20 19:03:23 -0700</bug_when>
    <thetext>Comment on attachment 248944
Patch

Clearing flags on attachment: 248944

Committed r181821: &lt;http://trac.webkit.org/changeset/181821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079019</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-20 19:03:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248594</attachid>
            <date>2015-03-13 11:51:54 -0700</date>
            <delta_ts>2015-03-13 11:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142675-20150313115127.patch</filename>
            <type>text/plain</type>
            <size>8534</size>
            <attacher name="Mark Hahnenberg">mhahnenb</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNDgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTAzLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYkBnbWFpbC5jb20+CisKKyAg
ICAgICAgR0NUaW1lciBzaG91bGQga25vdyBrZWVwIHRyYWNrIG9mIG5lc3RlZCBHQyBwaGFzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd291
bGQgaW1wcm92ZSB0aGUgR0MgcGhhc2UgdGltaW5nIG91dHB1dCBpbiBIZWFwLmNwcCBieSBsaW5r
aW5nCisgICAgICAgIHBoYXNlcyBuZXN0ZWQgaW5zaWRlIG90aGVyIHBoYXNlcyB0b2dldGhlciwg
YWxsb3dpbmcgdG9vbHMgdG8gY29tcHV0ZQorICAgICAgICBob3cgbXVjaCB0aW1lIHdlJ3JlIHNw
ZW5kaW5nIGluIHZhcmlvdXMgbmVzdGVkIHBoYXNlcy4KKworICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6CisKIDIwMTUtMDMtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IgbmVlZHMgdG8gYmUgcmUtZW50cmFudCB0byBzdXBwb3J0
IG1pcmFuZGEgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
cmV2aXNpb24gMTgxNDUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIHsgCiBzdGF0aWMgY29u
c3Qgc2l6ZV90IGxhcmdlSGVhcFNpemUgPSAzMiAqIE1COyAvLyBBYm91dCAxLjVYIHRoZSBhdmVy
YWdlIHdlYnBhZ2UuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsSGVhcFNpemUgPSAxICogTUI7
IC8vIE1hdGNoZXMgdGhlIEZhc3RNYWxsb2MgcGVyLXRocmVhZCBjYWNoZS4KIAotI2RlZmluZSBF
TkFCTEVfR0NfTE9HR0lORyAwCisjZGVmaW5lIEVOQUJMRV9HQ19MT0dHSU5HIDEKIAogI2lmIEVO
QUJMRShHQ19MT0dHSU5HKQogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAtODEsNiArODEsNyBAQCBz
dGF0aWMgdHlwZSBuYW1lIGFyZ3VtZW50czsKIHN0cnVjdCBHQ1RpbWVyIHsKICAgICBHQ1RpbWVy
KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9w
YXJlbnQobnVsbHB0cikKICAgICB7CiAgICAgfQogICAgIH5HQ1RpbWVyKCkKQEAgLTkwLDYgKzkx
LDEzIEBAIHN0cnVjdCBHQ1RpbWVyIHsKICAgICAgICAgbG9nRGF0YShtX2Z1bGxDb2xsZWN0aW9u
RGF0YSwgIihGdWxsKSIpOwogICAgIH0KIAorICAgIHZvaWQgc2V0UGFyZW50VGltZXIoR0NUaW1l
ciogcGFyZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAgICAgIG1f
cGFyZW50ID0gcGFyZW50OworICAgICAgICBBU1NFUlQobV9wYXJlbnQgPT0gcGFyZW50KTsKKyAg
ICB9CisKICAgICBzdHJ1Y3QgVGltZVJlY29yZCB7CiAgICAgICAgIFRpbWVSZWNvcmQoKQogICAg
ICAgICAgICAgOiBtX3RpbWUoMCkKQEAgLTEwNyw5ICsxMTUsMTEgQEAgc3RydWN0IEdDVGltZXIg
ewogCiAgICAgdm9pZCBsb2dEYXRhKGNvbnN0IFRpbWVSZWNvcmQmIGRhdGEsIGNvbnN0IGNoYXIq
IGV4dHJhKQogICAgIHsKLSAgICAgICAgZGF0YUxvZ0YoIlslZF0gJXMgJXM6ICUuMmxmbXMgKGF2
Zy4gJS4ybGYsIG1pbi4gJS4ybGYsIG1heC4gJS4ybGYsIGNvdW50ICVsdSlcbiIsIAorICAgICAg
ICBkYXRhTG9nRigiWyVkXSAlcyAoUGFyZW50OiAlcykgJXM6ICUuMmxmbXMgKGF2Zy4gJS4ybGYs
IG1pbi4gJS4ybGYsIG1heC4gJS4ybGYsIGNvdW50ICVsdSlcbiIsIAogICAgICAgICAgICAgZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLAotICAgICAgICAgICAgbV9uYW1lLCBleHRyYSwgCisgICAgICAg
ICAgICBtX25hbWUsCisgICAgICAgICAgICBtX3BhcmVudCA/IG1fcGFyZW50LT5tX25hbWUgOiAi
bnVsbHB0ciIsCisgICAgICAgICAgICBleHRyYSwgCiAgICAgICAgICAgICBkYXRhLm1fdGltZSAq
IDEwMDAsIAogICAgICAgICAgICAgZGF0YS5tX3RpbWUgKiAxMDAwIC8gZGF0YS5tX2NvdW50LCAK
ICAgICAgICAgICAgIGRhdGEubV9taW4gKiAxMDAwLCAKQEAgLTEzNCwyNyArMTQ0LDM3IEBAIHN0
cnVjdCBHQ1RpbWVyIHsKICAgICAgICAgdXBkYXRlRGF0YShtX2FsbENvbGxlY3Rpb25EYXRhLCBk
dXJhdGlvbik7CiAgICAgfQogCisgICAgc3RhdGljIEdDVGltZXIqIHNfY3VycmVudEdsb2JhbFRp
bWVyOworCiAgICAgVGltZVJlY29yZCBtX2FsbENvbGxlY3Rpb25EYXRhOwogICAgIFRpbWVSZWNv
cmQgbV9mdWxsQ29sbGVjdGlvbkRhdGE7CiAgICAgVGltZVJlY29yZCBtX2VkZW5Db2xsZWN0aW9u
RGF0YTsKICAgICBjb25zdCBjaGFyKiBtX25hbWU7CisgICAgR0NUaW1lciogbV9wYXJlbnQ7CiB9
OwogCitHQ1RpbWVyKiBHQ1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxUaW1lciA9IG51bGxwdHI7CisK
IHN0cnVjdCBHQ1RpbWVyU2NvcGUgewogICAgIEdDVGltZXJTY29wZShHQ1RpbWVyKiB0aW1lciwg
SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKICAgICAgICAgOiBtX3RpbWVyKHRpbWVyKQog
ICAgICAgICAsIG1fc3RhcnQoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKICAg
ICAgICAgLCBtX2NvbGxlY3Rpb25UeXBlKGNvbGxlY3Rpb25UeXBlKQorICAgICAgICAsIG1fcHJl
dmlvdXNHbG9iYWxUaW1lcihHQ1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxUaW1lcikKICAgICB7Cisg
ICAgICAgIG1fdGltZXItPnNldFBhcmVudFRpbWVyKG1fcHJldmlvdXNHbG9iYWxUaW1lcik7Cisg
ICAgICAgIEdDVGltZXI6OnNfY3VycmVudEdsb2JhbFRpbWVyID0gbV90aW1lcjsKICAgICB9CiAg
ICAgfkdDVGltZXJTY29wZSgpCiAgICAgewogICAgICAgICBkb3VibGUgZGVsdGEgPSBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydDsKICAgICAgICAgbV90aW1lci0+
ZGlkRmluaXNoUGhhc2UobV9jb2xsZWN0aW9uVHlwZSwgZGVsdGEpOworICAgICAgICBHQ1RpbWVy
OjpzX2N1cnJlbnRHbG9iYWxUaW1lciA9IG1fcHJldmlvdXNHbG9iYWxUaW1lcjsKICAgICB9CiAg
ICAgR0NUaW1lciogbV90aW1lcjsKICAgICBkb3VibGUgbV9zdGFydDsKICAgICBIZWFwT3BlcmF0
aW9uIG1fY29sbGVjdGlvblR5cGU7CisgICAgR0NUaW1lciogbV9wcmV2aW91c0dsb2JhbFRpbWVy
OwogfTsKIAogc3RydWN0IEdDQ291bnRlciB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE0ODIpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxNS0wMy0xMyAgTWFyayBI
YWhuZW5iZXJnICA8bWhhaG5lbmJAZ21haWwuY29tPgorCisgICAgICAgIEdDVGltZXIgc2hvdWxk
IGtub3cga2VlcCB0cmFjayBvZiBuZXN0ZWQgR0MgcGhhc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgdG9vbCB0byBhaWQgaW4gcGFyc2lu
ZyB0aGUgR0MgcGhhc2UgdGltaW5nIG91dHB1dCBpbnRvIGEKKyAgICAgICAgdHJlZS1saWtlIHN0
cnVjdHVyZSBiYXNlZCBvbiB0aGUgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMgb2YgbmVzdGVk
CisgICAgICAgIEdDIHBoYXNlcy4KKworICAgICAgICAqIFNjcmlwdHMvcGFyc2UtZ2MtcGhhc2Ut
dGltaW5nczogQWRkZWQuCisgICAgICAgIChUaW1pbmcpOgorICAgICAgICAoVGltaW5nLl9faW5p
dF9fKToKKyAgICAgICAgKFRpbWluZy5fX3VuaWNvZGVfXyk6CisgICAgICAgIChUaW1pbmcuX19z
dHJfXyk6CisgICAgICAgIChUaW1pbmcuX19yZXByX18pOgorICAgICAgICAocGFyc2VfaW5wdXQp
OgorICAgICAgICAocHJpbnRfdGltaW5nX25vZGUpOgorICAgICAgICAocHJpbnRfdGltaW5nX3Ry
ZWUpOgorICAgICAgICAobGlua19wYXJlbnRzKToKKyAgICAgICAgKG1haW4pOgorCiAyMDE1LTAz
LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAg
ICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRlIHRoZSBwcm9jZXNz
IG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0cyBmcm9tIGl0Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3BhcnNlLWdjLXBoYXNlLXRpbWluZ3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9wYXJzZS1nYy1waGFzZS10aW1pbmdzCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvU2NyaXB0cy9wYXJzZS1nYy1waGFzZS10aW1pbmdzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTA4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGZpbGVpbnB1dAoraW1w
b3J0IHJlCisKK1RJTUlOR19SRUdFWCA9IHJlLmNvbXBpbGUoCisgICAgcideXFsoP1A8cGlkPlsw
LTldKylcXSAnCisgICAgJyg/UDxuYW1lPlteIF0rKSAnCisgICAgJ1woUGFyZW50OiAoP1A8cGFy
ZW50PlteXCldKylcKSAnCisgICAgJ1woKD9QPGNvbGxlY3RfdHlwZT5bXlwpXSspXCk6ICcKKyAg
ICAnKD9QPHRvdGFsX3RpbWU+WzAtOV0rXC5bMC05XSspbXMgJworICAgICdcKGF2Zy4gKD9QPGF2
Z190aW1lPlteLF0rKSwgJworICAgICdtaW4uICg/UDxtaW5fdGltZT5bXixdKyksICcKKyAgICAn
bWF4LiAoP1A8bWF4X3RpbWU+W14sXSspLCAnCisgICAgJ2NvdW50ICg/UDxjb3VudD5bXlwpXSsp
XCknKQorCitjbGFzcyBUaW1pbmcob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGlk
LCBuYW1lLCBwYXJlbnQsIGNvbGxlY3RfdHlwZSwgdG90YWxfdGltZSwgYXZnX3RpbWUsIG1pbl90
aW1lLCBtYXhfdGltZSwgY291bnQpOgorICAgICAgICBzZWxmLnBpZCA9IGludChwaWQpCisgICAg
ICAgIHNlbGYubmFtZSA9IHN0cihuYW1lKQorICAgICAgICBzZWxmLnBhcmVudCA9IHN0cihwYXJl
bnQpCisgICAgICAgIHNlbGYuY29sbGVjdF90eXBlID0gc3RyKGNvbGxlY3RfdHlwZSkKKyAgICAg
ICAgc2VsZi50b3RhbF90aW1lID0gZmxvYXQodG90YWxfdGltZSkKKyAgICAgICAgc2VsZi5hdmdf
dGltZSA9IGZsb2F0KGF2Z190aW1lKQorICAgICAgICBzZWxmLm1pbl90aW1lID0gZmxvYXQobWlu
X3RpbWUpCisgICAgICAgIHNlbGYubWF4X3RpbWUgPSBmbG9hdChtYXhfdGltZSkKKyAgICAgICAg
c2VsZi5jb3VudCA9IGludChjb3VudCkKKyAgICAgICAgc2VsZi5jaGlsZHJlbiA9IFtdCisKKyAg
ICBkZWYgX191bmljb2RlX18oc2VsZik6CisgICAgICAgIHJldHVybiB1IiVzIC0gJXMgdG90YWw6
ICUuMmYsIGF2ZzogJS4yZiIgJSAoc2VsZi5uYW1lLCBzZWxmLmNvbGxlY3RfdHlwZSwgc2VsZi50
b3RhbF90aW1lLCBzZWxmLmF2Z190aW1lKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAg
ICAgIHJldHVybiAiJXMgLSAlcyB0b3RhbDogJS4yZiwgYXZnOiAlLjJmIiAlIChzZWxmLm5hbWUs
IHNlbGYuY29sbGVjdF90eXBlLCBzZWxmLnRvdGFsX3RpbWUsIHNlbGYuYXZnX3RpbWUpCisKKyAg
ICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgLSAlcyB0b3RhbDogJS4y
ZiwgYXZnOiAlLjJmIiAlIChzZWxmLm5hbWUsIHNlbGYuY29sbGVjdF90eXBlLCBzZWxmLnRvdGFs
X3RpbWUsIHNlbGYuYXZnX3RpbWUpCisKKworZGVmIHBhcnNlX2lucHV0KCk6CisgICAgdGltaW5n
cyA9IFtdCisgICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KCk6CisgICAgICAgIHJlc3Vs
dCA9IFRJTUlOR19SRUdFWC5tYXRjaChsaW5lKQorICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToK
KyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRpbWluZ3MuYXBwZW5kKFRpbWluZygKKyAg
ICAgICAgICAgIHJlc3VsdC5ncm91cCgncGlkJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAo
J25hbWUnKSwKKyAgICAgICAgICAgIHJlc3VsdC5ncm91cCgncGFyZW50JyksCisgICAgICAgICAg
ICByZXN1bHQuZ3JvdXAoJ2NvbGxlY3RfdHlwZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3Vw
KCd0b3RhbF90aW1lJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ2F2Z190aW1lJyksCisg
ICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ21pbl90aW1lJyksCisgICAgICAgICAgICByZXN1bHQu
Z3JvdXAoJ21heF90aW1lJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ2NvdW50JyksCisg
ICAgICAgICkpCisgICAgcmV0dXJuIHRpbWluZ3MKKworCitkZWYgcHJpbnRfdGltaW5nX25vZGUo
cm9vdCwgdGltaW5ncywgdGFicyk6CisgICAgZm9yIF8gaW4gcmFuZ2UodGFicyk6CisgICAgICAg
IHByaW50ICIgICAgIiwKKyAgICBwZXJjZW50X3RpbWUgPSAxLjAKKyAgICBpZiByb290LnBhcmVu
dCBpcyBub3QgTm9uZToKKyAgICAgICAgcGVyY2VudF90aW1lID0gZmxvYXQocm9vdC50b3RhbF90
aW1lKSAvIGZsb2F0KHJvb3QucGFyZW50LnRvdGFsX3RpbWUpCisgICAgcHJpbnQgIiVzIC0gJS4y
ZiUlIiAlIChzdHIocm9vdCksIHBlcmNlbnRfdGltZSAqIDEwMC4wKQorICAgIGZvciBjaGlsZCBp
biByZXZlcnNlZChzb3J0ZWQocm9vdC5jaGlsZHJlbiwga2V5PWxhbWJkYSB0OiB0LnRvdGFsX3Rp
bWUpKToKKyAgICAgICAgaWYgY2hpbGQucGFyZW50ICE9IHJvb3Q6CisgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICBpZiBjaGlsZC5jb2xsZWN0X3R5cGUgIT0gcm9vdC5jb2xsZWN0X3R5cGU6
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwcmludF90aW1pbmdfbm9kZShjaGlsZCwg
dGltaW5ncywgdGFicyArIDEpCisgICAgCisKK2RlZiBwcmludF90aW1pbmdfdHJlZSh0aW1pbmdz
KToKKyAgICB0aW1pbmdzLnNvcnQoa2V5PWxhbWJkYSB0OiB0LnRvdGFsX3RpbWUpCisgICAgdGlt
aW5ncy5yZXZlcnNlKCkKKyAgICBjb2xsZWN0aW9uX3R5cGVzID0gWyJBbGwiLCAiRWRlbiIsICJG
dWxsIl0KKyAgICBmb3IgY29sbGVjdF90eXBlIGluIGNvbGxlY3Rpb25fdHlwZXM6CisgICAgICAg
IGZvciB0aW1pbmcgaW4gdGltaW5nczoKKyAgICAgICAgICAgIGlmIHRpbWluZy5jb2xsZWN0X3R5
cGUgIT0gY29sbGVjdF90eXBlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICBpZiB0aW1pbmcucGFyZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBwcmludF90aW1pbmdfbm9kZSh0aW1pbmcsIHRpbWluZ3MsIDApCisgICAg
ICAgIHByaW50ICIiCisKKworZGVmIGxpbmtfcGFyZW50cyh0aW1pbmdzKToKKyAgICBmb3IgdGlt
aW5nIGluIHRpbWluZ3M6CisgICAgICAgIGlmIHRpbWluZy5wYXJlbnQgPT0gIm51bGxwdHIiOgor
ICAgICAgICAgICAgdGltaW5nLnBhcmVudCA9IE5vbmUKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGZvciBwYXJlbnQgaW4gdGltaW5nczoKKyAgICAgICAgICAgIGlmIHRpbWluZy5wYXJl
bnQgIT0gcGFyZW50Lm5hbWU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGlmIHRpbWluZy5jb2xsZWN0X3R5cGUgIT0gcGFyZW50LmNvbGxlY3RfdHlwZToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdGltaW5nLnBhcmVudCA9IHBhcmVudAorICAg
ICAgICAgICAgcGFyZW50LmNoaWxkcmVuLmFwcGVuZCh0aW1pbmcpCisKK2RlZiBtYWluKCk6Cisg
ICAgdGltaW5ncyA9IHBhcnNlX2lucHV0KCkKKyAgICBsaW5rX3BhcmVudHModGltaW5ncykKKyAg
ICBwcmludF90aW1pbmdfdHJlZSh0aW1pbmdzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgorICAgIG1haW4oKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9wYXJzZS1n
Yy1waGFzZS10aW1pbmdzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAg
KzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248595</attachid>
            <date>2015-03-13 11:52:45 -0700</date>
            <delta_ts>2015-03-17 18:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142675-20150313115218.patch</filename>
            <type>text/plain</type>
            <size>8226</size>
            <attacher name="Mark Hahnenberg">mhahnenb</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNDgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTAzLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYkBnbWFpbC5jb20+CisKKyAg
ICAgICAgR0NUaW1lciBzaG91bGQga25vdyBrZWVwIHRyYWNrIG9mIG5lc3RlZCBHQyBwaGFzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd291
bGQgaW1wcm92ZSB0aGUgR0MgcGhhc2UgdGltaW5nIG91dHB1dCBpbiBIZWFwLmNwcCBieSBsaW5r
aW5nCisgICAgICAgIHBoYXNlcyBuZXN0ZWQgaW5zaWRlIG90aGVyIHBoYXNlcyB0b2dldGhlciwg
YWxsb3dpbmcgdG9vbHMgdG8gY29tcHV0ZQorICAgICAgICBob3cgbXVjaCB0aW1lIHdlJ3JlIHNw
ZW5kaW5nIGluIHZhcmlvdXMgbmVzdGVkIHBoYXNlcy4KKworICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6CisKIDIwMTUtMDMtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IgbmVlZHMgdG8gYmUgcmUtZW50cmFudCB0byBzdXBwb3J0
IG1pcmFuZGEgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
cmV2aXNpb24gMTgxNDUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHR5cGUgbmFtZSBhcmd1bWVu
dHM7CiBzdHJ1Y3QgR0NUaW1lciB7CiAgICAgR0NUaW1lcihjb25zdCBjaGFyKiBuYW1lKQogICAg
ICAgICA6IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fcGFyZW50KG51bGxwdHIpCiAgICAgewog
ICAgIH0KICAgICB+R0NUaW1lcigpCkBAIC05MCw2ICs5MSwxMyBAQCBzdHJ1Y3QgR0NUaW1lciB7
CiAgICAgICAgIGxvZ0RhdGEobV9mdWxsQ29sbGVjdGlvbkRhdGEsICIoRnVsbCkiKTsKICAgICB9
CiAKKyAgICB2b2lkIHNldFBhcmVudFRpbWVyKEdDVGltZXIqIHBhcmVudCkKKyAgICB7CisgICAg
ICAgIGlmICghbV9wYXJlbnQpCisgICAgICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsKKyAgICAg
ICAgQVNTRVJUKG1fcGFyZW50ID09IHBhcmVudCk7CisgICAgfQorCiAgICAgc3RydWN0IFRpbWVS
ZWNvcmQgewogICAgICAgICBUaW1lUmVjb3JkKCkKICAgICAgICAgICAgIDogbV90aW1lKDApCkBA
IC0xMDcsOSArMTE1LDExIEBAIHN0cnVjdCBHQ1RpbWVyIHsKIAogICAgIHZvaWQgbG9nRGF0YShj
b25zdCBUaW1lUmVjb3JkJiBkYXRhLCBjb25zdCBjaGFyKiBleHRyYSkKICAgICB7Ci0gICAgICAg
IGRhdGFMb2dGKCJbJWRdICVzICVzOiAlLjJsZm1zIChhdmcuICUuMmxmLCBtaW4uICUuMmxmLCBt
YXguICUuMmxmLCBjb3VudCAlbHUpXG4iLCAKKyAgICAgICAgZGF0YUxvZ0YoIlslZF0gJXMgKFBh
cmVudDogJXMpICVzOiAlLjJsZm1zIChhdmcuICUuMmxmLCBtaW4uICUuMmxmLCBtYXguICUuMmxm
LCBjb3VudCAlbHUpXG4iLCAKICAgICAgICAgICAgIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwKLSAg
ICAgICAgICAgIG1fbmFtZSwgZXh0cmEsIAorICAgICAgICAgICAgbV9uYW1lLAorICAgICAgICAg
ICAgbV9wYXJlbnQgPyBtX3BhcmVudC0+bV9uYW1lIDogIm51bGxwdHIiLAorICAgICAgICAgICAg
ZXh0cmEsIAogICAgICAgICAgICAgZGF0YS5tX3RpbWUgKiAxMDAwLCAKICAgICAgICAgICAgIGRh
dGEubV90aW1lICogMTAwMCAvIGRhdGEubV9jb3VudCwgCiAgICAgICAgICAgICBkYXRhLm1fbWlu
ICogMTAwMCwgCkBAIC0xMzQsMjcgKzE0NCwzNyBAQCBzdHJ1Y3QgR0NUaW1lciB7CiAgICAgICAg
IHVwZGF0ZURhdGEobV9hbGxDb2xsZWN0aW9uRGF0YSwgZHVyYXRpb24pOwogICAgIH0KIAorICAg
IHN0YXRpYyBHQ1RpbWVyKiBzX2N1cnJlbnRHbG9iYWxUaW1lcjsKKwogICAgIFRpbWVSZWNvcmQg
bV9hbGxDb2xsZWN0aW9uRGF0YTsKICAgICBUaW1lUmVjb3JkIG1fZnVsbENvbGxlY3Rpb25EYXRh
OwogICAgIFRpbWVSZWNvcmQgbV9lZGVuQ29sbGVjdGlvbkRhdGE7CiAgICAgY29uc3QgY2hhciog
bV9uYW1lOworICAgIEdDVGltZXIqIG1fcGFyZW50OwogfTsKIAorR0NUaW1lciogR0NUaW1lcjo6
c19jdXJyZW50R2xvYmFsVGltZXIgPSBudWxscHRyOworCiBzdHJ1Y3QgR0NUaW1lclNjb3BlIHsK
ICAgICBHQ1RpbWVyU2NvcGUoR0NUaW1lciogdGltZXIsIEhlYXBPcGVyYXRpb24gY29sbGVjdGlv
blR5cGUpCiAgICAgICAgIDogbV90aW1lcih0aW1lcikKICAgICAgICAgLCBtX3N0YXJ0KFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpCiAgICAgICAgICwgbV9jb2xsZWN0aW9uVHlw
ZShjb2xsZWN0aW9uVHlwZSkKKyAgICAgICAgLCBtX3ByZXZpb3VzR2xvYmFsVGltZXIoR0NUaW1l
cjo6c19jdXJyZW50R2xvYmFsVGltZXIpCiAgICAgeworICAgICAgICBtX3RpbWVyLT5zZXRQYXJl
bnRUaW1lcihtX3ByZXZpb3VzR2xvYmFsVGltZXIpOworICAgICAgICBHQ1RpbWVyOjpzX2N1cnJl
bnRHbG9iYWxUaW1lciA9IG1fdGltZXI7CiAgICAgfQogICAgIH5HQ1RpbWVyU2NvcGUoKQogICAg
IHsKICAgICAgICAgZG91YmxlIGRlbHRhID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSAtIG1fc3RhcnQ7CiAgICAgICAgIG1fdGltZXItPmRpZEZpbmlzaFBoYXNlKG1fY29sbGVj
dGlvblR5cGUsIGRlbHRhKTsKKyAgICAgICAgR0NUaW1lcjo6c19jdXJyZW50R2xvYmFsVGltZXIg
PSBtX3ByZXZpb3VzR2xvYmFsVGltZXI7CiAgICAgfQogICAgIEdDVGltZXIqIG1fdGltZXI7CiAg
ICAgZG91YmxlIG1fc3RhcnQ7CiAgICAgSGVhcE9wZXJhdGlvbiBtX2NvbGxlY3Rpb25UeXBlOwor
ICAgIEdDVGltZXIqIG1fcHJldmlvdXNHbG9iYWxUaW1lcjsKIH07CiAKIHN0cnVjdCBHQ0NvdW50
ZXIgewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTgxNDgyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTUtMDMtMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iQGdt
YWlsLmNvbT4KKworICAgICAgICBHQ1RpbWVyIHNob3VsZCBrbm93IGtlZXAgdHJhY2sgb2YgbmVz
dGVkIEdDIHBoYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQyNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBhIHRvb2wgdG8gYWlkIGluIHBhcnNpbmcgdGhlIEdDIHBoYXNlIHRpbWluZyBv
dXRwdXQgaW50byBhCisgICAgICAgIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgYmFzZWQgb24gdGhlIHBh
cmVudC1jaGlsZCByZWxhdGlvbnNoaXBzIG9mIG5lc3RlZAorICAgICAgICBHQyBwaGFzZXMuCisK
KyAgICAgICAgKiBTY3JpcHRzL3BhcnNlLWdjLXBoYXNlLXRpbWluZ3M6IEFkZGVkLgorICAgICAg
ICAoVGltaW5nKToKKyAgICAgICAgKFRpbWluZy5fX2luaXRfXyk6CisgICAgICAgIChUaW1pbmcu
X191bmljb2RlX18pOgorICAgICAgICAoVGltaW5nLl9fc3RyX18pOgorICAgICAgICAoVGltaW5n
Ll9fcmVwcl9fKToKKyAgICAgICAgKHBhcnNlX2lucHV0KToKKyAgICAgICAgKHByaW50X3RpbWlu
Z19ub2RlKToKKyAgICAgICAgKHByaW50X3RpbWluZ190cmVlKToKKyAgICAgICAgKGxpbmtfcGFy
ZW50cyk6CisgICAgICAgIChtYWluKToKKwogMjAxNS0wMy0xMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHNob3VsZCBhdXRvbWF0ZSB0aGUgcHJvY2VzcyBvZiBjbG9uaW5nIFczQyB0ZXN0IHN1
aXRlIGFuZCBpbXBvcnRpbmcgdGVzdHMgZnJvbSBpdApJbmRleDogVG9vbHMvU2NyaXB0cy9wYXJz
ZS1nYy1waGFzZS10aW1pbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcGFyc2UtZ2Mt
cGhhc2UtdGltaW5ncwkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvcGFyc2UtZ2MtcGhh
c2UtdGltaW5ncwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisKK2ltcG9ydCBmaWxlaW5wdXQKK2ltcG9ydCByZQorCitUSU1JTkdfUkVHRVgg
PSByZS5jb21waWxlKAorICAgIHInXlxbKD9QPHBpZD5bMC05XSspXF0gJworICAgICcoP1A8bmFt
ZT5bXiBdKykgJworICAgICdcKFBhcmVudDogKD9QPHBhcmVudD5bXlwpXSspXCkgJworICAgICdc
KCg/UDxjb2xsZWN0X3R5cGU+W15cKV0rKVwpOiAnCisgICAgJyg/UDx0b3RhbF90aW1lPlswLTld
K1wuWzAtOV0rKW1zICcKKyAgICAnXChhdmcuICg/UDxhdmdfdGltZT5bXixdKyksICcKKyAgICAn
bWluLiAoP1A8bWluX3RpbWU+W14sXSspLCAnCisgICAgJ21heC4gKD9QPG1heF90aW1lPlteLF0r
KSwgJworICAgICdjb3VudCAoP1A8Y291bnQ+W15cKV0rKVwpJykKKworY2xhc3MgVGltaW5nKG9i
amVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBpZCwgbmFtZSwgcGFyZW50LCBjb2xsZWN0
X3R5cGUsIHRvdGFsX3RpbWUsIGF2Z190aW1lLCBtaW5fdGltZSwgbWF4X3RpbWUsIGNvdW50KToK
KyAgICAgICAgc2VsZi5waWQgPSBpbnQocGlkKQorICAgICAgICBzZWxmLm5hbWUgPSBzdHIobmFt
ZSkKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBzdHIocGFyZW50KQorICAgICAgICBzZWxmLmNvbGxl
Y3RfdHlwZSA9IHN0cihjb2xsZWN0X3R5cGUpCisgICAgICAgIHNlbGYudG90YWxfdGltZSA9IGZs
b2F0KHRvdGFsX3RpbWUpCisgICAgICAgIHNlbGYuYXZnX3RpbWUgPSBmbG9hdChhdmdfdGltZSkK
KyAgICAgICAgc2VsZi5taW5fdGltZSA9IGZsb2F0KG1pbl90aW1lKQorICAgICAgICBzZWxmLm1h
eF90aW1lID0gZmxvYXQobWF4X3RpbWUpCisgICAgICAgIHNlbGYuY291bnQgPSBpbnQoY291bnQp
CisgICAgICAgIHNlbGYuY2hpbGRyZW4gPSBbXQorCisgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYp
OgorICAgICAgICByZXR1cm4gdSIlcyAtICVzIHRvdGFsOiAlLjJmLCBhdmc6ICUuMmYiICUgKHNl
bGYubmFtZSwgc2VsZi5jb2xsZWN0X3R5cGUsIHNlbGYudG90YWxfdGltZSwgc2VsZi5hdmdfdGlt
ZSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIC0gJXMgdG90
YWw6ICUuMmYsIGF2ZzogJS4yZiIgJSAoc2VsZi5uYW1lLCBzZWxmLmNvbGxlY3RfdHlwZSwgc2Vs
Zi50b3RhbF90aW1lLCBzZWxmLmF2Z190aW1lKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIiVzIC0gJXMgdG90YWw6ICUuMmYsIGF2ZzogJS4yZiIgJSAoc2VsZi5u
YW1lLCBzZWxmLmNvbGxlY3RfdHlwZSwgc2VsZi50b3RhbF90aW1lLCBzZWxmLmF2Z190aW1lKQor
CisKK2RlZiBwYXJzZV9pbnB1dCgpOgorICAgIHRpbWluZ3MgPSBbXQorICAgIGZvciBsaW5lIGlu
IGZpbGVpbnB1dC5pbnB1dCgpOgorICAgICAgICByZXN1bHQgPSBUSU1JTkdfUkVHRVgubWF0Y2go
bGluZSkKKyAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICB0aW1pbmdzLmFwcGVuZChUaW1pbmcoCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAo
J3BpZCcpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCduYW1lJyksCisgICAgICAgICAgICBy
ZXN1bHQuZ3JvdXAoJ3BhcmVudCcpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdjb2xsZWN0
X3R5cGUnKSwKKyAgICAgICAgICAgIHJlc3VsdC5ncm91cCgndG90YWxfdGltZScpLAorICAgICAg
ICAgICAgcmVzdWx0Lmdyb3VwKCdhdmdfdGltZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3Vw
KCdtaW5fdGltZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdtYXhfdGltZScpLAorICAg
ICAgICAgICAgcmVzdWx0Lmdyb3VwKCdjb3VudCcpLAorICAgICAgICApKQorICAgIHJldHVybiB0
aW1pbmdzCisKKworZGVmIHByaW50X3RpbWluZ19ub2RlKHJvb3QsIHRpbWluZ3MsIHRhYnMpOgor
ICAgIGZvciBfIGluIHJhbmdlKHRhYnMpOgorICAgICAgICBwcmludCAiICAgICIsCisgICAgcGVy
Y2VudF90aW1lID0gMS4wCisgICAgaWYgcm9vdC5wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAg
IHBlcmNlbnRfdGltZSA9IGZsb2F0KHJvb3QudG90YWxfdGltZSkgLyBmbG9hdChyb290LnBhcmVu
dC50b3RhbF90aW1lKQorICAgIHByaW50ICIlcyAtICUuMmYlJSIgJSAoc3RyKHJvb3QpLCBwZXJj
ZW50X3RpbWUgKiAxMDAuMCkKKyAgICBmb3IgY2hpbGQgaW4gcmV2ZXJzZWQoc29ydGVkKHJvb3Qu
Y2hpbGRyZW4sIGtleT1sYW1iZGEgdDogdC50b3RhbF90aW1lKSk6CisgICAgICAgIGlmIGNoaWxk
LnBhcmVudCAhPSByb290OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgY2hpbGQu
Y29sbGVjdF90eXBlICE9IHJvb3QuY29sbGVjdF90eXBlOgorICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgcHJpbnRfdGltaW5nX25vZGUoY2hpbGQsIHRpbWluZ3MsIHRhYnMgKyAxKQorICAg
IAorCitkZWYgcHJpbnRfdGltaW5nX3RyZWUodGltaW5ncyk6CisgICAgdGltaW5ncy5zb3J0KGtl
eT1sYW1iZGEgdDogdC50b3RhbF90aW1lKQorICAgIHRpbWluZ3MucmV2ZXJzZSgpCisgICAgY29s
bGVjdGlvbl90eXBlcyA9IFsiQWxsIiwgIkVkZW4iLCAiRnVsbCJdCisgICAgZm9yIGNvbGxlY3Rf
dHlwZSBpbiBjb2xsZWN0aW9uX3R5cGVzOgorICAgICAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6
CisgICAgICAgICAgICBpZiB0aW1pbmcuY29sbGVjdF90eXBlICE9IGNvbGxlY3RfdHlwZToKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdGltaW5nLnBhcmVudCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcHJpbnRfdGlt
aW5nX25vZGUodGltaW5nLCB0aW1pbmdzLCAwKQorICAgICAgICBwcmludCAiIgorCisKK2RlZiBs
aW5rX3BhcmVudHModGltaW5ncyk6CisgICAgZm9yIHRpbWluZyBpbiB0aW1pbmdzOgorICAgICAg
ICBpZiB0aW1pbmcucGFyZW50ID09ICJudWxscHRyIjoKKyAgICAgICAgICAgIHRpbWluZy5wYXJl
bnQgPSBOb25lCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3IgcGFyZW50IGluIHRp
bWluZ3M6CisgICAgICAgICAgICBpZiB0aW1pbmcucGFyZW50ICE9IHBhcmVudC5uYW1lOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiB0aW1pbmcuY29sbGVjdF90eXBl
ICE9IHBhcmVudC5jb2xsZWN0X3R5cGU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgIHRpbWluZy5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgIHBhcmVudC5jaGlsZHJl
bi5hcHBlbmQodGltaW5nKQorCitkZWYgbWFpbigpOgorICAgIHRpbWluZ3MgPSBwYXJzZV9pbnB1
dCgpCisgICAgbGlua19wYXJlbnRzKHRpbWluZ3MpCisgICAgcHJpbnRfdGltaW5nX3RyZWUodGlt
aW5ncykKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvcGFyc2UtZ2MtcGhhc2UtdGltaW5ncwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248898</attachid>
            <date>2015-03-17 18:55:26 -0700</date>
            <delta_ts>2015-03-18 11:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142675-20150317185451.patch</filename>
            <type>text/plain</type>
            <size>9459</size>
            <attacher name="Mark Hahnenberg">mhahnenb</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNjgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTAzLTE3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYkBnbWFpbC5jb20+CisKKyAg
ICAgICAgR0NUaW1lciBzaG91bGQga25vdyBrZWVwIHRyYWNrIG9mIG5lc3RlZCBHQyBwaGFzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaW1w
cm92ZXMgdGhlIEdDIHBoYXNlIHRpbWluZyBvdXRwdXQgaW4gSGVhcC5jcHAgYnkgbGlua2luZwor
ICAgICAgICBwaGFzZXMgbmVzdGVkIGluc2lkZSBvdGhlciBwaGFzZXMgdG9nZXRoZXIsIGFsbG93
aW5nIHRvb2xzCisgICAgICAgIHRvIGNvbXB1dGUgaG93IG11Y2ggdGltZSB3ZSdyZSBzcGVuZGlu
ZyBpbiB2YXJpb3VzIG5lc3RlZCBwaGFzZXMuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgor
CiAyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRnVuY3Rpb24gYm9kaWVzIHNob3VsZCBhbHdheXMgaW5jbHVkZSBicmFjZXMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxODE2NzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEs
NyBAQCBzdGF0aWMgdHlwZSBuYW1lIGFyZ3VtZW50czsKIHN0cnVjdCBHQ1RpbWVyIHsKICAgICBH
Q1RpbWVyKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgICAg
ICwgbV9wYXJlbnQobnVsbHB0cikKICAgICB7CiAgICAgfQogICAgIH5HQ1RpbWVyKCkKQEAgLTkw
LDYgKzkxLDEzIEBAIHN0cnVjdCBHQ1RpbWVyIHsKICAgICAgICAgbG9nRGF0YShtX2Z1bGxDb2xs
ZWN0aW9uRGF0YSwgIihGdWxsKSIpOwogICAgIH0KIAorICAgIHZvaWQgc2V0UGFyZW50VGltZXIo
R0NUaW1lciogcGFyZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAg
ICAgIG1fcGFyZW50ID0gcGFyZW50OworICAgICAgICBBU1NFUlQobV9wYXJlbnQgPT0gcGFyZW50
KTsKKyAgICB9CisKICAgICBzdHJ1Y3QgVGltZVJlY29yZCB7CiAgICAgICAgIFRpbWVSZWNvcmQo
KQogICAgICAgICAgICAgOiBtX3RpbWUoMCkKQEAgLTEwNyw5ICsxMTUsMTEgQEAgc3RydWN0IEdD
VGltZXIgewogCiAgICAgdm9pZCBsb2dEYXRhKGNvbnN0IFRpbWVSZWNvcmQmIGRhdGEsIGNvbnN0
IGNoYXIqIGV4dHJhKQogICAgIHsKLSAgICAgICAgZGF0YUxvZ0YoIlslZF0gJXMgJXM6ICUuMmxm
bXMgKGF2Zy4gJS4ybGYsIG1pbi4gJS4ybGYsIG1heC4gJS4ybGYsIGNvdW50ICVsdSlcbiIsIAor
ICAgICAgICBkYXRhTG9nRigiWyVkXSAlcyAoUGFyZW50OiAlcykgJXM6ICUuMmxmbXMgKGF2Zy4g
JS4ybGYsIG1pbi4gJS4ybGYsIG1heC4gJS4ybGYsIGNvdW50ICVsdSlcbiIsIAogICAgICAgICAg
ICAgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLAotICAgICAgICAgICAgbV9uYW1lLCBleHRyYSwgCisg
ICAgICAgICAgICBtX25hbWUsCisgICAgICAgICAgICBtX3BhcmVudCA/IG1fcGFyZW50LT5tX25h
bWUgOiAibnVsbHB0ciIsCisgICAgICAgICAgICBleHRyYSwgCiAgICAgICAgICAgICBkYXRhLm1f
dGltZSAqIDEwMDAsIAogICAgICAgICAgICAgZGF0YS5tX3RpbWUgKiAxMDAwIC8gZGF0YS5tX2Nv
dW50LCAKICAgICAgICAgICAgIGRhdGEubV9taW4gKiAxMDAwLCAKQEAgLTEzNCwyNyArMTQ0LDM3
IEBAIHN0cnVjdCBHQ1RpbWVyIHsKICAgICAgICAgdXBkYXRlRGF0YShtX2FsbENvbGxlY3Rpb25E
YXRhLCBkdXJhdGlvbik7CiAgICAgfQogCisgICAgc3RhdGljIEdDVGltZXIqIHNfY3VycmVudEds
b2JhbFRpbWVyOworCiAgICAgVGltZVJlY29yZCBtX2FsbENvbGxlY3Rpb25EYXRhOwogICAgIFRp
bWVSZWNvcmQgbV9mdWxsQ29sbGVjdGlvbkRhdGE7CiAgICAgVGltZVJlY29yZCBtX2VkZW5Db2xs
ZWN0aW9uRGF0YTsKICAgICBjb25zdCBjaGFyKiBtX25hbWU7CisgICAgR0NUaW1lciogbV9wYXJl
bnQ7CiB9OwogCitHQ1RpbWVyKiBHQ1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxUaW1lciA9IG51bGxw
dHI7CisKIHN0cnVjdCBHQ1RpbWVyU2NvcGUgewogICAgIEdDVGltZXJTY29wZShHQ1RpbWVyKiB0
aW1lciwgSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKICAgICAgICAgOiBtX3RpbWVyKHRp
bWVyKQogICAgICAgICAsIG1fc3RhcnQoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSkKICAgICAgICAgLCBtX2NvbGxlY3Rpb25UeXBlKGNvbGxlY3Rpb25UeXBlKQorICAgICAgICAs
IG1fcHJldmlvdXNHbG9iYWxUaW1lcihHQ1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxUaW1lcikKICAg
ICB7CisgICAgICAgIG1fdGltZXItPnNldFBhcmVudFRpbWVyKG1fcHJldmlvdXNHbG9iYWxUaW1l
cik7CisgICAgICAgIEdDVGltZXI6OnNfY3VycmVudEdsb2JhbFRpbWVyID0gbV90aW1lcjsKICAg
ICB9CiAgICAgfkdDVGltZXJTY29wZSgpCiAgICAgewogICAgICAgICBkb3VibGUgZGVsdGEgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydDsKICAgICAgICAgbV90
aW1lci0+ZGlkRmluaXNoUGhhc2UobV9jb2xsZWN0aW9uVHlwZSwgZGVsdGEpOworICAgICAgICBH
Q1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxUaW1lciA9IG1fcHJldmlvdXNHbG9iYWxUaW1lcjsKICAg
ICB9CiAgICAgR0NUaW1lciogbV90aW1lcjsKICAgICBkb3VibGUgbV9zdGFydDsKICAgICBIZWFw
T3BlcmF0aW9uIG1fY29sbGVjdGlvblR5cGU7CisgICAgR0NUaW1lciogbV9wcmV2aW91c0dsb2Jh
bFRpbWVyOwogfTsKIAogc3RydWN0IEdDQ291bnRlciB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE2ODApCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxNS0wMy0xNyAg
TWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJAZ21haWwuY29tPgorCisgICAgICAgIEdDVGltZXIg
c2hvdWxkIGtub3cga2VlcCB0cmFjayBvZiBuZXN0ZWQgR0MgcGhhc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgdG9vbCB0byBhaWQgaW4g
cGFyc2luZyB0aGUgR0MgcGhhc2UgdGltaW5nIG91dHB1dCBpbnRvIGEKKyAgICAgICAgdHJlZS1s
aWtlIHN0cnVjdHVyZSBiYXNlZCBvbiB0aGUgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMKKyAg
ICAgICAgb2YgbmVzdGVkIEdDIHBoYXNlcy4KKworICAgICAgICAqIFNjcmlwdHMvcGFyc2UtZ2Mt
cGhhc2UtdGltaW5nczogQWRkZWQuCisgICAgICAgIChUaW1pbmcpOgorICAgICAgICAoVGltaW5n
Ll9faW5pdF9fKToKKyAgICAgICAgKFRpbWluZy5fX3VuaWNvZGVfXyk6CisgICAgICAgIChUaW1p
bmcuX19zdHJfXyk6CisgICAgICAgIChUaW1pbmcuX19yZXByX18pOgorICAgICAgICAocGFyc2Vf
aW5wdXQpOgorICAgICAgICAocHJpbnRfdGltaW5nX25vZGUpOgorICAgICAgICAocHJpbnRfdGlt
aW5nX3RyZWUpOgorICAgICAgICAobGlua19wYXJlbnRzKToKKyAgICAgICAgKG1haW4pOgorCiAy
MDE1LTAzLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCB0aGUgaU9TIGJ1aWxkLgpJbmRleDogVG9vbHMvU2NyaXB0cy9wYXJzZS1nYy1waGFz
ZS10aW1pbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcGFyc2UtZ2MtcGhhc2UtdGlt
aW5ncwkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvcGFyc2UtZ2MtcGhhc2UtdGltaW5n
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisKKyMgQ29weXJpZ2h0IChDKSAyMDE1IE1hcmsgSGFobmVuYmVyZy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBm
aWxlaW5wdXQKK2ltcG9ydCByZQorCitUSU1JTkdfUkVHRVggPSByZS5jb21waWxlKAorICAgIHIn
XlxbKD9QPHBpZD5bMC05XSspXF0gJworICAgICcoP1A8bmFtZT5bXiBdKykgJworICAgICdcKFBh
cmVudDogKD9QPHBhcmVudD5bXlwpXSspXCkgJworICAgICdcKCg/UDxjb2xsZWN0X3R5cGU+W15c
KV0rKVwpOiAnCisgICAgJyg/UDx0b3RhbF90aW1lPlswLTldK1wuWzAtOV0rKW1zICcKKyAgICAn
XChhdmcuICg/UDxhdmdfdGltZT5bXixdKyksICcKKyAgICAnbWluLiAoP1A8bWluX3RpbWU+W14s
XSspLCAnCisgICAgJ21heC4gKD9QPG1heF90aW1lPlteLF0rKSwgJworICAgICdjb3VudCAoP1A8
Y291bnQ+W15cKV0rKVwpJykKKworY2xhc3MgVGltaW5nKG9iamVjdCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBpZCwgbmFtZSwgcGFyZW50LCBjb2xsZWN0X3R5cGUsIHRvdGFsX3RpbWUsIGF2
Z190aW1lLCBtaW5fdGltZSwgbWF4X3RpbWUsIGNvdW50KToKKyAgICAgICAgc2VsZi5waWQgPSBp
bnQocGlkKQorICAgICAgICBzZWxmLm5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgc2VsZi5wYXJl
bnQgPSBzdHIocGFyZW50KQorICAgICAgICBzZWxmLmNvbGxlY3RfdHlwZSA9IHN0cihjb2xsZWN0
X3R5cGUpCisgICAgICAgIHNlbGYudG90YWxfdGltZSA9IGZsb2F0KHRvdGFsX3RpbWUpCisgICAg
ICAgIHNlbGYuYXZnX3RpbWUgPSBmbG9hdChhdmdfdGltZSkKKyAgICAgICAgc2VsZi5taW5fdGlt
ZSA9IGZsb2F0KG1pbl90aW1lKQorICAgICAgICBzZWxmLm1heF90aW1lID0gZmxvYXQobWF4X3Rp
bWUpCisgICAgICAgIHNlbGYuY291bnQgPSBpbnQoY291bnQpCisgICAgICAgIHNlbGYuY2hpbGRy
ZW4gPSBbXQorCisgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gdSIl
cyAtICVzIHRvdGFsOiAlLjJmLCBhdmc6ICUuMmYiICUgKHNlbGYubmFtZSwgc2VsZi5jb2xsZWN0
X3R5cGUsIHNlbGYudG90YWxfdGltZSwgc2VsZi5hdmdfdGltZSkKKworICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIC0gJXMgdG90YWw6ICUuMmYsIGF2ZzogJS4yZiIg
JSAoc2VsZi5uYW1lLCBzZWxmLmNvbGxlY3RfdHlwZSwgc2VsZi50b3RhbF90aW1lLCBzZWxmLmF2
Z190aW1lKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIC0g
JXMgdG90YWw6ICUuMmYsIGF2ZzogJS4yZiIgJSAoc2VsZi5uYW1lLCBzZWxmLmNvbGxlY3RfdHlw
ZSwgc2VsZi50b3RhbF90aW1lLCBzZWxmLmF2Z190aW1lKQorCisKK2RlZiBwYXJzZV9pbnB1dCgp
OgorICAgIHRpbWluZ3MgPSBbXQorICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5pbnB1dCgpOgor
ICAgICAgICByZXN1bHQgPSBUSU1JTkdfUkVHRVgubWF0Y2gobGluZSkKKyAgICAgICAgaWYgcmVz
dWx0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0aW1pbmdzLmFwcGVu
ZChUaW1pbmcoCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ3BpZCcpLAorICAgICAgICAgICAg
cmVzdWx0Lmdyb3VwKCduYW1lJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ3BhcmVudCcp
LAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdjb2xsZWN0X3R5cGUnKSwKKyAgICAgICAgICAg
IHJlc3VsdC5ncm91cCgndG90YWxfdGltZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdh
dmdfdGltZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdtaW5fdGltZScpLAorICAgICAg
ICAgICAgcmVzdWx0Lmdyb3VwKCdtYXhfdGltZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3Vw
KCdjb3VudCcpLAorICAgICAgICApKQorICAgIHJldHVybiB0aW1pbmdzCisKKworZGVmIHByaW50
X3RpbWluZ19ub2RlKHJvb3QsIHRpbWluZ3MsIHRhYnMpOgorICAgIGZvciBfIGluIHJhbmdlKHRh
YnMpOgorICAgICAgICBwcmludCAiICAgICIsCisgICAgcGVyY2VudF90aW1lID0gMS4wCisgICAg
aWYgcm9vdC5wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgIHBlcmNlbnRfdGltZSA9IGZsb2F0
KHJvb3QudG90YWxfdGltZSkgLyBmbG9hdChyb290LnBhcmVudC50b3RhbF90aW1lKQorICAgIHBy
aW50ICIlcyAtICUuMmYlJSIgJSAoc3RyKHJvb3QpLCBwZXJjZW50X3RpbWUgKiAxMDAuMCkKKyAg
ICBmb3IgY2hpbGQgaW4gcmV2ZXJzZWQoc29ydGVkKHJvb3QuY2hpbGRyZW4sIGtleT1sYW1iZGEg
dDogdC50b3RhbF90aW1lKSk6CisgICAgICAgIGlmIGNoaWxkLnBhcmVudCAhPSByb290OgorICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgY2hpbGQuY29sbGVjdF90eXBlICE9IHJvb3Qu
Y29sbGVjdF90eXBlOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcHJpbnRfdGltaW5n
X25vZGUoY2hpbGQsIHRpbWluZ3MsIHRhYnMgKyAxKQorICAgIAorCitkZWYgcHJpbnRfdGltaW5n
X3RyZWUodGltaW5ncyk6CisgICAgdGltaW5ncy5zb3J0KGtleT1sYW1iZGEgdDogdC50b3RhbF90
aW1lKQorICAgIHRpbWluZ3MucmV2ZXJzZSgpCisgICAgY29sbGVjdGlvbl90eXBlcyA9IFsiQWxs
IiwgIkVkZW4iLCAiRnVsbCJdCisgICAgZm9yIGNvbGxlY3RfdHlwZSBpbiBjb2xsZWN0aW9uX3R5
cGVzOgorICAgICAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6CisgICAgICAgICAgICBpZiB0aW1p
bmcuY29sbGVjdF90eXBlICE9IGNvbGxlY3RfdHlwZToKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgaWYgdGltaW5nLnBhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgcHJpbnRfdGltaW5nX25vZGUodGltaW5nLCB0aW1p
bmdzLCAwKQorICAgICAgICBwcmludCAiIgorCisKK2RlZiBsaW5rX3BhcmVudHModGltaW5ncyk6
CisgICAgZm9yIHRpbWluZyBpbiB0aW1pbmdzOgorICAgICAgICBpZiB0aW1pbmcucGFyZW50ID09
ICJudWxscHRyIjoKKyAgICAgICAgICAgIHRpbWluZy5wYXJlbnQgPSBOb25lCisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBmb3IgcGFyZW50IGluIHRpbWluZ3M6CisgICAgICAgICAgICBp
ZiB0aW1pbmcucGFyZW50ICE9IHBhcmVudC5uYW1lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBpZiB0aW1pbmcuY29sbGVjdF90eXBlICE9IHBhcmVudC5jb2xsZWN0X3R5
cGU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHRpbWluZy5wYXJlbnQg
PSBwYXJlbnQKKyAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5hcHBlbmQodGltaW5nKQorCitk
ZWYgbWFpbigpOgorICAgIHRpbWluZ3MgPSBwYXJzZV9pbnB1dCgpCisgICAgbGlua19wYXJlbnRz
KHRpbWluZ3MpCisgICAgcHJpbnRfdGltaW5nX3RyZWUodGltaW5ncykKKworaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Nj
cmlwdHMvcGFyc2UtZ2MtcGhhc2UtdGltaW5ncwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0
YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248944</attachid>
            <date>2015-03-18 11:29:04 -0700</date>
            <delta_ts>2015-03-20 19:03:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142675-20150318112832.patch</filename>
            <type>text/plain</type>
            <size>13241</size>
            <attacher name="Mark Hahnenberg">mhahnenb</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNzAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYkBnbWFpbC5jb20+CisKKyAg
ICAgICAgR0NUaW1lciBzaG91bGQga25vdyBrZWVwIHRyYWNrIG9mIG5lc3RlZCBHQyBwaGFzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaW1w
cm92ZXMgdGhlIEdDIHBoYXNlIHRpbWluZyBvdXRwdXQgaW4gSGVhcC5jcHAgYnkgbGlua2luZwor
ICAgICAgICBwaGFzZXMgbmVzdGVkIGluc2lkZSBvdGhlciBwaGFzZXMgdG9nZXRoZXIsIGFsbG93
aW5nIHRvb2xzCisgICAgICAgIHRvIGNvbXB1dGUgaG93IG11Y2ggdGltZSB3ZSdyZSBzcGVuZGlu
ZyBpbiB2YXJpb3VzIG5lc3RlZCBwaGFzZXMuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgor
CiAyMDE1LTAzLTE3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgogCiAg
ICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2gg
ZXdrX2V4dGVuc2lvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDE4MTY5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxMTUgKzgwLDEyNSBAQCBzdGF0aWMgdHlwZSBuYW1lIGFyZ3VtZW50
czsKIAogc3RydWN0IEdDVGltZXIgewogICAgIEdDVGltZXIoY29uc3QgY2hhciogbmFtZSkKLSAg
ICAgICAgOiBtX25hbWUobmFtZSkKKyAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgewogICAgIH0K
ICAgICB+R0NUaW1lcigpCiAgICAgewotICAgICAgICBsb2dEYXRhKG1fYWxsQ29sbGVjdGlvbkRh
dGEsICIoQWxsKSIpOwotICAgICAgICBsb2dEYXRhKG1fZWRlbkNvbGxlY3Rpb25EYXRhLCAiKEVk
ZW4pIik7Ci0gICAgICAgIGxvZ0RhdGEobV9mdWxsQ29sbGVjdGlvbkRhdGEsICIoRnVsbCkiKTsK
KyAgICAgICAgbG9nRGF0YShhbGxDb2xsZWN0aW9uRGF0YSwgIihBbGwpIik7CisgICAgICAgIGxv
Z0RhdGEoZWRlbkNvbGxlY3Rpb25EYXRhLCAiKEVkZW4pIik7CisgICAgICAgIGxvZ0RhdGEoZnVs
bENvbGxlY3Rpb25EYXRhLCAiKEZ1bGwpIik7CiAgICAgfQogCiAgICAgc3RydWN0IFRpbWVSZWNv
cmQgewogICAgICAgICBUaW1lUmVjb3JkKCkKLSAgICAgICAgICAgIDogbV90aW1lKDApCi0gICAg
ICAgICAgICAsIG1fbWluKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkK
LSAgICAgICAgICAgICwgbV9tYXgoMCkKLSAgICAgICAgICAgICwgbV9jb3VudCgwKQorICAgICAg
ICAgICAgOiB0aW1lKDApCisgICAgICAgICAgICAsIG1pbihzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkpCisgICAgICAgICAgICAsIG1heCgwKQorICAgICAgICAgICAgLCBj
b3VudCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBkb3VibGUgbV90aW1lOwot
ICAgICAgICBkb3VibGUgbV9taW47Ci0gICAgICAgIGRvdWJsZSBtX21heDsKLSAgICAgICAgc2l6
ZV90IG1fY291bnQ7CisgICAgICAgIGRvdWJsZSB0aW1lOworICAgICAgICBkb3VibGUgbWluOwor
ICAgICAgICBkb3VibGUgbWF4OworICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgfTsKIAogICAg
IHZvaWQgbG9nRGF0YShjb25zdCBUaW1lUmVjb3JkJiBkYXRhLCBjb25zdCBjaGFyKiBleHRyYSkK
ICAgICB7Ci0gICAgICAgIGRhdGFMb2dGKCJbJWRdICVzICVzOiAlLjJsZm1zIChhdmcuICUuMmxm
LCBtaW4uICUuMmxmLCBtYXguICUuMmxmLCBjb3VudCAlbHUpXG4iLCAKKyAgICAgICAgZGF0YUxv
Z0YoIlslZF0gJXMgKFBhcmVudDogJXMpICVzOiAlLjJsZm1zIChhdmcuICUuMmxmLCBtaW4uICUu
MmxmLCBtYXguICUuMmxmLCBjb3VudCAlbHUpXG4iLCAKICAgICAgICAgICAgIGdldEN1cnJlbnRQ
cm9jZXNzSUQoKSwKLSAgICAgICAgICAgIG1fbmFtZSwgZXh0cmEsIAotICAgICAgICAgICAgZGF0
YS5tX3RpbWUgKiAxMDAwLCAKLSAgICAgICAgICAgIGRhdGEubV90aW1lICogMTAwMCAvIGRhdGEu
bV9jb3VudCwgCi0gICAgICAgICAgICBkYXRhLm1fbWluICogMTAwMCwgCi0gICAgICAgICAgICBk
YXRhLm1fbWF4ICogMTAwMCwKLSAgICAgICAgICAgIGRhdGEubV9jb3VudCk7CisgICAgICAgICAg
ICBuYW1lLAorICAgICAgICAgICAgcGFyZW50ID8gcGFyZW50LT5uYW1lIDogIm51bGxwdHIiLAor
ICAgICAgICAgICAgZXh0cmEsIAorICAgICAgICAgICAgZGF0YS50aW1lICogMTAwMCwgCisgICAg
ICAgICAgICBkYXRhLnRpbWUgKiAxMDAwIC8gZGF0YS5jb3VudCwgCisgICAgICAgICAgICBkYXRh
Lm1pbiAqIDEwMDAsIAorICAgICAgICAgICAgZGF0YS5tYXggKiAxMDAwLAorICAgICAgICAgICAg
ZGF0YS5jb3VudCk7CiAgICAgfQogCiAgICAgdm9pZCB1cGRhdGVEYXRhKFRpbWVSZWNvcmQmIGRh
dGEsIGRvdWJsZSBkdXJhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChkdXJhdGlvbiA8IGRhdGEu
bV9taW4pCi0gICAgICAgICAgICBkYXRhLm1fbWluID0gZHVyYXRpb247Ci0gICAgICAgIGlmIChk
dXJhdGlvbiA+IGRhdGEubV9tYXgpCi0gICAgICAgICAgICBkYXRhLm1fbWF4ID0gZHVyYXRpb247
Ci0gICAgICAgIGRhdGEubV9jb3VudCsrOwotICAgICAgICBkYXRhLm1fdGltZSArPSBkdXJhdGlv
bjsKKyAgICAgICAgaWYgKGR1cmF0aW9uIDwgZGF0YS5taW4pCisgICAgICAgICAgICBkYXRhLm1p
biA9IGR1cmF0aW9uOworICAgICAgICBpZiAoZHVyYXRpb24gPiBkYXRhLm1heCkKKyAgICAgICAg
ICAgIGRhdGEubWF4ID0gZHVyYXRpb247CisgICAgICAgIGRhdGEuY291bnQrKzsKKyAgICAgICAg
ZGF0YS50aW1lICs9IGR1cmF0aW9uOwogICAgIH0KIAogICAgIHZvaWQgZGlkRmluaXNoUGhhc2Uo
SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSwgZG91YmxlIGR1cmF0aW9uKQogICAgIHsKLSAg
ICAgICAgVGltZVJlY29yZCYgZGF0YSA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0aW9u
ID8gbV9lZGVuQ29sbGVjdGlvbkRhdGEgOiBtX2Z1bGxDb2xsZWN0aW9uRGF0YTsKKyAgICAgICAg
VGltZVJlY29yZCYgZGF0YSA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0aW9uID8gZWRl
bkNvbGxlY3Rpb25EYXRhIDogZnVsbENvbGxlY3Rpb25EYXRhOwogICAgICAgICB1cGRhdGVEYXRh
KGRhdGEsIGR1cmF0aW9uKTsKLSAgICAgICAgdXBkYXRlRGF0YShtX2FsbENvbGxlY3Rpb25EYXRh
LCBkdXJhdGlvbik7CisgICAgICAgIHVwZGF0ZURhdGEoYWxsQ29sbGVjdGlvbkRhdGEsIGR1cmF0
aW9uKTsKICAgICB9CiAKLSAgICBUaW1lUmVjb3JkIG1fYWxsQ29sbGVjdGlvbkRhdGE7Ci0gICAg
VGltZVJlY29yZCBtX2Z1bGxDb2xsZWN0aW9uRGF0YTsKLSAgICBUaW1lUmVjb3JkIG1fZWRlbkNv
bGxlY3Rpb25EYXRhOwotICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKKyAgICBzdGF0aWMgR0NUaW1l
ciogc19jdXJyZW50R2xvYmFsVGltZXI7CisKKyAgICBUaW1lUmVjb3JkIGFsbENvbGxlY3Rpb25E
YXRhOworICAgIFRpbWVSZWNvcmQgZnVsbENvbGxlY3Rpb25EYXRhOworICAgIFRpbWVSZWNvcmQg
ZWRlbkNvbGxlY3Rpb25EYXRhOworICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgR0NUaW1lciog
cGFyZW50IHsgbnVsbHB0ciB9OwogfTsKIAorR0NUaW1lciogR0NUaW1lcjo6c19jdXJyZW50R2xv
YmFsVGltZXIgPSBudWxscHRyOworCiBzdHJ1Y3QgR0NUaW1lclNjb3BlIHsKLSAgICBHQ1RpbWVy
U2NvcGUoR0NUaW1lciogdGltZXIsIEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCi0gICAg
ICAgIDogbV90aW1lcih0aW1lcikKLSAgICAgICAgLCBtX3N0YXJ0KFdURjo6bW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkpCi0gICAgICAgICwgbV9jb2xsZWN0aW9uVHlwZShjb2xsZWN0aW9u
VHlwZSkKKyAgICBHQ1RpbWVyU2NvcGUoR0NUaW1lciYgdGltZXIsIEhlYXBPcGVyYXRpb24gY29s
bGVjdGlvblR5cGUpCisgICAgICAgIDogdGltZXIodGltZXIpCisgICAgICAgICwgc3RhcnQoV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKKyAgICAgICAgLCBjb2xsZWN0aW9uVHlw
ZShjb2xsZWN0aW9uVHlwZSkKICAgICB7CisgICAgICAgIHRpbWVyLnBhcmVudCA9IEdDVGltZXI6
OnNfY3VycmVudEdsb2JhbFRpbWVyOworICAgICAgICBHQ1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxU
aW1lciA9ICZ0aW1lcjsKICAgICB9CiAgICAgfkdDVGltZXJTY29wZSgpCiAgICAgewotICAgICAg
ICBkb3VibGUgZGVsdGEgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9z
dGFydDsKLSAgICAgICAgbV90aW1lci0+ZGlkRmluaXNoUGhhc2UobV9jb2xsZWN0aW9uVHlwZSwg
ZGVsdGEpOwotICAgIH0KLSAgICBHQ1RpbWVyKiBtX3RpbWVyOwotICAgIGRvdWJsZSBtX3N0YXJ0
OwotICAgIEhlYXBPcGVyYXRpb24gbV9jb2xsZWN0aW9uVHlwZTsKKyAgICAgICAgZG91YmxlIGRl
bHRhID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIHN0YXJ0OworICAgICAg
ICB0aW1lci5kaWRGaW5pc2hQaGFzZShjb2xsZWN0aW9uVHlwZSwgZGVsdGEpOworICAgICAgICBH
Q1RpbWVyOjpzX2N1cnJlbnRHbG9iYWxUaW1lciA9IHRpbWVyLnBhcmVudDsKKyAgICB9CisgICAg
R0NUaW1lciYgdGltZXI7CisgICAgZG91YmxlIHN0YXJ0OworICAgIEhlYXBPcGVyYXRpb24gY29s
bGVjdGlvblR5cGU7CiB9OwogCiBzdHJ1Y3QgR0NDb3VudGVyIHsKICAgICBHQ0NvdW50ZXIoY29u
c3QgY2hhciogbmFtZSkKLSAgICAgICAgOiBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2NvdW50
KDApCi0gICAgICAgICwgbV90b3RhbCgwKQotICAgICAgICAsIG1fbWluKDEwMDAwMDAwKQotICAg
ICAgICAsIG1fbWF4KDApCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGNvdW50KDAp
CisgICAgICAgICwgdG90YWwoMCkKKyAgICAgICAgLCBtaW4oMTAwMDAwMDApCisgICAgICAgICwg
bWF4KDApCiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIGNvdW50KHNpemVfdCBhbW91bnQp
CisgICAgdm9pZCBhZGQoc2l6ZV90IGFtb3VudCkKICAgICB7Ci0gICAgICAgIG1fY291bnQrKzsK
LSAgICAgICAgbV90b3RhbCArPSBhbW91bnQ7Ci0gICAgICAgIGlmIChhbW91bnQgPCBtX21pbikK
LSAgICAgICAgICAgIG1fbWluID0gYW1vdW50OwotICAgICAgICBpZiAoYW1vdW50ID4gbV9tYXgp
Ci0gICAgICAgICAgICBtX21heCA9IGFtb3VudDsKKyAgICAgICAgY291bnQrKzsKKyAgICAgICAg
dG90YWwgKz0gYW1vdW50OworICAgICAgICBpZiAoYW1vdW50IDwgbWluKQorICAgICAgICAgICAg
bWluID0gYW1vdW50OworICAgICAgICBpZiAoYW1vdW50ID4gbWF4KQorICAgICAgICAgICAgbWF4
ID0gYW1vdW50OwogICAgIH0KICAgICB+R0NDb3VudGVyKCkKICAgICB7Ci0gICAgICAgIGRhdGFM
b2dGKCJbJWRdICVzOiAlenUgdmFsdWVzIChhdmcuICV6dSwgbWluLiAlenUsIG1heC4gJXp1KVxu
IiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX25hbWUsIG1fdG90YWwsIG1fdG90YWwgLyBtX2Nv
dW50LCBtX21pbiwgbV9tYXgpOworICAgICAgICBkYXRhTG9nRigiWyVkXSAlczogJXp1IHZhbHVl
cyAoYXZnLiAlenUsIG1pbi4gJXp1LCBtYXguICV6dSlcbiIsIGdldEN1cnJlbnRQcm9jZXNzSUQo
KSwgbmFtZSwgdG90YWwsIHRvdGFsIC8gY291bnQsIG1pbiwgbWF4KTsKICAgICB9Ci0gICAgY29u
c3QgY2hhciogbV9uYW1lOwotICAgIHNpemVfdCBtX2NvdW50OwotICAgIHNpemVfdCBtX3RvdGFs
OwotICAgIHNpemVfdCBtX21pbjsKLSAgICBzaXplX3QgbV9tYXg7CisgICAgY29uc3QgY2hhciog
bmFtZTsKKyAgICBzaXplX3QgY291bnQ7CisgICAgc2l6ZV90IHRvdGFsOworICAgIHNpemVfdCBt
aW47CisgICAgc2l6ZV90IG1heDsKIH07CiAKLSNkZWZpbmUgR0NQSEFTRShuYW1lKSBERUZJTkVf
R0NfTE9HR0lOR19HTE9CQUwoR0NUaW1lciwgbmFtZSMjVGltZXIsICgjbmFtZSkpOyBHQ1RpbWVy
U2NvcGUgbmFtZSMjVGltZXJTY29wZSgmbmFtZSMjVGltZXIsIG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cykKLSNkZWZpbmUgR0NDT1VOVEVSKG5hbWUsIHZhbHVlKSBkbyB7IERFRklORV9HQ19MT0dHSU5H
X0dMT0JBTChHQ0NvdW50ZXIsIG5hbWUjI0NvdW50ZXIsICgjbmFtZSkpOyBuYW1lIyNDb3VudGVy
LmNvdW50KHZhbHVlKTsgfSB3aGlsZSAoZmFsc2UpCisjZGVmaW5lIEdDUEhBU0UobmFtZSkgREVG
SU5FX0dDX0xPR0dJTkdfR0xPQkFMKEdDVGltZXIsIG5hbWUjI1RpbWVyLCAoI25hbWUpKTsgR0NU
aW1lclNjb3BlIG5hbWUjI1RpbWVyU2NvcGUobmFtZSMjVGltZXIsIG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcykKKyNkZWZpbmUgR0NDT1VOVEVSKG5hbWUsIHZhbHVlKSBkbyB7IERFRklORV9HQ19MT0dH
SU5HX0dMT0JBTChHQ0NvdW50ZXIsIG5hbWUjI0NvdW50ZXIsICgjbmFtZSkpOyBuYW1lIyNDb3Vu
dGVyLmFkZCh2YWx1ZSk7IH0gd2hpbGUgKGZhbHNlKQogICAgIAogI2Vsc2UKIApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgx
NzAzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTUtMDMtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iQGdtYWlsLmNvbT4KKworICAg
ICAgICBHQ1RpbWVyIHNob3VsZCBrbm93IGtlZXAgdHJhY2sgb2YgbmVzdGVkIEdDIHBoYXNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHRv
b2wgdG8gYWlkIGluIHBhcnNpbmcgdGhlIEdDIHBoYXNlIHRpbWluZyBvdXRwdXQgaW50byBhCisg
ICAgICAgIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgYmFzZWQgb24gdGhlIHBhcmVudC1jaGlsZCByZWxh
dGlvbnNoaXBzCisgICAgICAgIG9mIG5lc3RlZCBHQyBwaGFzZXMuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3BhcnNlLWdjLXBoYXNlLXRpbWluZ3M6IEFkZGVkLgorICAgICAgICAoVGltaW5nKToKKyAg
ICAgICAgKFRpbWluZy5fX2luaXRfXyk6CisgICAgICAgIChUaW1pbmcuX191bmljb2RlX18pOgor
ICAgICAgICAoVGltaW5nLl9fc3RyX18pOgorICAgICAgICAoVGltaW5nLl9fcmVwcl9fKToKKyAg
ICAgICAgKHBhcnNlX2lucHV0KToKKyAgICAgICAgKHByaW50X3RpbWluZ19ub2RlKToKKyAgICAg
ICAgKHByaW50X3RpbWluZ190cmVlKToKKyAgICAgICAgKGxpbmtfcGFyZW50cyk6CisgICAgICAg
IChtYWluKToKKwogMjAxNS0wMy0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIHByZXBhcmUtQ2hhbmdlTG9nIGRvZXNuJ3QgdW5kZXJzdGFuZCBDIHN0cmluZyBs
aXRlcmFscyBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgbGluZXMgd2l0aCBcCkluZGV4OiBUb29scy9T
Y3JpcHRzL3BhcnNlLWdjLXBoYXNlLXRpbWluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9wYXJzZS1nYy1waGFzZS10aW1pbmdzCShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy9w
YXJzZS1nYy1waGFzZS10aW1pbmdzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMxIEBACisj
IS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTUgTWFyayBIYWhuZW5i
ZXJnLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGZpbGVpbnB1dAoraW1wb3J0IHJlCisKK1RJTUlOR19SRUdFWCA9
IHJlLmNvbXBpbGUoCisgICAgcideXFsoP1A8cGlkPlswLTldKylcXSAnCisgICAgJyg/UDxuYW1l
PlteIF0rKSAnCisgICAgJ1woUGFyZW50OiAoP1A8cGFyZW50PlteXCldKylcKSAnCisgICAgJ1wo
KD9QPGNvbGxlY3RfdHlwZT5bXlwpXSspXCk6ICcKKyAgICAnKD9QPHRvdGFsX3RpbWU+WzAtOV0r
XC5bMC05XSspbXMgJworICAgICdcKGF2Zy4gKD9QPGF2Z190aW1lPlteLF0rKSwgJworICAgICdt
aW4uICg/UDxtaW5fdGltZT5bXixdKyksICcKKyAgICAnbWF4LiAoP1A8bWF4X3RpbWU+W14sXSsp
LCAnCisgICAgJ2NvdW50ICg/UDxjb3VudD5bXlwpXSspXCknKQorCitjbGFzcyBUaW1pbmcob2Jq
ZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGlkLCBuYW1lLCBwYXJlbnQsIGNvbGxlY3Rf
dHlwZSwgdG90YWxfdGltZSwgYXZnX3RpbWUsIG1pbl90aW1lLCBtYXhfdGltZSwgY291bnQpOgor
ICAgICAgICBzZWxmLnBpZCA9IGludChwaWQpCisgICAgICAgIHNlbGYubmFtZSA9IHN0cihuYW1l
KQorICAgICAgICBzZWxmLnBhcmVudCA9IHN0cihwYXJlbnQpCisgICAgICAgIHNlbGYuY29sbGVj
dF90eXBlID0gc3RyKGNvbGxlY3RfdHlwZSkKKyAgICAgICAgc2VsZi50b3RhbF90aW1lID0gZmxv
YXQodG90YWxfdGltZSkKKyAgICAgICAgc2VsZi5hdmdfdGltZSA9IGZsb2F0KGF2Z190aW1lKQor
ICAgICAgICBzZWxmLm1pbl90aW1lID0gZmxvYXQobWluX3RpbWUpCisgICAgICAgIHNlbGYubWF4
X3RpbWUgPSBmbG9hdChtYXhfdGltZSkKKyAgICAgICAgc2VsZi5jb3VudCA9IGludChjb3VudCkK
KyAgICAgICAgc2VsZi5jaGlsZHJlbiA9IFtdCisKKyAgICBkZWYgX191bmljb2RlX18oc2VsZik6
CisgICAgICAgIHJldHVybiB1IiVzIC0gJXMgdG90YWw6ICUuMmYsIGF2ZzogJS4yZiIgJSAoc2Vs
Zi5uYW1lLCBzZWxmLmNvbGxlY3RfdHlwZSwgc2VsZi50b3RhbF90aW1lLCBzZWxmLmF2Z190aW1l
KQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgLSAlcyB0b3Rh
bDogJS4yZiwgYXZnOiAlLjJmIiAlIChzZWxmLm5hbWUsIHNlbGYuY29sbGVjdF90eXBlLCBzZWxm
LnRvdGFsX3RpbWUsIHNlbGYuYXZnX3RpbWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiAiJXMgLSAlcyB0b3RhbDogJS4yZiwgYXZnOiAlLjJmIiAlIChzZWxmLm5h
bWUsIHNlbGYuY29sbGVjdF90eXBlLCBzZWxmLnRvdGFsX3RpbWUsIHNlbGYuYXZnX3RpbWUpCisK
KworZGVmIHBhcnNlX2lucHV0KCk6CisgICAgdGltaW5ncyA9IFtdCisgICAgZm9yIGxpbmUgaW4g
ZmlsZWlucHV0LmlucHV0KCk6CisgICAgICAgIHJlc3VsdCA9IFRJTUlOR19SRUdFWC5tYXRjaChs
aW5lKQorICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIHRpbWluZ3MuYXBwZW5kKFRpbWluZygKKyAgICAgICAgICAgIHJlc3VsdC5ncm91cCgn
cGlkJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ25hbWUnKSwKKyAgICAgICAgICAgIHJl
c3VsdC5ncm91cCgncGFyZW50JyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ2NvbGxlY3Rf
dHlwZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCd0b3RhbF90aW1lJyksCisgICAgICAg
ICAgICByZXN1bHQuZ3JvdXAoJ2F2Z190aW1lJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAo
J21pbl90aW1lJyksCisgICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ21heF90aW1lJyksCisgICAg
ICAgICAgICByZXN1bHQuZ3JvdXAoJ2NvdW50JyksCisgICAgICAgICkpCisgICAgcmV0dXJuIHRp
bWluZ3MKKworCitkZWYgcHJpbnRfdGltaW5nX25vZGUocm9vdCwgdGltaW5ncywgdGFicyk6Cisg
ICAgZm9yIF8gaW4gcmFuZ2UodGFicyk6CisgICAgICAgIHByaW50ICIgICAgIiwKKyAgICBwZXJj
ZW50X3RpbWUgPSAxLjAKKyAgICBpZiByb290LnBhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAg
cGVyY2VudF90aW1lID0gZmxvYXQocm9vdC50b3RhbF90aW1lKSAvIGZsb2F0KHJvb3QucGFyZW50
LnRvdGFsX3RpbWUpCisgICAgcHJpbnQgIiVzIC0gJS4yZiUlIiAlIChzdHIocm9vdCksIHBlcmNl
bnRfdGltZSAqIDEwMC4wKQorICAgIGZvciBjaGlsZCBpbiByZXZlcnNlZChzb3J0ZWQocm9vdC5j
aGlsZHJlbiwga2V5PWxhbWJkYSB0OiB0LnRvdGFsX3RpbWUpKToKKyAgICAgICAgaWYgY2hpbGQu
cGFyZW50ICE9IHJvb3Q6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBjaGlsZC5j
b2xsZWN0X3R5cGUgIT0gcm9vdC5jb2xsZWN0X3R5cGU6CisgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICBwcmludF90aW1pbmdfbm9kZShjaGlsZCwgdGltaW5ncywgdGFicyArIDEpCisgICAg
CisKK2RlZiBwcmludF90aW1pbmdfdHJlZSh0aW1pbmdzKToKKyAgICB0aW1pbmdzLnNvcnQoa2V5
PWxhbWJkYSB0OiB0LnRvdGFsX3RpbWUpCisgICAgdGltaW5ncy5yZXZlcnNlKCkKKyAgICBjb2xs
ZWN0aW9uX3R5cGVzID0gWyJBbGwiLCAiRWRlbiIsICJGdWxsIl0KKyAgICBmb3IgY29sbGVjdF90
eXBlIGluIGNvbGxlY3Rpb25fdHlwZXM6CisgICAgICAgIGZvciB0aW1pbmcgaW4gdGltaW5nczoK
KyAgICAgICAgICAgIGlmIHRpbWluZy5jb2xsZWN0X3R5cGUgIT0gY29sbGVjdF90eXBlOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiB0aW1pbmcucGFyZW50IGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBwcmludF90aW1p
bmdfbm9kZSh0aW1pbmcsIHRpbWluZ3MsIDApCisgICAgICAgIHByaW50ICIiCisKKworZGVmIGxp
bmtfcGFyZW50cyh0aW1pbmdzKToKKyAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6CisgICAgICAg
IGlmIHRpbWluZy5wYXJlbnQgPT0gIm51bGxwdHIiOgorICAgICAgICAgICAgdGltaW5nLnBhcmVu
dCA9IE5vbmUKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBwYXJlbnQgaW4gdGlt
aW5nczoKKyAgICAgICAgICAgIGlmIHRpbWluZy5wYXJlbnQgIT0gcGFyZW50Lm5hbWU6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHRpbWluZy5jb2xsZWN0X3R5cGUg
IT0gcGFyZW50LmNvbGxlY3RfdHlwZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgdGltaW5nLnBhcmVudCA9IHBhcmVudAorICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVu
LmFwcGVuZCh0aW1pbmcpCisKK2RlZiBtYWluKCk6CisgICAgdGltaW5ncyA9IHBhcnNlX2lucHV0
KCkKKyAgICBsaW5rX3BhcmVudHModGltaW5ncykKKyAgICBwcmludF90aW1pbmdfdHJlZSh0aW1p
bmdzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9wYXJzZS1nYy1waGFzZS10aW1pbmdzCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>