<?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>100903</bug_id>
          
          <creation_ts>2012-10-31 16:58:46 -0700</creation_ts>
          <short_desc>IndexedDB: Move control of transaction completion to front end</short_desc>
          <delta_ts>2012-11-20 16:35:54 -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>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755730</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-31 16:58:46 -0700</bug_when>
    <thetext>IndexedDB: Move control of transaction completion to front end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755733</commentid>
    <comment_count>1</comment_count>
      <attachid>171742</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-31 17:05:16 -0700</bug_when>
    <thetext>Created attachment 171742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755737</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-31 17:08:26 -0700</bug_when>
    <thetext>Incomplete (and untested).

We may be able to simplify the IDBTransactionBackendImpl further:

* Eliminate the dual timers - one should be enough
* Eliminate the didCompleteTaskEvents message routing - the back end should no longer need to be aware of the status of the front end
* Subsume webkit.org/b/97738 and run multiple events per tick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756612</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-01 14:26:00 -0700</bug_when>
    <thetext>Extra complexity: asynchronous operations that don&apos;t have associated requests - i.e. store and index creation/deletion - are invisible to the front end.

The back end needs to wait for those to complete as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756685</commentid>
    <comment_count>4</comment_count>
      <attachid>171945</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-01 15:35:07 -0700</bug_when>
    <thetext>Created attachment 171945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765803</commentid>
    <comment_count>5</comment_count>
      <attachid>173928</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 10:50:40 -0800</bug_when>
    <thetext>Created attachment 173928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765813</commentid>
    <comment_count>6</comment_count>
      <attachid>173928</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 10:57:58 -0800</bug_when>
    <thetext>Comment on attachment 173928
Patch

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

A few explanatory notes (mostly to myself)

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:542
&gt; +    if (m_transaction &amp;&amp; m_readyState == DONE)

This is moved up so that the transaction&apos;s requestList is (possibly) empty when setActive(false) is called, so it can try and commit.

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:99
&gt; +    , m_state(Unfinished)

The distinction between Used and Unused was only to support triggering commits from the front end for unused transactions. Now the front-end is always responsible, so we can remove the distinction.

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:206
&gt; +    if (!active &amp;&amp; m_requestList.isEmpty())

Here&apos;s the critical bit of the change.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:211
&gt; +    m_commitPending = true;

The front end thinks it&apos;s done...

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:213
&gt; +    if (m_pendingEvents || m_pendingPreemptiveEvents || !isTaskQueueEmpty())

But the back end may be busy processing a createIndex so we need to wait.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:-208
&gt; -    ASSERT(m_state == Unused || m_state == Running);

Moved up.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:-209
&gt; -    ASSERT(isTaskQueueEmpty());

Implied by above if() test.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:276
&gt; +    if (!m_pendingEvents &amp;&amp; !m_pendingPreemptiveEvents &amp;&amp; isTaskQueueEmpty()) {

Possible existing bug - commit might occur if there are pending pre-emptive events.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:277
&gt; +        ASSERT(m_commitPending);

We shouldn&apos;t hit this state unless the front-end is already done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765827</commentid>
    <comment_count>7</comment_count>
      <attachid>173928</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-13 11:07:11 -0800</bug_when>
    <thetext>Comment on attachment 173928
Patch

this is awesome. lgtm with minor nits

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:213
&gt;&gt; +    if (m_pendingEvents || m_pendingPreemptiveEvents || !isTaskQueueEmpty())
&gt; 
&gt; But the back end may be busy processing a createIndex so we need to wait.

make this a comment - I think this check is pretty critical. (do we want to move this to a descriptive helper function?)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:276
&gt;&gt; +    if (!m_pendingEvents &amp;&amp; !m_pendingPreemptiveEvents &amp;&amp; isTaskQueueEmpty()) {
&gt; 
&gt; Possible existing bug - commit might occur if there are pending pre-emptive events.

And this is just !(m_pendingEvents || m_pendingPreemptiveEvents || !isTaskQueueEmpty()) so I think a helper is justified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765923</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 12:18:50 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; 
&gt; make this a comment - I think this check is pretty critical. (do we want to move this to a descriptive helper function?)

Good call. New patch coming.

Another thing we could consider (for later) is to have these &quot;sync&quot; operations (createObjectStore, createIndex) create &quot;hidden&quot; IDBRequests on the front end, so the lifetime is managed by the transaction just like regular async operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765924</commentid>
    <comment_count>9</comment_count>
      <attachid>173955</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 12:20:12 -0800</bug_when>
    <thetext>Created attachment 173955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765992</commentid>
    <comment_count>10</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-13 13:31:31 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Another thing we could consider (for later) is to have these &quot;sync&quot; operations (createObjectStore, createIndex) create &quot;hidden&quot; IDBRequests on the front end, so the lifetime is managed by the transaction just like regular async operations.

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770965</commentid>
    <comment_count>11</comment_count>
      <attachid>175029</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-19 12:58:31 -0800</bug_when>
    <thetext>Created attachment 175029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770970</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-19 12:59:48 -0800</bug_when>
    <thetext>Rebased. Also merged m_active (boolean) into m_state (enum) since the latter was changing anyway.

alecflett@ - another look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771071</commentid>
    <comment_count>13</comment_count>
      <attachid>175029</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-19 15:05:13 -0800</bug_when>
    <thetext>Comment on attachment 175029
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:51
&gt; +    , m_commitPending(false)

How does m_commitPending work with m_state? I&apos;m concerned (more from a code maintenance perspective than a correctness perspective) that we&apos;re now doubling the possible &quot;states&quot; - to the combinations of m_state and m_commitPending (even if most of the &quot;new&quot; ones are invalid) - i.e. is m_state Finished &amp;&amp; m_commitPending = false possible? etc...

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:127
&gt; +        m_abortTaskQueue.removeFirst();

why this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771125</commentid>
    <comment_count>14</comment_count>
      <attachid>175029</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-19 15:51:37 -0800</bug_when>
    <thetext>Comment on attachment 175029
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:51
&gt;&gt; +    , m_commitPending(false)
&gt; 
&gt; How does m_commitPending work with m_state? I&apos;m concerned (more from a code maintenance perspective than a correctness perspective) that we&apos;re now doubling the possible &quot;states&quot; - to the combinations of m_state and m_commitPending (even if most of the &quot;new&quot; ones are invalid) - i.e. is m_state Finished &amp;&amp; m_commitPending = false possible? etc...

In theory orthogonal - can enter commitPending in parallel with Unused or Running. Logically can&apos;t enter commitPending when in StartPending because the front-end has queued tasks that haven&apos;t completed. This is covered by the ASSERT(m_state == Unused || m_state == Running) in ::commit().

Given that a commit() of an Unused transaction should be a no-op, I&apos;ll see if I can collapse it to an extra state &quot;after&quot; Running.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:127
&gt;&gt; +        m_abortTaskQueue.removeFirst();
&gt; 
&gt; why this change?

Good catch. This is a rebase glitch. I&apos;ll undo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772233</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-20 15:45:30 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Given that a commit() of an Unused transaction should be a no-op, I&apos;ll see if I can collapse it to an extra state &quot;after&quot; Running.

Bleah, it ends up being messier since commit() can be called more than once and the &quot;unused&quot; state is important for sending the correct notifications. However, m_commitPending was only used for ASSERT() so I&apos;ll just remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772236</commentid>
    <comment_count>16</comment_count>
      <attachid>175293</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-20 15:47:46 -0800</bug_when>
    <thetext>Created attachment 175293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772238</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-20 15:50:40 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772276</commentid>
    <comment_count>18</comment_count>
      <attachid>175293</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 16:35:50 -0800</bug_when>
    <thetext>Comment on attachment 175293
Patch

Clearing flags on attachment: 175293

Committed r135332: &lt;http://trac.webkit.org/changeset/135332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772277</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 16:35:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171742</attachid>
            <date>2012-10-31 17:05:16 -0700</date>
            <delta_ts>2012-11-01 15:35:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100903-20121031170339.patch</filename>
            <type>text/plain</type>
            <size>6010</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY3YjM1MDU4MWZkNTIx
ZjE5Y2ZhNDY4N2FjOGE0MDczMjE0ZWRkOC4uMWZiMmFlNjA4ODY5YmQxMzAxNDA2OTAwZjExMGY1
YTAzYTI5ZjRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTMxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNb3Zl
IGNvbnRyb2wgb2YgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICJXaGVuIGEgdHJhbnNhY3Rp
b24gY2FuIG5vIGxvbmdlciBiZWNvbWUgYWN0aXZlLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBh
dHRlbXB0IHRvCisgICAgICAgIGNvbW1pdCBpdCIgLSB0aGF0IGlzLCBhbGwgcmVxdWVzdHMgaGF2
ZSBkaXNwYXRjaGVkIHN1Y2Nlc3MvZXJyb3IgZXZlbnRzIGFuZCBubyBmdXJ0aGVyCisgICAgICAg
IHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBkb25lIGJ5IHRo
ZSBiYWNrIGVuZCB3YWl0aW5nIGZvciBldmVudHMKKyAgICAgICAgZnJvbSB0aGUgZnJvbnQgZW5k
LCBidXQgdGhlIGZyb250IGVuZCBjYW4gbW9yZSBlZmZpY2llbnRseSBtYWtlIHRoZSBkZWNpc2lv
bi4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZGV0ZWN0YWJsZSBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLSouaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpydW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCk6CisKIDIwMTItMTAt
MzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAg
ICAgICAgUmVzZXQgYmluZGluZyB0ZXN0IHJlc3VsdCBhZnRlciByMTMyOTczCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
OGVjMTVlNWVjMDczZGZmYjFmYjE2MTBlZTg2NDAzMjFlMDQ5YTQyYS4uMWRjN2EzOWI3ZDM0ZDAz
ZGU0YjhmOGRmNzUwZjg4MzIyM2VkMzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtOTUsNyArOTUsNyBAQCBJREJU
cmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJUcgogICAgICwgbV9vcGVuREJSZXF1ZXN0KG9wZW5EQlJlcXVlc3Qp
CiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fYWN0aXZlKHRydWUpCi0gICAgLCBtX3N0YXRl
KFVudXNlZCkKKyAgICAsIG1fc3RhdGUoVW5maW5pc2hlZCkKICAgICAsIG1faGFzUGVuZGluZ0Fj
dGl2aXR5KHRydWUpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogewpAQCAtMTA0LDgg
KzEwNCw2IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyCiAgICAgaWYgKG1vZGUgPT0gVkVSU0lP
Tl9DSEFOR0UpIHsKICAgICAgICAgLy8gTm90IGFjdGl2ZSB1bnRpbCB0aGUgY2FsbGJhY2suCiAg
ICAgICAgIG1fYWN0aXZlID0gZmFsc2U7Ci0gICAgICAgIC8vIEltcGxpY2l0bHkgdXNlZCBieSB0
aGUgdmVyc2lvbiBjaGFuZ2UgaXRzZWxmLgotICAgICAgICBtX3N0YXRlID0gVXNlZDsKICAgICB9
CiAKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBpdCBj
YW4gYmUgYWRvcHRlZC4KQEAgLTE5NywxMSArMTk1LDExIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fc3RhdGUg
IT0gRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5zYWN0aW9uIHRyaWVkIHRvIHNldEFjdGl2ZSgl
cykiLCBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5p
c2hpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwg
bV9zdGF0ZSA9PSBVc2VkKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbmZpbmlzaGVkKTsKICAg
ICBBU1NFUlQoYWN0aXZlICE9IG1fYWN0aXZlKTsKICAgICBtX2FjdGl2ZSA9IGFjdGl2ZTsKIAot
ICAgIGlmICghYWN0aXZlICYmIG1fc3RhdGUgPT0gVW51c2VkKQorICAgIGlmICghYWN0aXZlICYm
IG1fcmVxdWVzdExpc3QuaXNFbXB0eSgpKQogICAgICAgICBtX2JhY2tlbmQtPmNvbW1pdCgpOwog
fQogCkBAIC0yNjksMTAgKzI2Nyw5IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNsb3NlT3BlbkN1
cnNvcnMoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3Qq
IHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwotICAgIEFTU0VSVChtX3N0YXRlID09
IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09IFVuZmlu
aXNoZWQpOwogICAgIEFTU0VSVChtX2FjdGl2ZSk7CiAgICAgbV9yZXF1ZXN0TGlzdC5hZGQocmVx
dWVzdCk7Ci0gICAgbV9zdGF0ZSA9IFVzZWQ7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnVu
cmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA4OTkzOWJmODU5NzVi
MWNiOWY3ZjUwYjUxOTdmOWY2YWMzMWJmYzk1Li4yZDU1Njk0MDYwY2RlODIxODM0N2VmNzA2NWI5
ZjBjMDBlNzU1Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKQEAgLTEzNyw4ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAogICAgIGVudW0g
U3RhdGUgewotICAgICAgICBVbnVzZWQsIC8vIE5vIHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLgot
ICAgICAgICBVc2VkLCAvLyBBdCBsZWFzdCBvbmUgcmVxdWVzdCBoYXMgYmVlbiBtYWRlLgorICAg
ICAgICBVbmZpbmlzaGVkLCAvLyBDcmVhdGVkIG9yIHN0YXJ0ZWQsIHBvc3NpYmx5IGFjdGl2ZSwg
YW5kIG5vdCB5ZXQgYWJvcnRpbmcgb3IgY29tbWl0dGluZwogICAgICAgICBGaW5pc2hpbmcsIC8v
IEluIHRoZSBwcm9jZXNzIG9mIGFib3J0aW5nIG9yIGNvbXBsZXRpbmcuCiAgICAgICAgIEZpbmlz
aGVkLCAvLyBObyBtb3JlIGV2ZW50cyB3aWxsIGZpcmUgYW5kIG5vIG5ldyByZXF1ZXN0cyBtYXkg
YmUgZmlsZWQuCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggZjE2NjUx
OTQ5YmFkM2M1YjE1MWJlYjRmZjc1ZjI1ZDA2YjcxYTI2Ni4uZGI1ZDI0MzVmNTVkZDVjNGQ3NzRl
NDkwNWJlNWVmMjU2MDVjZDBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTE5
MiwxMiArMTkyLDE4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxl
dGVUYXNrRXZlbnRzKCkKICAgICBBU1NFUlQobV9wZW5kaW5nRXZlbnRzKTsKICAgICBtX3BlbmRp
bmdFdmVudHMtLTsKIAorICAgIC8vIEEgc2luZ2xlIHRhc2sgaGFzIGNvbXBsZXRlZCBhbmQgZXJy
b3Ivc3VjY2VzcyBldmVudHMgZmlyZWQuIFNjaGVkdWxlCisgICAgLy8gdGltZXIgdG8gcHJvY2Vz
cyBhbm90aGVyLgorCiAgICAgaWYgKCFtX3Rhc2tFdmVudFRpbWVyLmlzQWN0aXZlKCkpCiAgICAg
ICAgIG1fdGFza0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnJ1bigpCiB7CisgICAgLy8gVHJhbnNhY3Rpb25Db29yZGluYXRv
ciBoYXMgc3RhcnRlZCB0aGlzIHRyYW5zYWN0aW9uLiBTY2hlZHVsZSBhIHRpbWVyCisgICAgLy8g
dG8gcHJvY2VzcyB0aGUgZmlyc3QgdGFzay4KKwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXJ0
UGVuZGluZyB8fCBtX3N0YXRlID09IFJ1bm5pbmcpOwogICAgIEFTU0VSVCghbV90YXNrVGltZXIu
aXNBY3RpdmUoKSk7CiAKQEAgLTI3OCwxNiArMjg0LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjp0YXNrRXZlbnRUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEkKICAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRp
bWVyRmlyZWQiKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKIAotICAgIGlmICgh
bV9wZW5kaW5nRXZlbnRzICYmIGlzVGFza1F1ZXVlRW1wdHkoKSkgewotICAgICAgICAvLyBUaGUg
bGFzdCB0YXNrIGV2ZW50IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0YXNrCi0gICAgICAgIC8vIHF1
ZXVlIGlzIGVtcHR5LiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLgotICAgICAgICBjb21taXQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIGFyZSBzdGlsbCB3YWl0aW5nIGZv
ciBvdGhlciBldmVudHMgdG8gY29tcGxldGUuIEhvd2V2ZXIsCi0gICAgLy8gdGhlIHRhc2sgcXVl
dWUgaXMgbm9uLWVtcHR5IGFuZCB0aGUgdGltZXIgaXMgaW5hY3RpdmUuCi0gICAgLy8gV2UgY2Fu
IHRoZXJmb3JlIHNjaGVkdWxlIHRoZSB0aW1lciBhZ2Fpbi4KKyAgICAvLyBUaGUgdGFzayBxdWV1
ZSBpcyBub24tZW1wdHkgYW5kIHRoZSB0aW1lciBpcyBpbmFjdGl2ZSwgc28gc2NoZWR1bGUKKyAg
ICAvLyB0aGUgdGltZXIgdG8gcHJvY2VzcyBhbm90aGVyIGV2ZW50LgogICAgIGlmICghaXNUYXNr
UXVldWVFbXB0eSgpICYmICFtX3Rhc2tUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3Rhc2tU
aW1lci5zdGFydE9uZVNob3QoMCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171945</attachid>
            <date>2012-11-01 15:35:07 -0700</date>
            <delta_ts>2012-11-13 10:50:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100903-20121101153328.patch</filename>
            <type>text/plain</type>
            <size>10428</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uYmM5MjhmM2FmZTYwMjdlNDkwZDNjOTYwYTY1YzEz
MjEzMDc5YjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNb3Zl
IGNvbnRyb2wgb2YgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICJXaGVuIGEgdHJhbnNhY3Rp
b24gY2FuIG5vIGxvbmdlciBiZWNvbWUgYWN0aXZlLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBh
dHRlbXB0IHRvCisgICAgICAgIGNvbW1pdCBpdCIgLSB0aGF0IGlzLCBhbGwgcmVxdWVzdHMgaGF2
ZSBkaXNwYXRjaGVkIHN1Y2Nlc3MvZXJyb3IgZXZlbnRzIGFuZCBubyBmdXJ0aGVyCisgICAgICAg
IHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBkb25lIGJ5IHRo
ZSBiYWNrIGVuZCB3YWl0aW5nIGZvciBldmVudHMKKyAgICAgICAgZnJvbSB0aGUgZnJvbnQgZW5k
LCBidXQgdGhlIGZyb250IGVuZCBjYW4gbW9yZSBlZmZpY2llbnRseSBtYWtlIHRoZSBkZWNpc2lv
bi4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZGV0ZWN0YWJsZSBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLSouaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpydW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCk6CisKIDIwMTItMTEt
MDEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LiBCdWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVhNWQ1OWZlM2U4NDFjYjI0
ZTE5YjNmYjYyYTNmZjM1ZWIzNzA2ODMuLmEwMDcwZTUyZTc5OWJlNzU4NTZjNjY5YjdiMjgxOTU0
YTgxOTA0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW4oU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXQKICAgICAgICAgaWYgKGRiICYmICFpc1NjaGVtYUtub3duKGRi
LmdldCgpKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVkREIgYmFja2luZyBzdG9y
ZSBoYWQgdW5rbm93biBzY2hlbWEsIHRyZWF0aW5nIGl0IGFzIGZhaWx1cmUgdG8gb3BlbiIpOwog
ICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIldlYkNv
cmUuSW5kZXhlZERCLkJhY2tpbmdTdG9yZS5PcGVuU3RhdHVzIiwgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZU9wZW5GYWlsZWRVbmtub3duU2NoZW1hLCBJREJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1h
eCk7Ci0gICAgICAgICAgICBkYi5yZWxlYXNlKCk7CisgICAgICAgICAgICBkYi5jbGVhcigpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGRiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAyYzJkMTJkM2YzODlkM2U1ZWJmYjMzY2E3
MzYxZGE5M2JkZTJjMzlkLi40MjYzOWYxMzExYjczZTY5YzhmY2YzZmQwN2VjZjJhMGQzNTdiNzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cApAQCAtNTM4LDYgKzUzOCwxMCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0
cnVlKTsKIAogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CisKKyAgICBpZiAobV90cmFuc2FjdGlv
biAmJiBtX3JlYWR5U3RhdGUgPT0gRE9ORSkKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdp
c3RlclJlcXVlc3QodGhpcyk7CisKICAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAg
ICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CiAKQEAgLTU1Niw5ICs1NjAsNiBA
QCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVu
dCkKICAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS0+ZGlkQ29tcGxldGVUYXNr
RXZlbnRzKCk7Ci0KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FKQotICAgICAgICAg
ICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA4ZWMxNWU1ZWMwNzNkZmZiMWZi
MTYxMGVlODY0MDMyMWUwNDlhNDJhLi4xZGM3YTM5YjdkMzRkMDNkZTRiOGY4ZGY3NTBmODgzMjIz
ZWQzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCkBAIC05NSw3ICs5NSw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFu
c2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRy
CiAgICAgLCBtX29wZW5EQlJlcXVlc3Qob3BlbkRCUmVxdWVzdCkKICAgICAsIG1fbW9kZShtb2Rl
KQogICAgICwgbV9hY3RpdmUodHJ1ZSkKLSAgICAsIG1fc3RhdGUoVW51c2VkKQorICAgICwgbV9z
dGF0ZShVbmZpbmlzaGVkKQogICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKICAgICAs
IG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiB7CkBAIC0xMDQsOCArMTA0LDYgQEAgSURCVHJhbnNh
Y3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCVHIKICAgICBpZiAobW9kZSA9PSBWRVJTSU9OX0NIQU5HRSkgewogICAgICAg
ICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9hY3RpdmUgPSBm
YWxzZTsKLSAgICAgICAgLy8gSW1wbGljaXRseSB1c2VkIGJ5IHRoZSB2ZXJzaW9uIGNoYW5nZSBp
dHNlbGYuCi0gICAgICAgIG1fc3RhdGUgPSBVc2VkOwogICAgIH0KIAogICAgIC8vIFdlIHBhc3Mg
YSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgpAQCAt
MTk3LDExICsxOTUsMTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKGJvb2wgYWN0
aXZlKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdGF0ZSAhPSBGaW5pc2hlZCwgIkEgZmlu
aXNoZWQgdHJhbnNhY3Rpb24gdHJpZWQgdG8gc2V0QWN0aXZlKCVzKSIsIGFjdGl2ZSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOwogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGluZykKICAgICAgICAgcmV0
dXJuOwotICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOwor
ICAgIEFTU0VSVChtX3N0YXRlID09IFVuZmluaXNoZWQpOwogICAgIEFTU0VSVChhY3RpdmUgIT0g
bV9hY3RpdmUpOwogICAgIG1fYWN0aXZlID0gYWN0aXZlOwogCi0gICAgaWYgKCFhY3RpdmUgJiYg
bV9zdGF0ZSA9PSBVbnVzZWQpCisgICAgaWYgKCFhY3RpdmUgJiYgbV9yZXF1ZXN0TGlzdC5pc0Vt
cHR5KCkpCiAgICAgICAgIG1fYmFja2VuZC0+Y29tbWl0KCk7CiB9CiAKQEAgLTI2OSwxMCArMjY3
LDkgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycygpCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBB
U1NFUlQocmVxdWVzdCk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUg
PT0gVXNlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW5maW5pc2hlZCk7CiAgICAgQVNTRVJU
KG1fYWN0aXZlKTsKICAgICBtX3JlcXVlc3RMaXN0LmFkZChyZXF1ZXN0KTsKLSAgICBtX3N0YXRl
ID0gVXNlZDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3RlclJlcXVlc3QoSURC
UmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDg5OTM5YmY4NTk3NWIxY2I5ZjdmNTBiNTE5N2Y5ZjZh
YzMxYmZjOTUuLjJkNTU2OTQwNjBjZGU4MjE4MzQ3ZWY3MDY1YjlmMGMwMGU3NTUyOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApA
QCAtMTM3LDggKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCiAgICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFVu
dXNlZCwgLy8gTm8gcmVxdWVzdHMgaGF2ZSBiZWVuIG1hZGUuCi0gICAgICAgIFVzZWQsIC8vIEF0
IGxlYXN0IG9uZSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUuCisgICAgICAgIFVuZmluaXNoZWQsIC8v
IENyZWF0ZWQgb3Igc3RhcnRlZCwgcG9zc2libHkgYWN0aXZlLCBhbmQgbm90IHlldCBhYm9ydGlu
ZyBvciBjb21taXR0aW5nCiAgICAgICAgIEZpbmlzaGluZywgLy8gSW4gdGhlIHByb2Nlc3Mgb2Yg
YWJvcnRpbmcgb3IgY29tcGxldGluZy4KICAgICAgICAgRmluaXNoZWQsIC8vIE5vIG1vcmUgZXZl
bnRzIHdpbGwgZmlyZSBhbmQgbm8gbmV3IHJlcXVlc3RzIG1heSBiZSBmaWxlZC4KICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCBmMTY2NTE5NDliYWQzYzViMTUxYmViNGZm
NzVmMjVkMDZiNzFhMjY2Li5kYmY4MDYxNWEyYWZlYTgwMzAwNmE1NWYxY2I2YzZkYmMyOTMzMzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtNDgsNiArNDgsNyBAQCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKERPTVN0cmluZ0xp
c3QqIG9iamVjdFN0b3JlcwogICAgIDogbV9vYmplY3RTdG9yZU5hbWVzKG9iamVjdFN0b3JlcykK
ICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCisgICAgLCBtX2NvbW1p
dFBlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICwgbV90cmFu
c2FjdGlvbihkYXRhYmFzZS0+YmFja2luZ1N0b3JlKCktPmNyZWF0ZVRyYW5zYWN0aW9uKCkpCiAg
ICAgLCBtX3Rhc2tUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1Rp
bWVyRmlyZWQpCkBAIC0xMDAsNyArMTAxLDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpzY2hlZHVsZVRhc2soVGFza1R5cGUgdHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGUKICAg
ICAgICAgbV90YXNrUXVldWUuYXBwZW5kKHRhc2spOwogICAgIGVsc2UKICAgICAgICAgbV9wcmVl
bXB0aXZlVGFza1F1ZXVlLmFwcGVuZCh0YXNrKTsKLSAgICAKKwogICAgIGlmIChhYm9ydFRhc2sp
CiAgICAgICAgIG1fYWJvcnRUYXNrUXVldWUucHJlcGVuZChhYm9ydFRhc2spOwogCkBAIC0xOTIs
MTIgKzE5MywxNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRl
VGFza0V2ZW50cygpCiAgICAgQVNTRVJUKG1fcGVuZGluZ0V2ZW50cyk7CiAgICAgbV9wZW5kaW5n
RXZlbnRzLS07CiAKKyAgICAvLyBBIHNpbmdsZSB0YXNrIGhhcyBjb21wbGV0ZWQgYW5kIGVycm9y
L3N1Y2Nlc3MgZXZlbnRzIGZpcmVkLiBTY2hlZHVsZQorICAgIC8vIHRpbWVyIHRvIHByb2Nlc3Mg
YW5vdGhlci4KICAgICBpZiAoIW1fdGFza0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAg
bV90YXNrRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6cnVuKCkKIHsKKyAgICAvLyBUcmFuc2FjdGlvbkNvb3JkaW5hdG9yIGhh
cyBzdGFydGVkIHRoaXMgdHJhbnNhY3Rpb24uIFNjaGVkdWxlIGEgdGltZXIKKyAgICAvLyB0byBw
cm9jZXNzIHRoZSBmaXJzdCB0YXNrLgogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXJ0UGVuZGlu
ZyB8fCBtX3N0YXRlID09IFJ1bm5pbmcpOwogICAgIEFTU0VSVCghbV90YXNrVGltZXIuaXNBY3Rp
dmUoKSk7CiAKQEAgLTIxNiwxMiArMjIxLDE3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6c3RhcnQoKQogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQog
ewogICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0Iik7CisK
KyAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKKyAg
ICBtX2NvbW1pdFBlbmRpbmcgPSB0cnVlOworCisgICAgaWYgKG1fcGVuZGluZ0V2ZW50cyB8fCBt
X3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzIHx8ICFpc1Rhc2tRdWV1ZUVtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKwogICAgIC8vIFRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCBtYXkg
YmUgcmVsZWFzZWQgd2hpbGUgcGVyZm9ybWluZyB0aGUKICAgICAvLyBjb21taXQgc3RlcHMgYmVs
b3cuIFdlIHRoZXJlZm9yZSB0YWtlIGEgc2VsZiByZWZlcmVuY2UgdG8ga2VlcCBvdXJzZWx2ZXMK
ICAgICAvLyBhbGl2ZSB3aGlsZSBleGVjdXRpbmcgdGhpcyBtZXRob2QuCiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHNlbGYodGhpcyk7Ci0gICAgQVNTRVJUKG1fc3RhdGUg
PT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gUnVubmluZyk7Ci0gICAgQVNTRVJUKGlzVGFza1F1ZXVl
RW1wdHkoKSk7CiAKICAgICBib29sIHVudXNlZCA9IG1fc3RhdGUgPT0gVW51c2VkOwogICAgIG1f
c3RhdGUgPSBGaW5pc2hlZDsKQEAgLTI3OCwxNiArMjg4LDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJCiAgICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZl
bnRUaW1lckZpcmVkIik7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7CiAKLSAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50cyAmJiBpc1Rhc2tRdWV1ZUVtcHR5KCkpIHsKLSAgICAgICAgLy8g
VGhlIGxhc3QgdGFzayBldmVudCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGFzawotICAgICAgICAv
LyBxdWV1ZSBpcyBlbXB0eS4gQ29tbWl0IHRoZSB0cmFuc2FjdGlvbi4KKyAgICBpZiAoIW1fcGVu
ZGluZ0V2ZW50cyAmJiAhbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyAmJiBpc1Rhc2tRdWV1ZUVt
cHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fY29tbWl0UGVuZGluZyk7CiAgICAgICAgIGNvbW1p
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gV2UgYXJlIHN0aWxsIHdhaXRp
bmcgZm9yIG90aGVyIGV2ZW50cyB0byBjb21wbGV0ZS4gSG93ZXZlciwKLSAgICAvLyB0aGUgdGFz
ayBxdWV1ZSBpcyBub24tZW1wdHkgYW5kIHRoZSB0aW1lciBpcyBpbmFjdGl2ZS4KLSAgICAvLyBX
ZSBjYW4gdGhlcmZvcmUgc2NoZWR1bGUgdGhlIHRpbWVyIGFnYWluLgorICAgIC8vIFRoZSB0YXNr
IHF1ZXVlIGlzIG5vbi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlzIGluYWN0aXZlLCBzbyBzY2hlZHVs
ZQorICAgIC8vIHRoZSB0aW1lciB0byBwcm9jZXNzIGFub3RoZXIgZXZlbnQuCiAgICAgaWYgKCFp
c1Rhc2tRdWV1ZUVtcHR5KCkgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
dGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAppbmRl
eCAzNGE5NzU3MGYwMGZiN2EwODRiOGRkMzg5MzQ3YTI1NGEyNTM0ODYyLi4yMDYxYWUzMTE5MWE2
NTk5MDgzZTYwMzgzOGVmMWUwOTM4NzIwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBA
IC03NSw4ICs3NSw4IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51
c2VkLCAvLyBDcmVhdGVkLCBidXQgbm8gdGFza3MgeWV0LgotICAgICAgICBTdGFydFBlbmRpbmcs
IC8vIEVucXVldWVkIHRhc2tzLCBidXQgU1FMaXRlIHRyYW5zYWN0aW9uIG5vdCB5ZXQgc3RhcnRl
ZC4KLSAgICAgICAgUnVubmluZywgLy8gU1FMaXRlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgYnV0IG5v
dCB5ZXQgZmluaXNoZWQuCisgICAgICAgIFN0YXJ0UGVuZGluZywgLy8gRW5xdWV1ZWQgdGFza3Ms
IGJ1dCBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIG5vdCB5ZXQgc3RhcnRlZC4KKyAgICAgICAg
UnVubmluZywgLy8gQmFja2luZyBzdG9yZSB0cmFuc2FjdGlvbiBzdGFydGVkIGJ1dCBub3QgeWV0
IGZpbmlzaGVkLgogICAgICAgICBGaW5pc2hlZCwgLy8gRWl0aGVyIGFib3J0ZWQgb3IgY29tbWl0
dGVkLgogICAgIH07CiAKQEAgLTkzLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOworICAgIGJvb2wgbV9jb21t
aXRQZW5kaW5nOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0YWJhc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173928</attachid>
            <date>2012-11-13 10:50:40 -0800</date>
            <delta_ts>2012-11-13 12:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100903-20121113104840.patch</filename>
            <type>text/plain</type>
            <size>9342</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAzMTc1OTVkYTg2ZDAy
ODExYWEzZjY3Y2M0OGM1OWYzYjk5ZWQxYi4uMGNlMjAwNTdhOWFhOTdlZmVlNDQ4MWFmZjIyNTM4
ZWU3M2MwNzE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNb3Zl
IGNvbnRyb2wgb2YgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICJXaGVuIGEgdHJhbnNhY3Rp
b24gY2FuIG5vIGxvbmdlciBiZWNvbWUgYWN0aXZlLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBh
dHRlbXB0IHRvCisgICAgICAgIGNvbW1pdCBpdCIgLSB0aGF0IGlzLCBhbGwgcmVxdWVzdHMgaGF2
ZSBkaXNwYXRjaGVkIHN1Y2Nlc3MvZXJyb3IgZXZlbnRzIGFuZCBubyBmdXJ0aGVyCisgICAgICAg
IHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBkb25lIGJ5IHRo
ZSBiYWNrIGVuZCB3YWl0aW5nIGZvciBldmVudHMKKyAgICAgICAgZnJvbSB0aGUgZnJvbnQgZW5k
LCBidXQgdGhlIGZyb250IGVuZCBjYW4gbW9yZSBlZmZpY2llbnRseSBtYWtlIHRoZSBkZWNpc2lv
bi4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZGV0ZWN0YWJsZSBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLSouaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpydW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCk6CisKIDIwMTItMTEt
MTIgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAg
W1F0XSBSRUdSRVNTSU9OKDEzNDE0Mik6IG92ZXJzY2FsZWQgdGlsZXMgaW4gcGl4ZWwgdGVzdCBy
ZXN1bHRzIGFuZCBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCBjZThhYWEzNzJkM2MwMWJmYjE5MGNlNzJmODA1YjMy
OTllODUwOGM0Li5lNzUzYTI4NmNjODFjZmVmNTljNDE4YjIxNGIxNTlmYzFkZWZhM2IyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAt
NTM4LDYgKzUzOCwxMCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0cnVlKTsK
IAogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CisKKyAgICBpZiAobV90cmFuc2FjdGlvbiAmJiBt
X3JlYWR5U3RhdGUgPT0gRE9ORSkKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJl
cXVlc3QodGhpcyk7CisKICAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAgICAgIG1f
dHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CiAKQEAgLTU1Niw5ICs1NjAsNiBAQCBib29s
IElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKICAg
ICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkKICAg
ICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS0+ZGlkQ29tcGxldGVUYXNrRXZlbnRz
KCk7Ci0KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FKQotICAgICAgICAgICAgbV90
cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGRvbnRQcmV2ZW50RGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA1MzFmMmYwOTE1OGEyNzU2OTY1ZTUxM2Ez
NmI2YTEyY2RiNjZmY2Y4Li42NGJjNGE1ZjUwOGUzNTI2MjhjMzNmZTMzYmZhZGFkMjJmYmNlN2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC05Niw3ICs5Niw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyCiAgICAg
LCBtX29wZW5EQlJlcXVlc3Qob3BlbkRCUmVxdWVzdCkKICAgICAsIG1fbW9kZShtb2RlKQogICAg
ICwgbV9hY3RpdmUodHJ1ZSkKLSAgICAsIG1fc3RhdGUoVW51c2VkKQorICAgICwgbV9zdGF0ZShV
bmZpbmlzaGVkKQogICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKICAgICAsIG1fY29u
dGV4dFN0b3BwZWQoZmFsc2UpCiB7CkBAIC0xMDUsOCArMTA1LDYgQEAgSURCVHJhbnNhY3Rpb246
OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8SURCVHIKICAgICBpZiAobW9kZSA9PSBWRVJTSU9OX0NIQU5HRSkgewogICAgICAgICAvLyBO
b3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KICAgICAgICAgbV9hY3RpdmUgPSBmYWxzZTsK
LSAgICAgICAgLy8gSW1wbGljaXRseSB1c2VkIGJ5IHRoZSB2ZXJzaW9uIGNoYW5nZSBpdHNlbGYu
Ci0gICAgICAgIG1fc3RhdGUgPSBVc2VkOwogICAgIH0KIAogICAgIC8vIFdlIHBhc3MgYSByZWZl
cmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgpAQCAtMjAxLDEx
ICsxOTksMTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdGF0ZSAhPSBGaW5pc2hlZCwgIkEgZmluaXNoZWQg
dHJhbnNhY3Rpb24gdHJpZWQgdG8gc2V0QWN0aXZlKCVzKSIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOwogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGluZykKICAgICAgICAgcmV0dXJuOwot
ICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOworICAgIEFT
U0VSVChtX3N0YXRlID09IFVuZmluaXNoZWQpOwogICAgIEFTU0VSVChhY3RpdmUgIT0gbV9hY3Rp
dmUpOwogICAgIG1fYWN0aXZlID0gYWN0aXZlOwogCi0gICAgaWYgKCFhY3RpdmUgJiYgbV9zdGF0
ZSA9PSBVbnVzZWQpCisgICAgaWYgKCFhY3RpdmUgJiYgbV9yZXF1ZXN0TGlzdC5pc0VtcHR5KCkp
CiAgICAgICAgIG1fYmFja2VuZC0+Y29tbWl0KCk7CiB9CiAKQEAgLTI3MywxMCArMjcxLDkgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycygpCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpyZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBBU1NFUlQo
cmVxdWVzdCk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gVXNl
ZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW5maW5pc2hlZCk7CiAgICAgQVNTRVJUKG1fYWN0
aXZlKTsKICAgICBtX3JlcXVlc3RMaXN0LmFkZChyZXF1ZXN0KTsKLSAgICBtX3N0YXRlID0gVXNl
ZDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3RlclJlcXVlc3QoSURCUmVxdWVz
dCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oCmluZGV4IDc4NmRkZmYxOWQ3ZmFkNTI5YmRiNGFkMDBlZWI1YjYzODc5Nzc2
YjAuLmRlMzc5MDIxOTJkNDk4YWE3YWM4YTQzNDZkZTY2ODg2ODM0NWNiMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTM3
LDggKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpOwogCiAgICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFVudXNlZCwg
Ly8gTm8gcmVxdWVzdHMgaGF2ZSBiZWVuIG1hZGUuCi0gICAgICAgIFVzZWQsIC8vIEF0IGxlYXN0
IG9uZSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUuCisgICAgICAgIFVuZmluaXNoZWQsIC8vIENyZWF0
ZWQgb3Igc3RhcnRlZCwgcG9zc2libHkgYWN0aXZlLCBhbmQgbm90IHlldCBhYm9ydGluZyBvciBj
b21taXR0aW5nCiAgICAgICAgIEZpbmlzaGluZywgLy8gSW4gdGhlIHByb2Nlc3Mgb2YgYWJvcnRp
bmcgb3IgY29tcGxldGluZy4KICAgICAgICAgRmluaXNoZWQsIC8vIE5vIG1vcmUgZXZlbnRzIHdp
bGwgZmlyZSBhbmQgbm8gbmV3IHJlcXVlc3RzIG1heSBiZSBmaWxlZC4KICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCAzMjQwNWM2ZWM3MjA5MWFiZWFjMmI3YzYyNDQ0ZTEz
YzBmYTliZGY1Li43MTEwOTJmMTAzM2YxODVmZDU3ZGM0NWVmYzlkNDgzODIzODEyODk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtNDgsNiArNDgsNyBAQCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZQogICAgIDogbV9vYmplY3RTdG9yZUlkcyhvYmplY3RTdG9yZUlkcykKICAgICAs
IG1fbW9kZShtb2RlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCisgICAgLCBtX2NvbW1pdFBlbmRp
bmcoZmFsc2UpCiAgICAgLCBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICwgbV90cmFuc2FjdGlv
bihkYXRhYmFzZS0+YmFja2luZ1N0b3JlKCkuZ2V0KCkpCiAgICAgLCBtX3Rhc2tUaW1lcih0aGlz
LCAmSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQpCkBAIC0xNzcsMTIg
KzE3OCwxNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFz
a0V2ZW50cygpCiAgICAgQVNTRVJUKG1fcGVuZGluZ0V2ZW50cyk7CiAgICAgbV9wZW5kaW5nRXZl
bnRzLS07CiAKKyAgICAvLyBBIHNpbmdsZSB0YXNrIGhhcyBjb21wbGV0ZWQgYW5kIGVycm9yL3N1
Y2Nlc3MgZXZlbnRzIGZpcmVkLiBTY2hlZHVsZQorICAgIC8vIHRpbWVyIHRvIHByb2Nlc3MgYW5v
dGhlci4KICAgICBpZiAoIW1fdGFza0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90
YXNrRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6cnVuKCkKIHsKKyAgICAvLyBUcmFuc2FjdGlvbkNvb3JkaW5hdG9yIGhhcyBz
dGFydGVkIHRoaXMgdHJhbnNhY3Rpb24uIFNjaGVkdWxlIGEgdGltZXIKKyAgICAvLyB0byBwcm9j
ZXNzIHRoZSBmaXJzdCB0YXNrLgogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXJ0UGVuZGluZyB8
fCBtX3N0YXRlID09IFJ1bm5pbmcpOwogICAgIEFTU0VSVCghbV90YXNrVGltZXIuaXNBY3RpdmUo
KSk7CiAKQEAgLTIwMSwxMiArMjA2LDE3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6c3RhcnQoKQogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogewog
ICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0Iik7CisKKyAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKKyAgICBt
X2NvbW1pdFBlbmRpbmcgPSB0cnVlOworCisgICAgaWYgKG1fcGVuZGluZ0V2ZW50cyB8fCBtX3Bl
bmRpbmdQcmVlbXB0aXZlRXZlbnRzIHx8ICFpc1Rhc2tRdWV1ZUVtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIC8vIFRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCBtYXkgYmUg
cmVsZWFzZWQgd2hpbGUgcGVyZm9ybWluZyB0aGUKICAgICAvLyBjb21taXQgc3RlcHMgYmVsb3cu
IFdlIHRoZXJlZm9yZSB0YWtlIGEgc2VsZiByZWZlcmVuY2UgdG8ga2VlcCBvdXJzZWx2ZXMKICAg
ICAvLyBhbGl2ZSB3aGlsZSBleGVjdXRpbmcgdGhpcyBtZXRob2QuCiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IHNlbGYodGhpcyk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0g
VW51c2VkIHx8IG1fc3RhdGUgPT0gUnVubmluZyk7Ci0gICAgQVNTRVJUKGlzVGFza1F1ZXVlRW1w
dHkoKSk7CiAKICAgICBib29sIHVudXNlZCA9IG1fc3RhdGUgPT0gVW51c2VkOwogICAgIG1fc3Rh
dGUgPSBGaW5pc2hlZDsKQEAgLTI2MywxNiArMjczLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJCiAgICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRU
aW1lckZpcmVkIik7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7CiAKLSAgICBpZiAo
IW1fcGVuZGluZ0V2ZW50cyAmJiBpc1Rhc2tRdWV1ZUVtcHR5KCkpIHsKLSAgICAgICAgLy8gVGhl
IGxhc3QgdGFzayBldmVudCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGFzawotICAgICAgICAvLyBx
dWV1ZSBpcyBlbXB0eS4gQ29tbWl0IHRoZSB0cmFuc2FjdGlvbi4KKyAgICBpZiAoIW1fcGVuZGlu
Z0V2ZW50cyAmJiAhbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyAmJiBpc1Rhc2tRdWV1ZUVtcHR5
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fY29tbWl0UGVuZGluZyk7CiAgICAgICAgIGNvbW1pdCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gV2UgYXJlIHN0aWxsIHdhaXRpbmcg
Zm9yIG90aGVyIGV2ZW50cyB0byBjb21wbGV0ZS4gSG93ZXZlciwKLSAgICAvLyB0aGUgdGFzayBx
dWV1ZSBpcyBub24tZW1wdHkgYW5kIHRoZSB0aW1lciBpcyBpbmFjdGl2ZS4KLSAgICAvLyBXZSBj
YW4gdGhlcmZvcmUgc2NoZWR1bGUgdGhlIHRpbWVyIGFnYWluLgorICAgIC8vIFRoZSB0YXNrIHF1
ZXVlIGlzIG5vbi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlzIGluYWN0aXZlLCBzbyBzY2hlZHVsZQor
ICAgIC8vIHRoZSB0aW1lciB0byBwcm9jZXNzIGFub3RoZXIgZXZlbnQuCiAgICAgaWYgKCFpc1Rh
c2tRdWV1ZUVtcHR5KCkgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGFz
a1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAppbmRleCAy
NzdmMjUzZGUxNDg2M2MyMjU2MGRmYjgyZjU4OTZhNGYyMWRjNmY1Li4wYjJhNjNmMzNkNjdjZGM1
YmExZDc5YzhlOTcxNjE4OWJjZjc4YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBAIC03
NCw4ICs3NCw4IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51c2Vk
LCAvLyBDcmVhdGVkLCBidXQgbm8gdGFza3MgeWV0LgotICAgICAgICBTdGFydFBlbmRpbmcsIC8v
IEVucXVldWVkIHRhc2tzLCBidXQgU1FMaXRlIHRyYW5zYWN0aW9uIG5vdCB5ZXQgc3RhcnRlZC4K
LSAgICAgICAgUnVubmluZywgLy8gU1FMaXRlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgYnV0IG5vdCB5
ZXQgZmluaXNoZWQuCisgICAgICAgIFN0YXJ0UGVuZGluZywgLy8gRW5xdWV1ZWQgdGFza3MsIGJ1
dCBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIG5vdCB5ZXQgc3RhcnRlZC4KKyAgICAgICAgUnVu
bmluZywgLy8gQmFja2luZyBzdG9yZSB0cmFuc2FjdGlvbiBzdGFydGVkIGJ1dCBub3QgeWV0IGZp
bmlzaGVkLgogICAgICAgICBGaW5pc2hlZCwgLy8gRWl0aGVyIGFib3J0ZWQgb3IgY29tbWl0dGVk
LgogICAgIH07CiAKQEAgLTkyLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOworICAgIGJvb2wgbV9jb21taXRQ
ZW5kaW5nOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7
CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0YWJhc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173955</attachid>
            <date>2012-11-13 12:20:12 -0800</date>
            <delta_ts>2012-11-19 12:58:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100903-20121113121812.patch</filename>
            <type>text/plain</type>
            <size>10104</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM1ZWIxOWM3YTRhMDMy
YzExNjJmYjQ4MjgwYjNmNWZhMTI5M2Q4Yy4uNzFhMDI5ZDhhNzBjOWI1Y2U3M2E0ZWE3N2M1MWRi
OWM3NmM1MDA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNb3Zl
IGNvbnRyb2wgb2YgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICJXaGVuIGEgdHJhbnNhY3Rp
b24gY2FuIG5vIGxvbmdlciBiZWNvbWUgYWN0aXZlLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBh
dHRlbXB0IHRvCisgICAgICAgIGNvbW1pdCBpdCIgLSB0aGF0IGlzLCBhbGwgcmVxdWVzdHMgaGF2
ZSBkaXNwYXRjaGVkIHN1Y2Nlc3MvZXJyb3IgZXZlbnRzIGFuZCBubyBmdXJ0aGVyCisgICAgICAg
IHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBkb25lIGJ5IHRo
ZSBiYWNrIGVuZCB3YWl0aW5nIGZvciBldmVudHMKKyAgICAgICAgZnJvbSB0aGUgZnJvbnQgZW5k
LCBidXQgdGhlIGZyb250IGVuZCBjYW4gbW9yZSBlZmZpY2llbnRseSBtYWtlIHRoZSBkZWNpc2lv
bi4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZGV0ZWN0YWJsZSBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLSouaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6Omhhc1BlbmRpbmdUYXNrcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnJ1bik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRUaW1lckZpcmVk
KToKKwogMjAxMi0xMS0xMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQzNjcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGNlOGFhYTM3
MmQzYzAxYmZiMTkwY2U3MmY4MDViMzI5OWU4NTA4YzQuLmU3NTNhMjg2Y2M4MWNmZWY1OWM0MThi
MjE0YjE1OWZjMWRlZmEzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC01MzgsNiArNTM4LDEwIEBAIGJvb2wgSURCUmVxdWVzdDo6
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgbV90cmFuc2Fj
dGlvbi0+c2V0QWN0aXZlKHRydWUpOwogCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJ
REJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKworICAg
IGlmIChtX3RyYW5zYWN0aW9uICYmIG1fcmVhZHlTdGF0ZSA9PSBET05FKQorICAgICAgICBtX3Ry
YW5zYWN0aW9uLT51bnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKKwogICAgIGlmIChzZXRUcmFuc2Fj
dGlvbkFjdGl2ZSkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0aXZlKGZhbHNlKTsKIApA
QCAtNTU2LDkgKzU2MCw2IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKIAogICAgICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5h
bWVzKCkuYmxvY2tlZEV2ZW50KQogICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgp
LT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKLQotICAgICAgICBpZiAobV9yZWFkeVN0YXRlID09
IERPTkUpCi0gICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT51bnJlZ2lzdGVyUmVxdWVzdCh0aGlz
KTsKICAgICB9CiAKICAgICByZXR1cm4gZG9udFByZXZlbnREZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUz
MWYyZjA5MTU4YTI3NTY5NjVlNTEzYTM2YjZhMTJjZGI2NmZjZjguLjY0YmM0YTVmNTA4ZTM1MjYy
OGMzM2ZlMzNiZmFkYWQyMmZiY2U3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSURCVHJh
bnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCVHIKICAgICAsIG1fb3BlbkRCUmVxdWVzdChvcGVuREJSZXF1ZXN0KQog
ICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2FjdGl2ZSh0cnVlKQotICAgICwgbV9zdGF0ZShV
bnVzZWQpCisgICAgLCBtX3N0YXRlKFVuZmluaXNoZWQpCiAgICAgLCBtX2hhc1BlbmRpbmdBY3Rp
dml0eSh0cnVlKQogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKIHsKQEAgLTEwNSw4ICsx
MDUsNiBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgogICAgIGlmIChtb2RlID09IFZFUlNJT05f
Q0hBTkdFKSB7CiAgICAgICAgIC8vIE5vdCBhY3RpdmUgdW50aWwgdGhlIGNhbGxiYWNrLgogICAg
ICAgICBtX2FjdGl2ZSA9IGZhbHNlOwotICAgICAgICAvLyBJbXBsaWNpdGx5IHVzZWQgYnkgdGhl
IHZlcnNpb24gY2hhbmdlIGl0c2VsZi4KLSAgICAgICAgbV9zdGF0ZSA9IFVzZWQ7CiAgICAgfQog
CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2Fu
IGJlIGFkb3B0ZWQuCkBAIC0yMDEsMTEgKzE5OSwxMSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N0YXRlICE9
IEZpbmlzaGVkLCAiQSBmaW5pc2hlZCB0cmFuc2FjdGlvbiB0cmllZCB0byBzZXRBY3RpdmUoJXMp
IiwgYWN0aXZlID8gInRydWUiIDogImZhbHNlIik7CiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNo
aW5nKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1f
c3RhdGUgPT0gVXNlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW5maW5pc2hlZCk7CiAgICAg
QVNTRVJUKGFjdGl2ZSAhPSBtX2FjdGl2ZSk7CiAgICAgbV9hY3RpdmUgPSBhY3RpdmU7CiAKLSAg
ICBpZiAoIWFjdGl2ZSAmJiBtX3N0YXRlID09IFVudXNlZCkKKyAgICBpZiAoIWFjdGl2ZSAmJiBt
X3JlcXVlc3RMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgbV9iYWNrZW5kLT5jb21taXQoKTsKIH0K
IApAQCAtMjczLDEwICsyNzEsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbG9zZU9wZW5DdXJz
b3JzKCkKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiBy
ZXF1ZXN0KQogewogICAgIEFTU0VSVChyZXF1ZXN0KTsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBV
bnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2VkKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbmZpbmlz
aGVkKTsKICAgICBBU1NFUlQobV9hY3RpdmUpOwogICAgIG1fcmVxdWVzdExpc3QuYWRkKHJlcXVl
c3QpOwotICAgIG1fc3RhdGUgPSBVc2VkOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjp1bnJl
Z2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNzg2ZGRmZjE5ZDdmYWQ1
MjliZGI0YWQwMGVlYjViNjM4Nzk3NzZiMC4uZGUzNzkwMjE5MmQ0OThhYTdhYzhhNDM0NmRlNjY4
ODY4MzQ1Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5oCkBAIC0xMzcsOCArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICBlbnVtIFN0
YXRlIHsKLSAgICAgICAgVW51c2VkLCAvLyBObyByZXF1ZXN0cyBoYXZlIGJlZW4gbWFkZS4KLSAg
ICAgICAgVXNlZCwgLy8gQXQgbGVhc3Qgb25lIHJlcXVlc3QgaGFzIGJlZW4gbWFkZS4KKyAgICAg
ICAgVW5maW5pc2hlZCwgLy8gQ3JlYXRlZCBvciBzdGFydGVkLCBwb3NzaWJseSBhY3RpdmUsIGFu
ZCBub3QgeWV0IGFib3J0aW5nIG9yIGNvbW1pdHRpbmcKICAgICAgICAgRmluaXNoaW5nLCAvLyBJ
biB0aGUgcHJvY2VzcyBvZiBhYm9ydGluZyBvciBjb21wbGV0aW5nLgogICAgICAgICBGaW5pc2hl
ZCwgLy8gTm8gbW9yZSBldmVudHMgd2lsbCBmaXJlIGFuZCBubyBuZXcgcmVxdWVzdHMgbWF5IGJl
IGZpbGVkLgogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDMyNDA1YzZl
YzcyMDkxYWJlYWMyYjdjNjI0NDRlMTNjMGZhOWJkZjUuLjQ1ZjdiNjNmOTlmYjBhMThkZDU0OGE4
MTgyNzBhYjdjZjVjMzU2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC00OCw2
ICs0OCw3IEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplCiAgICAgOiBtX29iamVjdFN0b3JlSWRz
KG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX3N0YXRlKFVudXNl
ZCkKKyAgICAsIG1fY29tbWl0UGVuZGluZyhmYWxzZSkKICAgICAsIG1fZGF0YWJhc2UoZGF0YWJh
c2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKGRhdGFiYXNlLT5iYWNraW5nU3RvcmUoKS5nZXQoKSkK
ICAgICAsIG1fdGFza1RpbWVyKHRoaXMsICZJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNr
VGltZXJGaXJlZCkKQEAgLTE1Miw2ICsxNTMsMTEgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjppc1Rhc2tRdWV1ZUVtcHR5KCkgY29uc3QKICAgICByZXR1cm4gbV9wcmVlbXB0aXZl
VGFza1F1ZXVlLmlzRW1wdHkoKSAmJiBtX3Rhc2tRdWV1ZS5pc0VtcHR5KCk7CiB9CiAKK2Jvb2wg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6aGFzUGVuZGluZ1Rhc2tzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wZW5kaW5nRXZlbnRzIHx8IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMgfHwg
IWlzVGFza1F1ZXVlRW1wdHkoKTsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpyZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqIGN1cnNvcikKIHsKICAg
ICBtX29wZW5DdXJzb3JzLmFkZChjdXJzb3IpOwpAQCAtMTc3LDEyICsxODMsMTYgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRDb21wbGV0ZVRhc2tFdmVudHMoKQogICAgIEFT
U0VSVChtX3BlbmRpbmdFdmVudHMpOwogICAgIG1fcGVuZGluZ0V2ZW50cy0tOwogCisgICAgLy8g
QSBzaW5nbGUgdGFzayBoYXMgY29tcGxldGVkIGFuZCBlcnJvci9zdWNjZXNzIGV2ZW50cyBmaXJl
ZC4gU2NoZWR1bGUKKyAgICAvLyB0aW1lciB0byBwcm9jZXNzIGFub3RoZXIuCiAgICAgaWYgKCFt
X3Rhc2tFdmVudFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGFza0V2ZW50VGltZXIuc3Rh
cnRPbmVTaG90KDApOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnJ1bigp
CiB7CisgICAgLy8gVHJhbnNhY3Rpb25Db29yZGluYXRvciBoYXMgc3RhcnRlZCB0aGlzIHRyYW5z
YWN0aW9uLiBTY2hlZHVsZSBhIHRpbWVyCisgICAgLy8gdG8gcHJvY2VzcyB0aGUgZmlyc3QgdGFz
ay4KICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGFydFBlbmRpbmcgfHwgbV9zdGF0ZSA9PSBSdW5u
aW5nKTsKICAgICBBU1NFUlQoIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpOwogCkBAIC0yMDEsMTIg
KzIxMSwxOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnN0YXJ0KCkKIHZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KCkKIHsKICAgICBJREJfVFJBQ0UoIklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCIpOworCisgICAgQVNTRVJUKG1fc3RhdGUg
PT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gUnVubmluZyk7CisgICAgbV9jb21taXRQZW5kaW5nID0g
dHJ1ZTsKKworICAgIC8vIEZyb250LWVuZCBoYXMgcmVxdWVzdGVkIGEgY29tbWl0LCBidXQgdGhl
cmUgbWF5IGJlIHRhc2tzIGxpa2UgY3JlYXRlSW5kZXggd2hpY2gKKyAgICAvLyBhcmUgY29uc2lk
ZXJlZCBzeW5jaHJvbm91cyBieSB0aGUgZnJvbnQtZW5kIGJ1dCBhcmUgcHJvY2Vzc2VkIGFzeW5j
aHJvbm91c2x5LgorICAgIGlmIChoYXNQZW5kaW5nVGFza3MoKSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0IG1heSBiZSByZWxlYXNl
ZCB3aGlsZSBwZXJmb3JtaW5nIHRoZQogICAgIC8vIGNvbW1pdCBzdGVwcyBiZWxvdy4gV2UgdGhl
cmVmb3JlIHRha2UgYSBzZWxmIHJlZmVyZW5jZSB0byBrZWVwIG91cnNlbHZlcwogICAgIC8vIGFs
aXZlIHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gc2VsZih0aGlzKTsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQg
fHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICBBU1NFUlQoaXNUYXNrUXVldWVFbXB0eSgpKTsK
IAogICAgIGJvb2wgdW51c2VkID0gbV9zdGF0ZSA9PSBVbnVzZWQ7CiAgICAgbV9zdGF0ZSA9IEZp
bmlzaGVkOwpAQCAtMjYzLDE2ICsyODAsMTQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjp0YXNrRXZlbnRUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEkKICAg
ICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmly
ZWQiKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKIAotICAgIGlmICghbV9wZW5k
aW5nRXZlbnRzICYmIGlzVGFza1F1ZXVlRW1wdHkoKSkgewotICAgICAgICAvLyBUaGUgbGFzdCB0
YXNrIGV2ZW50IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0YXNrCi0gICAgICAgIC8vIHF1ZXVlIGlz
IGVtcHR5LiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLgorICAgIGlmICghaGFzUGVuZGluZ1Rhc2tz
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fY29tbWl0UGVuZGluZyk7CiAgICAgICAgIGNvbW1pdCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gV2UgYXJlIHN0aWxsIHdhaXRpbmcg
Zm9yIG90aGVyIGV2ZW50cyB0byBjb21wbGV0ZS4gSG93ZXZlciwKLSAgICAvLyB0aGUgdGFzayBx
dWV1ZSBpcyBub24tZW1wdHkgYW5kIHRoZSB0aW1lciBpcyBpbmFjdGl2ZS4KLSAgICAvLyBXZSBj
YW4gdGhlcmZvcmUgc2NoZWR1bGUgdGhlIHRpbWVyIGFnYWluLgorICAgIC8vIFRoZSB0YXNrIHF1
ZXVlIGlzIG5vbi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlzIGluYWN0aXZlLCBzbyBzY2hlZHVsZQor
ICAgIC8vIHRoZSB0aW1lciB0byBwcm9jZXNzIGFub3RoZXIgZXZlbnQuCiAgICAgaWYgKCFpc1Rh
c2tRdWV1ZUVtcHR5KCkgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGFz
a1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAppbmRleCAy
NzdmMjUzZGUxNDg2M2MyMjU2MGRmYjgyZjU4OTZhNGYyMWRjNmY1Li43NDM2YTQ4ZmZiNmY0MjZm
ZDNkOTNiOWEwMGQ4MzM4MjRkYTNhMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBAIC03
NCw4ICs3NCw4IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgVW51c2Vk
LCAvLyBDcmVhdGVkLCBidXQgbm8gdGFza3MgeWV0LgotICAgICAgICBTdGFydFBlbmRpbmcsIC8v
IEVucXVldWVkIHRhc2tzLCBidXQgU1FMaXRlIHRyYW5zYWN0aW9uIG5vdCB5ZXQgc3RhcnRlZC4K
LSAgICAgICAgUnVubmluZywgLy8gU1FMaXRlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgYnV0IG5vdCB5
ZXQgZmluaXNoZWQuCisgICAgICAgIFN0YXJ0UGVuZGluZywgLy8gRW5xdWV1ZWQgdGFza3MsIGJ1
dCBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIG5vdCB5ZXQgc3RhcnRlZC4KKyAgICAgICAgUnVu
bmluZywgLy8gQmFja2luZyBzdG9yZSB0cmFuc2FjdGlvbiBzdGFydGVkIGJ1dCBub3QgeWV0IGZp
bmlzaGVkLgogICAgICAgICBGaW5pc2hlZCwgLy8gRWl0aGVyIGFib3J0ZWQgb3IgY29tbWl0dGVk
LgogICAgIH07CiAKQEAgLTgzLDYgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbW1pdCgp
OwogCiAgICAgYm9vbCBpc1Rhc2tRdWV1ZUVtcHR5KCkgY29uc3Q7CisgICAgYm9vbCBoYXNQZW5k
aW5nVGFza3MoKSBjb25zdDsKIAogICAgIHZvaWQgdGFza1RpbWVyRmlyZWQoVGltZXI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4qKTsKICAgICB2b2lkIHRhc2tFdmVudFRpbWVyRmlyZWQoVGlt
ZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKTsKQEAgLTkyLDYgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRl
OworICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcz4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+
IG1fZGF0YWJhc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175029</attachid>
            <date>2012-11-19 12:58:31 -0800</date>
            <delta_ts>2012-11-20 15:47:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100903-20121119125621.patch</filename>
            <type>text/plain</type>
            <size>11572</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRhYzg2NmMwOGYyZGJi
MmQ2ODliZTJhZTE1Y2JiMGU1M2JmZTBiOC4uZjZhZDE5NTg5MDA4ZTAyZGZlODBjN2VhZDZhOTdk
YTdjYWI4OTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNb3Zl
IGNvbnRyb2wgb2YgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICJXaGVuIGEgdHJhbnNhY3Rp
b24gY2FuIG5vIGxvbmdlciBiZWNvbWUgYWN0aXZlLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBh
dHRlbXB0IHRvCisgICAgICAgIGNvbW1pdCBpdCIgLSB0aGF0IGlzLCBhbGwgcmVxdWVzdHMgaGF2
ZSBkaXNwYXRjaGVkIHN1Y2Nlc3MvZXJyb3IgZXZlbnRzIGFuZCBubyBmdXJ0aGVyCisgICAgICAg
IHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBkb25lIGJ5IHRo
ZSBiYWNrIGVuZCB3YWl0aW5nIGZvciBldmVudHMKKyAgICAgICAgZnJvbSB0aGUgZnJvbnQgZW5k
LCBidXQgdGhlIGZyb250IGVuZCBjYW4gbW9yZSBlZmZpY2llbnRseSBtYWtlIHRoZSBkZWNpc2lv
bi4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZGV0ZWN0YWJsZSBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLSouaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6Omhhc1BlbmRpbmdUYXNrcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnJ1bik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRUaW1lckZpcmVk
KToKKwogMjAxMi0xMS0xNyAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBSZXN1bWVkIGFuaW1hdGlvbnMgbGVhdmUg
YW4gb2Jzb2xhdGUgR3JhcGhpY3NMYXllckFuaW1hdGlvbiBiZWhpbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggZjczOTFhYmY2Njgy
N2Y2NWMyNTlmOWM4MTA4ZGQ2MWY1ZjljOWVlYi4uZTRkMTY3ZmZhZDBhM2IyMTUyMGE4MTA1NDQ2
OGU0OTJiZDk1ZDI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKQEAgLTUwMCw2ICs1MDAsMTEgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICBtX3RyYW5zYWN0aW9u
LT5zZXRBY3RpdmUodHJ1ZSk7CiAKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOworCisgICAgaWYg
KG1fdHJhbnNhY3Rpb24gJiYgbV9yZWFkeVN0YXRlID09IERPTkUpCisgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOworCisgICAgLy8gSWYgdGhpcyB3YXMgdGhl
IGxhc3QgcmVxdWVzdCBpbiB0aGUgdHJhbnNhY3Rpb24ncyBsaXN0LCBpdCBtYXkgY29tbWl0IGhl
cmUuCiAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQogICAgICAgICBtX3RyYW5zYWN0aW9u
LT5zZXRBY3RpdmUoZmFsc2UpOwogCkBAIC01MTgsOSArNTIzLDYgQEAgYm9vbCBJREJSZXF1ZXN0
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgICAgIGlmIChl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpCiAgICAgICAgICAgICBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCktPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwotCi0gICAg
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRE9ORSkKLSAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24t
PnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwogICAgIH0KIAogICAgIHJldHVybiBkb250UHJldmVu
dERlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKaW5kZXggODRjMmE1MmYwY2NiZTRiYTUxNDk3MzU2NDZkMmE2ODIxMTZm
ODVhNi4uOGRlZTJlYWQyNmI2NzdmNWVlODhhZjA5OGY0MzkwZjIyY2NmYTBhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApA
QCAtOTUsOCArOTUsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgogICAgICwgbV9vYmplY3RT
dG9yZU5hbWVzKG9iamVjdFN0b3JlTmFtZXMpCiAgICAgLCBtX29wZW5EQlJlcXVlc3Qob3BlbkRC
UmVxdWVzdCkKICAgICAsIG1fbW9kZShtb2RlKQotICAgICwgbV9hY3RpdmUodHJ1ZSkKLSAgICAs
IG1fc3RhdGUoVW51c2VkKQorICAgICwgbV9zdGF0ZShBY3RpdmUpCiAgICAgLCBtX2hhc1BlbmRp
bmdBY3Rpdml0eSh0cnVlKQogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKIHsKQEAgLTEw
NCwxNCArMTAzLDEyIEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyCiAKICAgICBpZiAobW9kZSA9
PSBWRVJTSU9OX0NIQU5HRSkgewogICAgICAgICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxs
YmFjay4KLSAgICAgICAgbV9hY3RpdmUgPSBmYWxzZTsKLSAgICAgICAgLy8gSW1wbGljaXRseSB1
c2VkIGJ5IHRoZSB2ZXJzaW9uIGNoYW5nZSBpdHNlbGYuCi0gICAgICAgIG1fc3RhdGUgPSBVc2Vk
OworICAgICAgICBtX3N0YXRlID0gSW5hY3RpdmU7CiAgICAgfQogCiAgICAgLy8gV2UgcGFzcyBh
IHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAg
cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7Ci0gICAgaWYgKG1fYWN0aXZlKQorICAgIGlmICht
X3N0YXRlID09IEFjdGl2ZSkKICAgICAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6
YWRkTmV3VHJhbnNhY3Rpb24odGhpcyk7CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25DcmVh
dGVkKHRoaXMpOwogfQpAQCAtMjA2LDExICsyMDMsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdGF0ZSAh
PSBGaW5pc2hlZCwgIkEgZmluaXNoZWQgdHJhbnNhY3Rpb24gdHJpZWQgdG8gc2V0QWN0aXZlKCVz
KSIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgIGlmIChtX3N0YXRlID09IEZpbmlz
aGluZykKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBt
X3N0YXRlID09IFVzZWQpOwotICAgIEFTU0VSVChhY3RpdmUgIT0gbV9hY3RpdmUpOwotICAgIG1f
YWN0aXZlID0gYWN0aXZlOworICAgIEFTU0VSVChhY3RpdmUgIT0gKG1fc3RhdGUgPT0gQWN0aXZl
KSk7CisgICAgbV9zdGF0ZSA9IGFjdGl2ZSA/IEFjdGl2ZSA6IEluYWN0aXZlOwogCi0gICAgaWYg
KCFhY3RpdmUgJiYgbV9zdGF0ZSA9PSBVbnVzZWQpCisgICAgaWYgKCFhY3RpdmUgJiYgbV9yZXF1
ZXN0TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgIG1fYmFja2VuZC0+Y29tbWl0KCk7CiB9CiAKQEAg
LTIyMiw3ICsyMTgsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydChFeGNlcHRpb25Db2Rl
JiBlYykKICAgICB9CiAKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwotICAgIG1fYWN0aXZlID0g
ZmFsc2U7CiAKICAgICB3aGlsZSAoIW1fcmVxdWVzdExpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAg
IElEQlJlcXVlc3QqIHJlcXVlc3QgPSAqbV9yZXF1ZXN0TGlzdC5iZWdpbigpOwpAQCAtMjc4LDEw
ICsyNzMsOCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbG9zZU9wZW5DdXJzb3JzKCkKIHZvaWQg
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQogewog
ICAgIEFTU0VSVChyZXF1ZXN0KTsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9z
dGF0ZSA9PSBVc2VkKTsKLSAgICBBU1NFUlQobV9hY3RpdmUpOworICAgIEFTU0VSVChtX3N0YXRl
ID09IEFjdGl2ZSk7CiAgICAgbV9yZXF1ZXN0TGlzdC5hZGQocmVxdWVzdCk7Ci0gICAgbV9zdGF0
ZSA9IFVzZWQ7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJSZXF1ZXN0KElE
QlJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA3ODZkZGZmMTlkN2ZhZDUyOWJkYjRhZDAwZWViNWI2
Mzg3OTc3NmIwLi40YzZhMDY5NWY4ZGYwMzJjNTVkZmYxNzAwOTYwM2M0ZTI5NDgyZDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IG1vZGVUb1N0cmluZyhNb2RlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25zdDsKLSAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBBY3RpdmU7IH0KICAgICBib29sIGlzRmluaXNoZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsgfQogICAgIGJvb2wgaXNWZXJzaW9uQ2hh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdFOyB9CkBAIC0xMzcs
OCArMTM3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgVW51c2VkLCAv
LyBObyByZXF1ZXN0cyBoYXZlIGJlZW4gbWFkZS4KLSAgICAgICAgVXNlZCwgLy8gQXQgbGVhc3Qg
b25lIHJlcXVlc3QgaGFzIGJlZW4gbWFkZS4KKyAgICAgICAgSW5hY3RpdmUsIC8vIENyZWF0ZWQg
b3Igc3RhcnRlZCwgYnV0IG5vdCBpbiBhbiBldmVudCBjYWxsYmFjaworICAgICAgICBBY3RpdmUs
IC8vIENyZWF0ZWQgb3Igc3RhcnRlZCwgaW4gY3JlYXRpb24gc2NvcGUgb3IgYW4gZXZlbnQgY2Fs
bGJhY2sKICAgICAgICAgRmluaXNoaW5nLCAvLyBJbiB0aGUgcHJvY2VzcyBvZiBhYm9ydGluZyBv
ciBjb21wbGV0aW5nLgogICAgICAgICBGaW5pc2hlZCwgLy8gTm8gbW9yZSBldmVudHMgd2lsbCBm
aXJlIGFuZCBubyBuZXcgcmVxdWVzdHMgbWF5IGJlIGZpbGVkLgogICAgIH07CkBAIC0xNDgsNyAr
MTQ4LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBtX29iamVjdFN0b3Jl
TmFtZXM7CiAgICAgSURCT3BlbkRCUmVxdWVzdCogbV9vcGVuREJSZXF1ZXN0OwogICAgIGNvbnN0
IE1vZGUgbV9tb2RlOwotICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAg
ICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggZDEyODFhN2I1NDg0Y2E1Nzk1ZmQxYzYz
MzJkNjA0NDVmM2ExZTY1NS4uNjJlNTQ1ZTE3NjdlZTAzOWEyZWQzOWUzNmU2MmNjYjg5MjFjZTVl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChjb25zdCBWZWN0
b3I8aW50NjRfdD4mIG9iamUKICAgICA6IG1fb2JqZWN0U3RvcmVJZHMob2JqZWN0U3RvcmVJZHMp
CiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fc3RhdGUoVW51c2VkKQorICAgICwgbV9jb21t
aXRQZW5kaW5nKGZhbHNlKQogICAgICwgbV9kYXRhYmFzZShkYXRhYmFzZSkKICAgICAsIG1fdHJh
bnNhY3Rpb24oZGF0YWJhc2UtPmJhY2tpbmdTdG9yZSgpLmdldCgpKQogICAgICwgbV90YXNrVGlt
ZXIodGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKQpAQCAt
MTIyLDcgKzEyMyw4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikKIAogICAgIC8vIFJ1biB0aGUgYWJvcnQg
dGFza3MsIGlmIGFueS4KICAgICB3aGlsZSAoIW1fYWJvcnRUYXNrUXVldWUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKG1fYWJv
cnRUYXNrUXVldWUudGFrZUZpcnN0KCkpOworICAgICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzayhtX2Fib3J0VGFza1F1ZXVlLmZpcnN0KCkucmVsZWFzZSgpKTsK
KyAgICAgICAgbV9hYm9ydFRhc2tRdWV1ZS5yZW1vdmVGaXJzdCgpOwogICAgICAgICB0YXNrLT5w
ZXJmb3JtVGFzaygwKTsKICAgICB9CiAKQEAgLTE1MSw2ICsxNTMsMTEgQEAgYm9vbCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjppc1Rhc2tRdWV1ZUVtcHR5KCkgY29uc3QKICAgICByZXR1cm4g
bV9wcmVlbXB0aXZlVGFza1F1ZXVlLmlzRW1wdHkoKSAmJiBtX3Rhc2tRdWV1ZS5pc0VtcHR5KCk7
CiB9CiAKK2Jvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6aGFzUGVuZGluZ1Rhc2tzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wZW5kaW5nRXZlbnRzIHx8IG1fcGVuZGluZ1ByZWVtcHRp
dmVFdmVudHMgfHwgIWlzVGFza1F1ZXVlRW1wdHkoKTsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpyZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqIGN1
cnNvcikKIHsKICAgICBtX29wZW5DdXJzb3JzLmFkZChjdXJzb3IpOwpAQCAtMTc2LDEyICsxODMs
MTYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRDb21wbGV0ZVRhc2tFdmVu
dHMoKQogICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudHMpOwogICAgIG1fcGVuZGluZ0V2ZW50cy0t
OwogCisgICAgLy8gQSBzaW5nbGUgdGFzayBoYXMgY29tcGxldGVkIGFuZCBlcnJvci9zdWNjZXNz
IGV2ZW50cyBmaXJlZC4gU2NoZWR1bGUKKyAgICAvLyB0aW1lciB0byBwcm9jZXNzIGFub3RoZXIu
CiAgICAgaWYgKCFtX3Rhc2tFdmVudFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGFza0V2
ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OnJ1bigpCiB7CisgICAgLy8gVHJhbnNhY3Rpb25Db29yZGluYXRvciBoYXMgc3RhcnRl
ZCB0aGlzIHRyYW5zYWN0aW9uLiBTY2hlZHVsZSBhIHRpbWVyCisgICAgLy8gdG8gcHJvY2VzcyB0
aGUgZmlyc3QgdGFzay4KICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGFydFBlbmRpbmcgfHwgbV9z
dGF0ZSA9PSBSdW5uaW5nKTsKICAgICBBU1NFUlQoIW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpOwog
CkBAIC0yMDAsMTIgKzIxMSwxOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnN0
YXJ0KCkKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KCkKIHsKICAgICBJ
REJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCIpOworCisgICAgQVNT
RVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gUnVubmluZyk7CisgICAgbV9jb21t
aXRQZW5kaW5nID0gdHJ1ZTsKKworICAgIC8vIEZyb250LWVuZCBoYXMgcmVxdWVzdGVkIGEgY29t
bWl0LCBidXQgdGhlcmUgbWF5IGJlIHRhc2tzIGxpa2UgY3JlYXRlSW5kZXggd2hpY2gKKyAgICAv
LyBhcmUgY29uc2lkZXJlZCBzeW5jaHJvbm91cyBieSB0aGUgZnJvbnQtZW5kIGJ1dCBhcmUgcHJv
Y2Vzc2VkIGFzeW5jaHJvbm91c2x5LgorICAgIGlmIChoYXNQZW5kaW5nVGFza3MoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0IG1h
eSBiZSByZWxlYXNlZCB3aGlsZSBwZXJmb3JtaW5nIHRoZQogICAgIC8vIGNvbW1pdCBzdGVwcyBi
ZWxvdy4gV2UgdGhlcmVmb3JlIHRha2UgYSBzZWxmIHJlZmVyZW5jZSB0byBrZWVwIG91cnNlbHZl
cwogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJvdGVjdCh0aGlzKTsKLSAgICBBU1NFUlQobV9z
dGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICBBU1NFUlQoaXNUYXNr
UXVldWVFbXB0eSgpKTsKIAogICAgIGJvb2wgdW51c2VkID0gbV9zdGF0ZSA9PSBVbnVzZWQ7CiAg
ICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwpAQCAtMjY3LDkgKzI4NSwxMCBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSQogICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFz
a0V2ZW50VGltZXJGaXJlZCIpOwogICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwogCi0g
ICAgaWYgKCFtX3BlbmRpbmdFdmVudHMgJiYgIW1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMgJiYg
aXNUYXNrUXVldWVFbXB0eSgpKSB7CisgICAgaWYgKCFoYXNQZW5kaW5nVGFza3MoKSkgewogICAg
ICAgICAvLyBUaGUgbGFzdCB0YXNrIGV2ZW50IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0YXNrCiAg
ICAgICAgIC8vIHF1ZXVlIGlzIGVtcHR5LiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLgorICAgICAg
ICBBU1NFUlQobV9jb21taXRQZW5kaW5nKTsKICAgICAgICAgY29tbWl0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMjc3ZjI1M2RlMTQ4NjNj
MjI1NjBkZmI4MmY1ODk2YTRmMjFkYzZmNS4uNzQzNmE0OGZmYjZmNDI2ZmQzZDkzYjlhMDBkODMz
ODI0ZGEzYTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNzQsOCArNzQsOCBAQCBw
cml2YXRlOgogCiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIFVudXNlZCwgLy8gQ3JlYXRlZCwg
YnV0IG5vIHRhc2tzIHlldC4KLSAgICAgICAgU3RhcnRQZW5kaW5nLCAvLyBFbnF1ZXVlZCB0YXNr
cywgYnV0IFNRTGl0ZSB0cmFuc2FjdGlvbiBub3QgeWV0IHN0YXJ0ZWQuCi0gICAgICAgIFJ1bm5p
bmcsIC8vIFNRTGl0ZSB0cmFuc2FjdGlvbiBzdGFydGVkIGJ1dCBub3QgeWV0IGZpbmlzaGVkLgor
ICAgICAgICBTdGFydFBlbmRpbmcsIC8vIEVucXVldWVkIHRhc2tzLCBidXQgYmFja2luZyBzdG9y
ZSB0cmFuc2FjdGlvbiBub3QgeWV0IHN0YXJ0ZWQuCisgICAgICAgIFJ1bm5pbmcsIC8vIEJhY2tp
bmcgc3RvcmUgdHJhbnNhY3Rpb24gc3RhcnRlZCBidXQgbm90IHlldCBmaW5pc2hlZC4KICAgICAg
ICAgRmluaXNoZWQsIC8vIEVpdGhlciBhYm9ydGVkIG9yIGNvbW1pdHRlZC4KICAgICB9OwogCkBA
IC04Myw2ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21taXQoKTsKIAogICAgIGJvb2wg
aXNUYXNrUXVldWVFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaGFzUGVuZGluZ1Rhc2tzKCkgY29u
c3Q7CiAKICAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw+Kik7CiAgICAgdm9pZCB0YXNrRXZlbnRUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+Kik7CkBAIC05Miw2ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgbV9tb2RlOwogCiAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBib29sIG1f
Y29tbWl0UGVuZGluZzsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFiYXNlOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175293</attachid>
            <date>2012-11-20 15:47:46 -0800</date>
            <delta_ts>2012-11-20 16:35:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100903-20121120154535.patch</filename>
            <type>text/plain</type>
            <size>10451</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE2YzNjMjM3MjQxYmVl
MWVlNzNlNWY1NmJmNTcwZWVlZTEwMDc3NC4uZGVmNGNmMTI2ZmNhZTA2OWMxN2E3ZGFhZjc2MDZk
Mjk3MzU1ODg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBNb3Zl
IGNvbnRyb2wgb2YgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICJXaGVuIGEgdHJhbnNhY3Rp
b24gY2FuIG5vIGxvbmdlciBiZWNvbWUgYWN0aXZlLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBh
dHRlbXB0IHRvCisgICAgICAgIGNvbW1pdCBpdCIgLSB0aGF0IGlzLCBhbGwgcmVxdWVzdHMgaGF2
ZSBkaXNwYXRjaGVkIHN1Y2Nlc3MvZXJyb3IgZXZlbnRzIGFuZCBubyBmdXJ0aGVyCisgICAgICAg
IHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLiBQcmV2aW91c2x5LCB0aGlzIHdhcyBkb25lIGJ5IHRo
ZSBiYWNrIGVuZCB3YWl0aW5nIGZvciBldmVudHMKKyAgICAgICAgZnJvbSB0aGUgZnJvbnQgZW5k
LCBidXQgdGhlIGZyb250IGVuZCBjYW4gbW9yZSBlZmZpY2llbnRseSBtYWtlIHRoZSBkZWNpc2lv
bi4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZGV0ZWN0YWJsZSBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgVGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLSouaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6Omhhc1BlbmRpbmdUYXNrcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnJ1bik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRUaW1lckZpcmVk
KToKKwogMjAxMi0xMS0yMCAgS3VuaWhpa28gU2FrYW1vdG8gIDxrc2FrYW1vdG9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVzZSBsb2NhbGl6ZWQgZGF0ZS10aW1lIGZvcm1hdCBpbiBkYXRldGlt
ZSBpbnB1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcAppbmRleCBmNzM5MWFiZjY2ODI3ZjY1YzI1OWY5YzgxMDhkZDYxZjVmOWM5ZWViLi5lNGQx
NjdmZmFkMGEzYjIxNTIwYTgxMDU0NDY4ZTQ5MmJkOTVkMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNTAwLDYgKzUwMCwxMSBA
QCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0cnVlKTsKIAogICAgIGJvb2wgZG9u
dFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQo
KSwgdGFyZ2V0cyk7CisKKyAgICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX3JlYWR5U3RhdGUgPT0g
RE9ORSkKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CisK
KyAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCByZXF1ZXN0IGluIHRoZSB0cmFuc2FjdGlvbidz
IGxpc3QsIGl0IG1heSBjb21taXQgaGVyZS4KICAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUp
CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CiAKQEAgLTUxOCw5ICs1
MjMsNiBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiAKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2Nr
ZWRFdmVudCkKICAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS0+ZGlkQ29tcGxl
dGVUYXNrRXZlbnRzKCk7Ci0KLSAgICAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FKQotICAg
ICAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA4NGMyYTUyZjBjY2Jl
NGJhNTE0OTczNTY0NmQyYTY4MjExNmY4NWE2Li44ZGVlMmVhZDI2YjY3N2Y1ZWU4OGFmMDk4ZjQz
OTBmMjJjY2ZhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05NSw4ICs5NSw3IEBAIElEQlRyYW5zYWN0aW9uOjpJ
REJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQlRyCiAgICAgLCBtX29iamVjdFN0b3JlTmFtZXMob2JqZWN0U3RvcmVOYW1lcykKICAgICAs
IG1fb3BlbkRCUmVxdWVzdChvcGVuREJSZXF1ZXN0KQogICAgICwgbV9tb2RlKG1vZGUpCi0gICAg
LCBtX2FjdGl2ZSh0cnVlKQotICAgICwgbV9zdGF0ZShVbnVzZWQpCisgICAgLCBtX3N0YXRlKEFj
dGl2ZSkKICAgICAsIG1faGFzUGVuZGluZ0FjdGl2aXR5KHRydWUpCiAgICAgLCBtX2NvbnRleHRT
dG9wcGVkKGZhbHNlKQogewpAQCAtMTA0LDE0ICsxMDMsMTIgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCVHIKIAogICAgIGlmIChtb2RlID09IFZFUlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIC8vIE5v
dCBhY3RpdmUgdW50aWwgdGhlIGNhbGxiYWNrLgotICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOwot
ICAgICAgICAvLyBJbXBsaWNpdGx5IHVzZWQgYnkgdGhlIHZlcnNpb24gY2hhbmdlIGl0c2VsZi4K
LSAgICAgICAgbV9zdGF0ZSA9IFVzZWQ7CisgICAgICAgIG1fc3RhdGUgPSBJbmFjdGl2ZTsKICAg
ICB9CiAKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBp
dCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBp
ZiAobV9hY3RpdmUpCisgICAgaWYgKG1fc3RhdGUgPT0gQWN0aXZlKQogICAgICAgICBJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGROZXdUcmFuc2FjdGlvbih0aGlzKTsKICAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkNyZWF0ZWQodGhpcyk7CiB9CkBAIC0yMDYsMTEgKzIwMywxMCBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX3N0YXRlICE9IEZpbmlzaGVkLCAiQSBmaW5pc2hlZCB0cmFuc2FjdGlv
biB0cmllZCB0byBzZXRBY3RpdmUoJXMpIiwgYWN0aXZlID8gInRydWUiIDogImZhbHNlIik7CiAg
ICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoaW5nKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gVXNlZCk7Ci0gICAgQVNTRVJUKGFjdGl2
ZSAhPSBtX2FjdGl2ZSk7Ci0gICAgbV9hY3RpdmUgPSBhY3RpdmU7CisgICAgQVNTRVJUKGFjdGl2
ZSAhPSAobV9zdGF0ZSA9PSBBY3RpdmUpKTsKKyAgICBtX3N0YXRlID0gYWN0aXZlID8gQWN0aXZl
IDogSW5hY3RpdmU7CiAKLSAgICBpZiAoIWFjdGl2ZSAmJiBtX3N0YXRlID09IFVudXNlZCkKKyAg
ICBpZiAoIWFjdGl2ZSAmJiBtX3JlcXVlc3RMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgbV9iYWNr
ZW5kLT5jb21taXQoKTsKIH0KIApAQCAtMjIyLDcgKzIxOCw2IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246OmFib3J0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIG1fc3RhdGUgPSBGaW5p
c2hpbmc7Ci0gICAgbV9hY3RpdmUgPSBmYWxzZTsKIAogICAgIHdoaWxlICghbV9yZXF1ZXN0TGlz
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9ICptX3JlcXVlc3RM
aXN0LmJlZ2luKCk7CkBAIC0yNzgsMTAgKzI3Myw4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNs
b3NlT3BlbkN1cnNvcnMoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVnaXN0ZXJSZXF1ZXN0KElE
QlJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwotICAgIEFTU0VSVCht
X3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOwotICAgIEFTU0VSVChtX2FjdGl2
ZSk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gQWN0aXZlKTsKICAgICBtX3JlcXVlc3RMaXN0LmFk
ZChyZXF1ZXN0KTsKLSAgICBtX3N0YXRlID0gVXNlZDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6dW5yZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDc4NmRkZmYx
OWQ3ZmFkNTI5YmRiNGFkMDBlZWI1YjYzODc5Nzc2YjAuLjRjNmEwNjk1ZjhkZjAzMmM1NWRmZjE3
MDA5NjAzYzRlMjk0ODJkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVRvU3RyaW5nKE1vZGUsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogYmFja2VuZCgpIGNvbnN0
OwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQorICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEFjdGl2ZTsgfQogICAgIGJv
b2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAg
ICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gUkVBRF9PTkxZOyB9
CiAgICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gVkVS
U0lPTl9DSEFOR0U7IH0KQEAgLTEzNyw4ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAogICAgIGVudW0gU3Rh
dGUgewotICAgICAgICBVbnVzZWQsIC8vIE5vIHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLgotICAg
ICAgICBVc2VkLCAvLyBBdCBsZWFzdCBvbmUgcmVxdWVzdCBoYXMgYmVlbiBtYWRlLgorICAgICAg
ICBJbmFjdGl2ZSwgLy8gQ3JlYXRlZCBvciBzdGFydGVkLCBidXQgbm90IGluIGFuIGV2ZW50IGNh
bGxiYWNrCisgICAgICAgIEFjdGl2ZSwgLy8gQ3JlYXRlZCBvciBzdGFydGVkLCBpbiBjcmVhdGlv
biBzY29wZSBvciBhbiBldmVudCBjYWxsYmFjawogICAgICAgICBGaW5pc2hpbmcsIC8vIEluIHRo
ZSBwcm9jZXNzIG9mIGFib3J0aW5nIG9yIGNvbXBsZXRpbmcuCiAgICAgICAgIEZpbmlzaGVkLCAv
LyBObyBtb3JlIGV2ZW50cyB3aWxsIGZpcmUgYW5kIG5vIG5ldyByZXF1ZXN0cyBtYXkgYmUgZmls
ZWQuCiAgICAgfTsKQEAgLTE0OCw3ICsxNDgsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+IG1fb2JqZWN0U3RvcmVOYW1lczsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29w
ZW5EQlJlcXVlc3Q7CiAgICAgY29uc3QgTW9kZSBtX21vZGU7Ci0gICAgYm9vbCBtX2FjdGl2ZTsK
ICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHk7CiAgICAg
Ym9vbCBtX2NvbnRleHRTdG9wcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCBk
MTI4MWE3YjU0ODRjYTU3OTVmZDFjNjMzMmQ2MDQ0NWYzYTFlNjU1Li41MDU0M2Q1ZTgxOTllZjA2
MTVmNmE4ZGZlYzU5Yjc4YjcxNDRiZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApA
QCAtMTUxLDYgKzE1MSwxMSBAQCBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmlzVGFz
a1F1ZXVlRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBtX3ByZWVtcHRpdmVUYXNrUXVldWUuaXNF
bXB0eSgpICYmIG1fdGFza1F1ZXVlLmlzRW1wdHkoKTsKIH0KIAorYm9vbCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3MoKSBjb25zdAoreworICAgIHJldHVybiBtX3Bl
bmRpbmdFdmVudHMgfHwgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyB8fCAhaXNUYXNrUXVldWVF
bXB0eSgpOworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnJlZ2lzdGVyT3Bl
bkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCogY3Vyc29yKQogewogICAgIG1fb3BlbkN1cnNv
cnMuYWRkKGN1cnNvcik7CkBAIC0xNzYsMTIgKzE4MSwxNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cygpCiAgICAgQVNTRVJUKG1fcGVuZGlu
Z0V2ZW50cyk7CiAgICAgbV9wZW5kaW5nRXZlbnRzLS07CiAKKyAgICAvLyBBIHNpbmdsZSB0YXNr
IGhhcyBjb21wbGV0ZWQgYW5kIGVycm9yL3N1Y2Nlc3MgZXZlbnRzIGZpcmVkLiBTY2hlZHVsZQor
ICAgIC8vIHRpbWVyIHRvIHByb2Nlc3MgYW5vdGhlci4KICAgICBpZiAoIW1fdGFza0V2ZW50VGlt
ZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90YXNrRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7
CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6cnVuKCkKIHsKKyAgICAvLyBU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yIGhhcyBzdGFydGVkIHRoaXMgdHJhbnNhY3Rpb24uIFNjaGVk
dWxlIGEgdGltZXIKKyAgICAvLyB0byBwcm9jZXNzIHRoZSBmaXJzdCB0YXNrLgogICAgIEFTU0VS
VChtX3N0YXRlID09IFN0YXJ0UGVuZGluZyB8fCBtX3N0YXRlID09IFJ1bm5pbmcpOwogICAgIEFT
U0VSVCghbV90YXNrVGltZXIuaXNBY3RpdmUoKSk7CiAKQEAgLTIwMCwxMiArMjA5LDE4IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c3RhcnQoKQogdm9pZCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpjb21taXQoKQogewogICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6Y29tbWl0Iik7CisKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwg
bV9zdGF0ZSA9PSBSdW5uaW5nKTsKKworICAgIC8vIEZyb250LWVuZCBoYXMgcmVxdWVzdGVkIGEg
Y29tbWl0LCBidXQgdGhlcmUgbWF5IGJlIHRhc2tzIGxpa2UgY3JlYXRlSW5kZXggd2hpY2gKKyAg
ICAvLyBhcmUgY29uc2lkZXJlZCBzeW5jaHJvbm91cyBieSB0aGUgZnJvbnQtZW5kIGJ1dCBhcmUg
cHJvY2Vzc2VkIGFzeW5jaHJvbm91c2x5LgorICAgIGlmIChoYXNQZW5kaW5nVGFza3MoKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0
IG1heSBiZSByZWxlYXNlZCB3aGlsZSBwZXJmb3JtaW5nIHRoZQogICAgIC8vIGNvbW1pdCBzdGVw
cyBiZWxvdy4gV2UgdGhlcmVmb3JlIHRha2UgYSBzZWxmIHJlZmVyZW5jZSB0byBrZWVwIG91cnNl
bHZlcwogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJvdGVjdCh0aGlzKTsKLSAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICBBU1NFUlQoaXNU
YXNrUXVldWVFbXB0eSgpKTsKIAogICAgIGJvb2wgdW51c2VkID0gbV9zdGF0ZSA9PSBVbnVzZWQ7
CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwpAQCAtMjY3LDcgKzI4Miw3IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJCiAgICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0
YXNrRXZlbnRUaW1lckZpcmVkIik7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7CiAK
LSAgICBpZiAoIW1fcGVuZGluZ0V2ZW50cyAmJiAhbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyAm
JiBpc1Rhc2tRdWV1ZUVtcHR5KCkpIHsKKyAgICBpZiAoIWhhc1BlbmRpbmdUYXNrcygpKSB7CiAg
ICAgICAgIC8vIFRoZSBsYXN0IHRhc2sgZXZlbnQgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRhc2sK
ICAgICAgICAgLy8gcXVldWUgaXMgZW1wdHkuIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24uCiAgICAg
ICAgIGNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDI3N2YyNTNkZTE0ODYz
YzIyNTYwZGZiODJmNTg5NmE0ZjIxZGM2ZjUuLjgwM2VkMDc0YWJiYTkyY2IwNzY1MDViYjBkYzc4
ZjI5OGY5ZDE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTc0LDggKzc0LDggQEAg
cHJpdmF0ZToKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQs
IGJ1dCBubyB0YXNrcyB5ZXQuCi0gICAgICAgIFN0YXJ0UGVuZGluZywgLy8gRW5xdWV1ZWQgdGFz
a3MsIGJ1dCBTUUxpdGUgdHJhbnNhY3Rpb24gbm90IHlldCBzdGFydGVkLgotICAgICAgICBSdW5u
aW5nLCAvLyBTUUxpdGUgdHJhbnNhY3Rpb24gc3RhcnRlZCBidXQgbm90IHlldCBmaW5pc2hlZC4K
KyAgICAgICAgU3RhcnRQZW5kaW5nLCAvLyBFbnF1ZXVlZCB0YXNrcywgYnV0IGJhY2tpbmcgc3Rv
cmUgdHJhbnNhY3Rpb24gbm90IHlldCBzdGFydGVkLgorICAgICAgICBSdW5uaW5nLCAvLyBCYWNr
aW5nIHN0b3JlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgYnV0IG5vdCB5ZXQgZmluaXNoZWQuCiAgICAg
ICAgIEZpbmlzaGVkLCAvLyBFaXRoZXIgYWJvcnRlZCBvciBjb21taXR0ZWQuCiAgICAgfTsKIApA
QCAtODMsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0KCk7CiAKICAgICBib29s
IGlzVGFza1F1ZXVlRW1wdHkoKSBjb25zdDsKKyAgICBib29sIGhhc1BlbmRpbmdUYXNrcygpIGNv
bnN0OwogCiAgICAgdm9pZCB0YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiopOwogICAgIHZvaWQgdGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>