<?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>128766</bug_id>
          
          <creation_ts>2014-02-13 14:24:34 -0800</creation_ts>
          <short_desc>Web Inspector: CRASH when evaluating in console of JSContext RWI with disabled breakpoints</short_desc>
          <delta_ts>2014-02-25 18:08:06 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>129265</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mario</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>oliver</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>980449</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-13 14:24:34 -0800</bug_when>
    <thetext>* STEPS TO REPRODUCE:
1. Build and Run JSPong
2. Open JSContext RWI
3. Add breakpoint to nextMove
4. Disable all breakpoints
5. Ensure the specific breakpoint is &quot;enabled&quot; (click if needed)
6. Evaluate &quot;1+1&quot; in console
  =&gt; CRASH

* CRASH:
ASSERTION FAILED: vm().entryScope
/Volumes/Data/Code/safari/OpenSource/Source/JavaScriptCore/interpreter/CallFrame.cpp(134) : JSC::JSGlobalObject *JSC::ExecState::vmEntryGlobalObject()
1   0x100719120 WTFCrash
2   0x1000943ee JSC::ExecState::vmEntryGlobalObject()
3   0x1003983cc JSC::Interpreter::debug(JSC::ExecState*, JSC::DebugHookID)
4   0x1003c21d4 operationDebug
5   0x2c3082002a97
6   0x10050c854 callToJavaScript
7   0x1003b223d JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
8   0x1003976c9 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
9   0x100093f0e JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
10  0x100469fcc JSObjectCallAsFunction
11  0x100004f05 -[PongAI nextMove]
12  0x100003cb6 -[PongController update]
13  0x7fff915700f4 __NSFireTimer
14  0x7fff8ead2564 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
15  0x7fff8ead209f __CFRunLoopDoTimer
16  0x7fff8eb435aa __CFRunLoopDoTimers
17  0x7fff8ea8d8e5 __CFRunLoopRun
18  0x7fff8ea8d0b5 CFRunLoopRunSpecific
19  0x7fff8dae5a0d RunCurrentEventLoopInMode
20  0x7fff8dae57b7 ReceiveNextEventCommon
21  0x7fff8dae55bc _BlockUntilNextEventMatchingListInModeWithFilter
22  0x7fff94dfb3de _DPSNextEvent
23  0x7fff94dfaa2b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
24  0x7fff94deeb2c -[NSApplication run]
25  0x7fff94dd9913 NSApplicationMain
26  0x100001522 main
27  0x7fff8c9f85fd start
28  0x3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980450</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-13 14:25:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/16063681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980459</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-13 14:36:09 -0800</bug_when>
    <thetext>Hmm, here is another, slightly different crash. Just evaluating JS in the console of a new RWI. This time breakpoints were enabled. So I really don&apos;t know what is going on here.

(lldb) bt
* thread #2: tid = 0x3ac3a, 0x0000000100048fcc JavaScriptCore`WTF::RefPtr&lt;JSC::JITCode&gt;::get(this=0x00000000000000da) const + 12 at RefPtr.h:57, queue = &apos;com.apple.JavaScriptCore.remote-inspector-xpc-connection&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0xda)
  * frame #0: 0x0000000100048fcc JavaScriptCore`WTF::RefPtr&lt;JSC::JITCode&gt;::get(this=0x00000000000000da) const + 12 at RefPtr.h:57
    frame #1: 0x00000001000442cc JavaScriptCore`JSC::CodeBlock::jitType(this=0x000000000000000a) const + 28 at CodeBlock.h:271
    frame #2: 0x0000000100094d35 JavaScriptCore`JSC::CodeBlock::hasCodeOrigins(this=0x000000000000000a) + 21 at CodeBlock.h:555
    frame #3: 0x0000000100675ee3 JavaScriptCore`JSC::StackVisitor::readFrame(this=0x000000010197e018, callFrame=0x000000010197fa30) + 179 at StackVisitor.cpp:79
    frame #4: 0x0000000100676034 JavaScriptCore`JSC::StackVisitor::gotoNextFrame(this=0x000000010197e018) + 116 at StackVisitor.cpp:54
    frame #5: 0x000000010039ad58 JavaScriptCore`void JSC::StackVisitor::visit&lt;JSC::GetStackTraceFunctor&gt;(startFrame=0x000000010197e470, functor=0x000000010197e0a0) + 104 at StackVisitor.h:126
    frame #6: 0x000000010039957d JavaScriptCore`void JSC::ExecState::iterate&lt;JSC::GetStackTraceFunctor&gt;(this=0x000000010197e470, functor=0x000000010197e0a0) + 29 at CallFrame.h:313
    frame #7: 0x000000010039590a JavaScriptCore`JSC::Interpreter::getStackTrace(this=0x00006000000d2910, results=0x000000010197e268, maxStackSize=18446744073709551615) + 170 at Interpreter.cpp:571
    frame #8: 0x00000001006b68e2 JavaScriptCore`JSC::VM::throwException(this=0x0000000102820200, exec=0x000000010197e470, error=JSValue at 0x000000010197e280) + 306 at VM.cpp:664
    frame #9: 0x00000001006b7458 JavaScriptCore`JSC::VM::throwException(this=0x0000000102820200, exec=0x000000010197e470, error=0x0000000101dcfd70) + 72 at VM.cpp:713
    frame #10: 0x0000000100509641 JavaScriptCore`llint_slow_path_get_from_scope(exec=0x000000010197e470, pc=0x0000000101b05240) + 385 at LLIntSlowPaths.cpp:1379</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983626</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-22 12:22:34 -0800</bug_when>
    <thetext>This issue is because we now allow more than 1 JS threads to drop the VM lock.  Consider the following scenario:

1. Thread T1 locks the VM and enters the VM to execute some JS code.
2. On entry, T1 detects that VM::m_entryScope is null i.e. this is the first time it entered the VM.
    T1 sets VM::m_entryScope to T1&apos;s entryScope.
3. T1 drops all locks.

4. Thread T2 locks the VM and enters the VM to execute some JS code.
    On entry, T2 sees that VM::m_entryScope is NOT null, and therefore does not set the entryScope.
5. T2 drops all locks.

6. T1 re-grabs locks.
7. T1 returns all the way out of JS code.  On exit from the outer most JS function, T1 clears VM::m_entryScope (because T1 was the one who set it).
8. T1 unlocks the VM.

9. T2 re-grabs locks.
10. T2 proceeds to execute some code and expects VM::m_entryScope to be NOT null, but it turns out to be null.  Assertion failures and crashes ensue.

I think the proper fix for each thread to set its own VMEntryScope and hence, JSGlobalObject at VM entry.  Since we&apos;re not requiring different threads to be synchronized on the order in which locks are re-grabbed after being dropped, the act of switching JS execution from T1 to T2 can be thought of conceptually as a thread context switch (T1 and T2&apos;s stacks are not synchronized), whereas previously, it was like an RPC call (T1 and T2&apos;s stacks are synchronized at the point of the VM lock changing hands).  As such, both T1 and T2 should have their own VMEntryScope just like they would have their own per-thread context.

What this means, in terms of implementation of the fix, is:

1. JSLock::dropAllLocks() saves VM::m_entryScope in thread local data, and sets VM::m_entryScope to null.
2. JSLock::grabAllLocks() sets VM::m_entryScope to the saved entryScope in thread local data.

After we dropped the locks, if a second thread enters the VM for the first time, it will see a null VM::m_entryScope and install its own as expected.  If the second thread unlocks the VM (either because it has exited out of the VM altogether or it dropped the locks), the original thread can re-grab the lock and re-install its own entryScope and continue executing as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983657</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-22 18:46:31 -0800</bug_when>
    <thetext>Correction: now that the VMEntryScope is thread-specific, it doesn&apos;t make sense to store it in the VM.  Trying to store it in the VM results in more complexity to keep the value sync&apos;ed with the one that belongs to the thread.  Note: many of our regression tests were failing when I had implemented the naive solution (described in my previous comment) without all the complexity to sync the VM&apos;s entryScope value with the thread specific one.

Instead of storing the entryScope in the VM, we can just store it in thread local data.  With that, all the regressions go away, and the extra complexity is not needed.

In this solution, I ended up introducing the VMEntryScope* as a void* to WTFThreadData.  This feels like a layer violation to me.  Also, every time we need to add more VM thread local data, we&apos;ll end up modifying WTFThreadData.h.  For now, I&apos;ll implement the fix as is by modifying WTFThreadData.  In a subsequent patch, I&apos;ll look into making WTFThreadData extensible in some way, and make use of that to extend it to hold additional JSC VM specific thread data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983658</commentid>
    <comment_count>5</comment_count>
      <attachid>224988</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-22 18:52:36 -0800</bug_when>
    <thetext>Created attachment 224988
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983712</commentid>
    <comment_count>6</comment_count>
      <attachid>224988</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-23 09:28:14 -0800</bug_when>
    <thetext>Comment on attachment 224988
the patch.

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Now that we allow more than one thread to drop VM locks, it is no longer

We always allowed this, so you need to update the premise in your description.

&gt; Source/JavaScriptCore/runtime/VM.cpp:894
&gt; +VMEntryScope* VM::entryScope() const
&gt; +{
&gt; +    WTFThreadData&amp; threadData = wtfThreadData();
&gt; +    return reinterpret_cast&lt;VMEntryScope*&gt;(threadData.vmEntryScope());
&gt; +}

It doesn&apos;t make sense to turn entryScope into a per-thread concept, for two reasons:

(1) A thread can use more than one VM, and the VMs will stomp each others&apos; per-thread entry scope values.

(2) A null entryScope is used as a promise that nobody is using the VM right now, which allows us to do things like destructively discard code. That signal is only valid because entryScope is a global per-VM concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984219</commentid>
    <comment_count>7</comment_count>
      <attachid>225126</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-25 00:31:17 -0800</bug_when>
    <thetext>Created attachment 225126
patch 2

While testing patch 2 after rebasing to ToT, I saw some new failures.  I&apos;ll have to do some additional testing to make sure that these failures are not due to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984351</commentid>
    <comment_count>8</comment_count>
      <attachid>225126</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-25 09:30:10 -0800</bug_when>
    <thetext>Comment on attachment 225126
patch 2

Previously, the value of vm-&gt;entryScope()-&gt;globalObject() was the global object that initiated execution. In this patch, the value of vm-&gt;entryScope()-&gt;globalObject() is random based on thread scheduling.

Was that change intentional? If so, why is it desirable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984352</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-25 09:31:16 -0800</bug_when>
    <thetext>Also, what is it about the web inspector that ends up running JavaScript on multiple threads for the same VM?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984396</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-25 10:49:21 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Also, what is it about the web inspector that ends up running JavaScript on multiple threads for the same VM?

Web Inspector always creates a background dispatch queue to receive and dispatch messages from a remote inspector. So a (1) JSContext being used on any thread and (2) a dispatch queue for a RWI debugging it.

I wish I had attached a complete crash log, they are since gone on my system. Mark Lam may have a complete crash log. The backtraces of all threads would have shown the main thread as in Comment #1 and the RWI dispatch_queue somewhere under an APIEntryShim, but having released the lock trying an allocation while still with work to do in the VM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984415</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-25 11:54:40 -0800</bug_when>
    <thetext>&gt; Web Inspector always creates a background dispatch queue to receive and dispatch messages from a remote inspector. So a (1) JSContext being used on any thread and (2) a dispatch queue for a RWI debugging it.

Does this mean that, when attached to a non-Safari WebKit app, the Web Inspector will end up using the WebCore VM on a secondary thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984424</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-25 12:08:24 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Web Inspector always creates a background dispatch queue to receive and dispatch messages from a remote inspector. So a (1) JSContext being used on any thread and (2) a dispatch queue for a RWI debugging it.
&gt; 
&gt; Does this mean that, when attached to a non-Safari WebKit app, the Web Inspector will end up using the WebCore VM on a secondary thread?

No. Sorry. For JSContext remote inspection it creates a background dispatch queue. For normal WebCore::Page inspection it deliberately uses the MainThread via the main queue on Mac, or WebThread on iOS. See RemoteInspectorDebuggableConnection::dispatchAsyncOnDebuggable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984425</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-25 12:09:17 -0800</bug_when>
    <thetext>RemoteInspectorDebuggableConnection::RemoteInspectorDebuggableConnection constructor has a comment to this effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984571</commentid>
    <comment_count>14</comment_count>
      <attachid>225205</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-25 17:54:06 -0800</bug_when>
    <thetext>Created attachment 225205
patch 3: require ordered re-entry into the VM

I talked with Geoff offline, and we decided to switch tactics.  Instead of continuing with allowing unordered re-entry into the VM, we&apos;re switching to requiring ordered re-entry (which is how we used to roll back in the day i.e. a few weeks ago).  This means making JSLock::grabAllLocks() work the same way it does for the C loop LLINT.  We currently cannot think of any clients (or potential clients) that would require and significantly benefit from ordered re-entry.  Hence, we&apos;re moving forward with the simplest solution of just making JSLock::grabAllLocks() ordered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984572</commentid>
    <comment_count>15</comment_count>
      <attachid>225205</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-25 17:55:48 -0800</bug_when>
    <thetext>Comment on attachment 225205
patch 3: require ordered re-entry into the VM

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984577</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-25 18:08:06 -0800</bug_when>
    <thetext>Thanks.  Landed jn r164687: &lt;http://trac.webkit.org/r164687&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224988</attachid>
            <date>2014-02-22 18:52:36 -0800</date>
            <delta_ts>2014-02-25 00:31:17 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-128766.patch</filename>
            <type>text/plain</type>
            <size>14030</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE0LTAyLTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDUkFTSCB3aGVuIGV2YWx1YXRpbmcgaW4gY29uc29sZSBvZiBKU0NvbnRl
eHQgUldJIHdpdGggZGlzYWJsZWQgYnJlYWtwb2ludHMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xMjg3NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm93IHRoYXQgd2UgYWxsb3cgbW9yZSB0aGFuIG9uZSB0aHJlYWQgdG8gZHJvcCBW
TSBsb2NrcywgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIHNhZmUgZm9yIGFsbCBWTSB0aHJlYWRz
IHRvIHVzZSBhIHRocmVhZCBzcGVjaWZpYyBWTUVudHJ5U2NvcGUgaW5zdGFsbGVkCisgICAgICAg
IGJ5IHRoZSBmaXJzdCB0aHJlYWQgdGhhdCBlbnRlcmVkIHRoZSBWTS4KKworICAgICAgICBDb25z
aWRlciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAxLiBUaHJlYWQgVDEgbG9ja3Mg
dGhlIFZNLCBhbmQgZW50ZXJzIHRoZSBWTSB0byBleGVjdXRlIHNvbWUgSlMgY29kZS4KKyAgICAg
ICAgMi4gT24gZW50cnksIFQxIGRldGVjdHMgdGhhdCBWTTo6bV9lbnRyeVNjb3BlIGlzIG51bGwg
aS5lLiB0aGlzIGlzIHRoZQorICAgICAgICAgICBmaXJzdCB0aW1lIGl0IGVudGVyZWQgdGhlIFZN
LgorICAgICAgICAgICBUMSBzZXRzIFZNOjptX2VudHJ5U2NvcGUgdG8gVDEncyBlbnRyeVNjb3Bl
LgorICAgICAgICAzLiBUMSBkcm9wcyBhbGwgbG9ja3MuCisKKyAgICAgICAgNC4gVGhyZWFkIFQy
IGxvY2tzIHRoZSBWTSwgYW5kIGVudGVycyB0aGUgVk0gdG8gZXhlY3V0ZSBzb21lIEpTIGNvZGUu
CisgICAgICAgICAgIE9uIGVudHJ5LCBUMiBzZWVzIHRoYXQgVk06Om1fZW50cnlTY29wZSBpcyBO
T1QgbnVsbCwgYW5kIHRoZXJlZm9yZQorICAgICAgICAgICBkb2VzIG5vdCBzZXQgdGhlIGVudHJ5
U2NvcGUuCisgICAgICAgIDUuIFQyIGRyb3BzIGFsbCBsb2Nrcy4KKworICAgICAgICA2LiBUMSBy
ZS1ncmFicyBsb2Nrcy4KKyAgICAgICAgNy4gVDEgcmV0dXJucyBhbGwgdGhlIHdheSBvdXQgb2Yg
SlMgY29kZS4gT24gZXhpdCBmcm9tIHRoZSBvdXRlciBtb3N0CisgICAgICAgICAgIEpTIGZ1bmN0
aW9uLCBUMSBjbGVhcnMgVk06Om1fZW50cnlTY29wZSAoYmVjYXVzZSBUMSB3YXMgdGhlIG9uZSB3
aG8KKyAgICAgICAgICAgc2V0IGl0KS4KKyAgICAgICAgOC4gVDEgdW5sb2NrcyB0aGUgVk0uCisK
KyAgICAgICAgOS4gVDIgcmUtZ3JhYnMgbG9ja3MuCisgICAgICAgIDEwLiBUMiBwcm9jZWVkcyB0
byBleGVjdXRlIHNvbWUgY29kZSBhbmQgZXhwZWN0cyBWTTo6bV9lbnRyeVNjb3BlIHRvIGJlCisg
ICAgICAgICAgICBOT1QgbnVsbCwgYnV0IGl0IHR1cm5zIG91dCB0byBiZSBudWxsLiBBc3NlcnRp
b24gZmFpbHVyZXMgYW5kCisgICAgICAgICAgICBjcmFzaGVzIGVuc3VlLgorCisgICAgICAgIFRo
ZSBmaXggaXMgdG8gaGF2ZSBlYWNoIHRocmVhZCBwcm92aWRlIGl0cyBvd24gVk1FbnRyeVNjb3Bl
LiBJbnN0ZWFkIG9mCisgICAgICAgIHN0b3JpbmcgdGhlIFZNRW50cnlTY29wZSogaW4gVk0sIHdl
J2xsIHN0b3JlIGl0IGluIHRocmVhZCBsb2NhbCBkYXRhLgorCisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5j
dGlvbnMpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Omxh
c3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlQWxsQ29tcGls
ZWRDb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6cmVsZWFz
ZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpWTTo6ZW50cnlTY29wZSk6CisgICAg
ICAgIChKU0M6OlZNOjpzZXRFbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5
U2NvcGU6OlZNRW50cnlTY29wZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6flZNRW50
cnlTY29wZSk6CisKIDIwMTQtMDItMjIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bnJlYWNoYWJsZSBjb2RlICgtV3VucmVhY2hh
YmxlLWNvZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAJKHJldmlzaW9uIDE2NDU0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw4ICszMjMsOSBAQCB2b2lkIERl
YnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhWCiB7CiAgICAgLy8gSWYgSmF2YVNjcmlw
dCBpcyBydW5uaW5nLCBpdCdzIG5vdCBzYWZlIHRvIHJlY29tcGlsZSwgc2luY2Ugd2UnbGwgZW5k
CiAgICAgLy8gdXAgdGhyb3dpbmcgYXdheSBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2su
Ci0gICAgaWYgKHZtLT5lbnRyeVNjb3BlKSB7Ci0gICAgICAgIHZtLT5lbnRyeVNjb3BlLT5zZXRS
ZWNvbXBpbGF0aW9uTmVlZGVkKHRydWUpOworICAgIFZNRW50cnlTY29wZSogZW50cnlTY29wZSA9
IHZtLT5lbnRyeVNjb3BlKCk7CisgICAgaWYgKGVudHJ5U2NvcGUpIHsKKyAgICAgICAgZW50cnlT
Y29wZS0+c2V0UmVjb21waWxhdGlvbk5lZWRlZCh0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2NDU0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTYsNyArMjk2LDcgQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGlu
ZSkKIC8vIFJ1biBhbGwgcGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNhdXNlIHdlIHdvbid0IGdl
dCBhbm90aGVyIGNoYW5jZS4KIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewot
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5lbnRyeVNjb3BlKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghbV92bS0+ZW50cnlTY29wZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwogCiAgICAgbV9vYmplY3RTcGFjZS5sYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpOwpAQCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29t
cGlsZWRDb2RlKCkKIHsKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90
IHNhZmUgdG8gZGVsZXRlIGNvZGUsIHNpbmNlIHdlJ2xsIGVuZAogICAgIC8vIHVwIGRlbGV0aW5n
IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBzdGFjay4KLSAgICBpZiAobV92bS0+ZW50cnlTY29w
ZSkKKyAgICBpZiAobV92bS0+ZW50cnlTY29wZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgLy8gSWYgd2UgaGF2ZSB0aGluZ3Mgb24gYW55IHdvcmtsaXN0LCB0aGVuIGRvbid0IGRlbGV0
ZSBjb2RlLiBUaGlzIGlzIGtpbmQgb2YKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNjQ1NDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMxLDggKzEzMSw4IEBAIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OnZtRW50cnlHbG9i
YWwKIAogICAgIC8vIEZvciBhbnkgRXhlY1N0YXRlIHRoYXQncyBub3QgYSBnbG9iYWxFeGVjLCB0
aGUgCiAgICAgLy8gZHluYW1pYyBnbG9iYWwgb2JqZWN0IG11c3QgYmUgc2V0IHNpbmNlIGNvZGUg
aXMgcnVubmluZwotICAgIEFTU0VSVCh2bSgpLmVudHJ5U2NvcGUpOwotICAgIHJldHVybiB2bSgp
LmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVCh2bSgpLmVudHJ5U2NvcGUo
KSk7CisgICAgcmV0dXJuIHZtKCkuZW50cnlTY29wZSgpLT5nbG9iYWxPYmplY3QoKTsKIH0KIAog
SlNBY3RpdmF0aW9uKiBDYWxsRnJhbWU6OmFjdGl2YXRpb24oKSBjb25zdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTY0NTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAz
LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwganNB
cnJheUNsYXNzSW5mbyhKU0FycmF5OjppbmZvKCkpCiAgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJ
bmZvKEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVy
KDApCi0gICAgLCBlbnRyeVNjb3BlKDApCiAgICAgLCBtX3JlZ0V4cENhY2hlKG5ldyBSZWdFeHBD
YWNoZSh0aGlzKSkKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgLCBtX3J0VHJhY2VM
aXN0KG5ldyBSVFRyYWNlTGlzdCgpKQpAQCAtNTY5LDcgKzU2OCw3IEBAIHZvaWQgVk06OnJlbGVh
c2VFeGVjdXRhYmxlTWVtb3J5KCkKIHsKICAgICBwcmVwYXJlVG9EaXNjYXJkQ29kZSgpOwogICAg
IAotICAgIGlmIChlbnRyeVNjb3BlKSB7CisgICAgaWYgKGVudHJ5U2NvcGUoKSkgewogICAgICAg
ICBTdGFja1ByZXNlcnZpbmdSZWNvbXBpbGVyIHJlY29tcGlsZXI7CiAgICAgICAgIEhlYXBJdGVy
YXRpb25TY29wZSBpdGVyYXRpb25TY29wZShoZWFwKTsKICAgICAgICAgSGFzaFNldDxKU0NlbGwq
PiByb290czsKQEAgLTg4OCw0ICs4ODcsMTYgQEAgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0q
IHZtKQogI2VuZGlmCiB9CiAKK1ZNRW50cnlTY29wZSogVk06OmVudHJ5U2NvcGUoKSBjb25zdAor
eworICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Vk1FbnRyeVNjb3BlKj4odGhyZWFkRGF0YS52bUVudHJ5
U2NvcGUoKSk7Cit9CisKK3ZvaWQgVk06OnNldEVudHJ5U2NvcGUoVk1FbnRyeVNjb3BlKiBlbnRy
eVNjb3BlKQoreworICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRh
KCk7CisgICAgdGhyZWFkRGF0YS5zZXRWTUVudHJ5U2NvcGUoZW50cnlTY29wZSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAxNjQ1NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYpOwogCi0gICAg
ICAgIFZNRW50cnlTY29wZSogZW50cnlTY29wZTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Vk1FbnRyeVNjb3BlKiBlbnRyeVNjb3BlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0RW50cnlT
Y29wZShWTUVudHJ5U2NvcGUqKTsKIAogICAgICAgICBIYXNoU2V0PEpTT2JqZWN0Kj4gc3RyaW5n
UmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAxNjQ1NDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxMiArMzksMTIgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZt
LCBKU0dsbwogICAgICwgbV9yZWNvbXBpbGF0aW9uTmVlZGVkKGZhbHNlKQogewogICAgIEFTU0VS
VCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKLSAgICBpZiAo
IXZtLmVudHJ5U2NvcGUpIHsKKyAgICBpZiAoIXZtLmVudHJ5U2NvcGUoKSkgewogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCiAgICAgICAgIGlmIChFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9y
eVByZXNzdXJlKCkpCiAgICAgICAgICAgICB2bS5oZWFwLmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgp
OwogI2VuZGlmCi0gICAgICAgIHZtLmVudHJ5U2NvcGUgPSB0aGlzOworICAgICAgICB2bS5zZXRF
bnRyeVNjb3BlKHRoaXMpOwogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBkYXRlIGNhY2hlIGJldHdl
ZW4gSlMgaW52b2NhdGlvbnMgdG8gZm9yY2UgdGhlIFZNIHRvCiAgICAgICAgIC8vIG9ic2VydmUg
dGltZSB4b25lIGNoYW5nZXMuCkBAIC01NywxMCArNTcsMTAgQEAgVk1FbnRyeVNjb3BlOjpWTUVu
dHJ5U2NvcGUoVk0mIHZtLCBKU0dsbwogCiBWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUoKQog
ewotICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUgIT0gdGhpcykKKyAgICBpZiAobV92bS5lbnRyeVNj
b3BlKCkgIT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92bS5lbnRyeVNjb3BlID0g
bnVsbHB0cjsKKyAgICBtX3ZtLnNldEVudHJ5U2NvcGUobnVsbHB0cik7CiAKICAgICBpZiAobV9y
ZWNvbXBpbGF0aW9uTmVlZGVkKSB7CiAgICAgICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBt
X2dsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE0
LTAyLTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDUkFTSCB3aGVuIGV2YWx1YXRpbmcgaW4gY29uc29sZSBvZiBKU0NvbnRleHQgUldJ
IHdpdGggZGlzYWJsZWQgYnJlYWtwb2ludHMuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xMjg3NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3Igc3RvcmluZyB0aGUgVk1FbnRyeVNjb3BlIGluIHRocmVhZCBs
b2NhbCBkYXRhLgorCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3BwOgorICAgICAgICAo
V1RGOjpXVEZUaHJlYWREYXRhOjpXVEZUaHJlYWREYXRhKToKKyAgICAgICAgKiB3dGYvV1RGVGhy
ZWFkRGF0YS5oOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWREYXRhOjp2bUVudHJ5U2NvcGUpOgor
ICAgICAgICAoV1RGOjpXVEZUaHJlYWREYXRhOjpzZXRWTUVudHJ5U2NvcGUpOgorCiAyMDE0LTAy
LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBq
c0RvY3VtZW50UHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCBzaG91bGQgbm90IGNyZWF0
ZSBhbiBBdG9taWNTdHJpbmcgZm9yIHRoZSBmdW5jdGlvbiBhcmd1bWVudApJbmRleDogU291cmNl
L1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
V1RGVGhyZWFkRGF0YS5jcHAJKHJldmlzaW9uIDE2NDU0OSkKKysrIFNvdXJjZS9XVEYvd3RmL1dU
RlRocmVhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIFdURlRocmVh
ZERhdGE6OldURlRocmVhZERhdGEoKQogI2VuZGlmCiAgICAgLCBtX3NhdmVkU3RhY2tQb2ludGVy
QXRWTUVudHJ5KDApCiAgICAgLCBtX3NhdmVkTGFzdFN0YWNrVG9wKHN0YWNrKCkub3JpZ2luKCkp
CisgICAgLCBtX3ZtRW50cnlTY29wZShudWxscHRyKQogewogI2lmIFVTRShXRUJfVEhSRUFEKQog
ICAgIHN0YXRpYyBKU0M6OklkZW50aWZpZXJUYWJsZSogc2hhcmVkSWRlbnRpZmllclRhYmxlID0g
bmV3IEpTQzo6SWRlbnRpZmllclRhYmxlKCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZUaHJl
YWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCShy
ZXZpc2lvbiAxNjQ1NDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNiw2ICsxMjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2F2ZWRMYXN0
U3RhY2tUb3AgPSBsYXN0U3RhY2tUb3A7CiAgICAgfQogCisgICAgdm9pZCogdm1FbnRyeVNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV92bUVudHJ5U2NvcGU7IH0KKyAgICB2b2lkIHNldFZNRW50cnlT
Y29wZSh2b2lkKiBlbnRyeVNjb3BlKSB7IG1fdm1FbnRyeVNjb3BlID0gZW50cnlTY29wZTsgfQor
CiAgICAgdm9pZCogbV9hcGlEYXRhOwogCiBwcml2YXRlOgpAQCAtMTQwLDYgKzE0Myw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5Owog
ICAgIHZvaWQqIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CisgICAgdm9pZCogbV92bUVudHJ5U2NvcGU7
CiAKICAgICBzdGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0
YT4qIHN0YXRpY0RhdGE7CiAgICAgZnJpZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTAyLTIyICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDUkFT
SCB3aGVuIGV2YWx1YXRpbmcgaW4gY29uc29sZSBvZiBKU0NvbnRleHQgUldJIHdpdGggZGlzYWJs
ZWQgYnJlYWtwb2ludHMuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjg3NjY+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFcnJvckhhbmRs
ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisK
IDIwMTQtMDItMjIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgc29tZSB1bnJlYWNoYWJsZSBjb2RlICgtV3VucmVhY2hhYmxlLWNvZGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDE2NDU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgR0NDb250cm9sbGVy
OjpyZWxlYXNlRXhlY3V0YWJsZU1lbW8KIAogICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIGFueSBq
YXZhc2NyaXB0IHJ1bm5pbmcgb24gb3VyIHN0YWNrIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxs
ZWQuIFRoZQogICAgIC8vIGZvbGxvd2luZyBsaW5lIGFzc2VydHMgdGhhdC4KLSAgICBBU1NFUlQo
IUpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5lbnRyeVNjb3BlKTsKKyAgICBBU1NFUlQoIUpTRE9N
V2luZG93Ojpjb21tb25WTSgpLT5lbnRyeVNjb3BlKCkpOwogCiAgICAgLy8gQnV0IGJlIHNhZmUg
aW4gcmVsZWFzZSBidWlsZHMganVzdCBpbiBjYXNlLi4uCi0gICAgaWYgKEpTRE9NV2luZG93Ojpj
b21tb25WTSgpLT5lbnRyeVNjb3BlKQorICAgIGlmIChKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS0+
ZW50cnlTY29wZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBKU0RPTVdpbmRvdzo6Y29tbW9u
Vk0oKS0+cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAkocmV2
aXNpb24gMTY0NTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpT
Q3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0CiAgICAgVk0mIHZtID0gbV9leGVjLT52
bSgpOwogICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigmdm0sIGtleSk7CiAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKLSAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmll
ciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKKyAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgYXJyYXlWaWV3
LT53cmFwKG1fZXhlYywgdm0uZW50cnlTY29wZSgpLT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiB2
b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBuZXN0ZWRCdWlsZGVyKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkocmV2aXNp
b24gMTY0NTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw4IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6
OmhhbmRsZUV2ZW50KFNjcmlwdEUKICAgICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoZXJyb3JF
dmVudC0+Y29sbm8oKSkpOwogCiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
LSAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHZtLmVudHJ5U2NvcGUgPyB2bS5l
bnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7CisgICAgICAgIFZNRW50
cnlTY29wZSogcHJldmlvdXNFbnRyeVNjb3BlID0gdm0uZW50cnlTY29wZSgpOworICAgICAgICBW
TUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgcHJldmlvdXNFbnRyeVNjb3BlID8gcHJldmlvdXNF
bnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7CiAKICAgICAgICAgSlNW
YWx1ZSByZXR1cm5WYWx1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKQog
ICAgICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywganNGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ3MpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDE2
NDU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsOCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQoU2NyaXB0CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50
KGV2ZW50KTsKIAogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAg
IFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCB2bS5lbnRyeVNjb3BlID8gdm0uZW50cnlTY29w
ZS0+Z2xvYmFsT2JqZWN0KCkgOiBnbG9iYWxPYmplY3QpOworICAgICAgICBWTUVudHJ5U2NvcGUq
IHByZXZpb3VzRW50cnlTY29wZSA9IHZtLmVudHJ5U2NvcGUoKTsKKyAgICAgICAgVk1FbnRyeVNj
b3BlIGVudHJ5U2NvcGUodm0sIHByZXZpb3VzRW50cnlTY29wZSA/IHByZXZpb3VzRW50cnlTY29w
ZS0+Z2xvYmFsT2JqZWN0KCkgOiBnbG9iYWxPYmplY3QpOwogCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3Ry
dW1lbnRGdW5jdGlvbkNhbGwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY2FsbFR5cGUsIGNhbGxE
YXRhKTsKIAo=
</data>
<flag name="review"
          id="249088"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225126</attachid>
            <date>2014-02-25 00:31:17 -0800</date>
            <delta_ts>2014-02-25 17:54:06 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>bug-128766.patch</filename>
            <type>text/plain</type>
            <size>11691</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBA
CisyMDE0LTAyLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDUkFTSCB3aGVuIGV2YWx1YXRpbmcgaW4gY29uc29sZSBvZiBKU0NvbnRl
eHQgUldJIHdpdGggZGlzYWJsZWQgYnJlYWtwb2ludHMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xMjg3NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm93IHRoYXQgd2UgYWxsb3cgYSBsb2NrRHJvcERlcHRoIGdyZWF0ZXIgdGhhbiAx
LCBpdCBpcyBubyBsb25nZXIgc2FmZQorICAgICAgICB0byBhc3N1bWUgdGhhdCB0aGUgVk1FbnRy
eVNjb3BlIGluc3RhbGxlZCBieSB0aGUgZmlyc3QgdGhyZWFkIHRoYXQKKyAgICAgICAgZW50ZXJl
ZCB0aGUgVk0gd2lsbCBwZXJzaXN0IGZvciB0aGUgZHVyYXRpb24gdGhhdCBhIHNlY29uZCB0aHJl
YWQgbWF5CisgICAgICAgIGJlIGV4ZWN1dGluZyBWTSBjb2RlLgorCisgICAgICAgIENvbnNpZGVy
IHRoZSBmb2xsb3dpbmcgc2NlbmFyaW86CisgICAgICAgIDEuIFRocmVhZCBUMSBsb2NrcyB0aGUg
Vk0sIGFuZCBlbnRlcnMgdGhlIFZNIHRvIGV4ZWN1dGUgc29tZSBKUyBjb2RlLgorICAgICAgICAy
LiBPbiBlbnRyeSwgVDEgZGV0ZWN0cyB0aGF0IFZNOjptX2VudHJ5U2NvcGUgaXMgbnVsbCBpLmUu
IHRoaXMgaXMgdGhlCisgICAgICAgICAgIGZpcnN0IHRpbWUgaXQgZW50ZXJlZCB0aGUgVk0uCisg
ICAgICAgICAgIFQxIHNldHMgVk06Om1fZW50cnlTY29wZSB0byBUMSdzIGVudHJ5U2NvcGUuCisg
ICAgICAgIDMuIFQxIGRyb3BzIGFsbCBsb2Nrcy4KKworICAgICAgICA0LiBUaHJlYWQgVDIgbG9j
a3MgdGhlIFZNLCBhbmQgZW50ZXJzIHRoZSBWTSB0byBleGVjdXRlIHNvbWUgSlMgY29kZS4KKyAg
ICAgICAgICAgT24gZW50cnksIFQyIHNlZXMgdGhhdCBWTTo6bV9lbnRyeVNjb3BlIGlzIE5PVCBu
dWxsLCBhbmQgdGhlcmVmb3JlCisgICAgICAgICAgIGRvZXMgbm90IHNldCB0aGUgZW50cnlTY29w
ZS4KKyAgICAgICAgNS4gVDIgZHJvcHMgYWxsIGxvY2tzLgorCisgICAgICAgIDYuIFQxIHJlLWdy
YWJzIGxvY2tzLgorICAgICAgICA3LiBUMSByZXR1cm5zIGFsbCB0aGUgd2F5IG91dCBvZiBKUyBj
b2RlLiBPbiBleGl0IGZyb20gdGhlIG91dGVyIG1vc3QKKyAgICAgICAgICAgSlMgZnVuY3Rpb24s
IFQxIGNsZWFycyBWTTo6bV9lbnRyeVNjb3BlIChiZWNhdXNlIFQxIHdhcyB0aGUgb25lIHdobwor
ICAgICAgICAgICBzZXQgaXQpLgorICAgICAgICA4LiBUMSB1bmxvY2tzIHRoZSBWTS4KKworICAg
ICAgICA5LiBUMiByZS1ncmFicyBsb2Nrcy4KKyAgICAgICAgMTAuIFQyIHByb2NlZWRzIHRvIGV4
ZWN1dGUgc29tZSBjb2RlIGFuZCBleHBlY3RzIFZNOjptX2VudHJ5U2NvcGUgdG8gYmUKKyAgICAg
ICAgICAgIE5PVCBudWxsLCBidXQgaXQgdHVybnMgb3V0IHRvIGJlIG51bGwuIEFzc2VydGlvbiBm
YWlsdXJlcyBhbmQKKyAgICAgICAgICAgIGNyYXNoZXMgZW5zdWUuCisKKyAgICAgICAgSW4gdGhp
cyBmaXgsIHdlIHdpbGwgbWFrZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6CisKKyAgICAgICAgMS4g
V2hlbiBlbnRlcmluZyB0aGUgVk0sIGlmIFZNOjplbnRyeVNjb3BlIGlzIG51bGwsIHdlJ2xsIGlu
c3RhbGwgdGhlCisgICAgICAgICAgIGN1cnJlbnQgVk1FbnRyeVNjb3BlLiBXZSB3aWxsIGFsc28g
YWRkIGl0IHRvIHRoZSBWTSdzIG1fZW50cnlTY29wZU1hcAorICAgICAgICAgICBrZXllZCBvbiB0
aGUgY3VycmVudCB0aHJlYWQncyB0aHJlYWQgaWQuCisKKyAgICAgICAgICAgSWYgVk06OmVudHJ5
U2NvcGUgaXMgbm9uLW51bGwsIHdlIHdpbGwgY2hlY2sgaWYgdGhlIGVudHJ5U2NvcGUncyBvd25l
cgorICAgICAgICAgICB0aHJlYWQgaXMgdGhlIGN1cnJlbnQgdGhyZWFkLiBJZiBzbywgdGhlbiB3
ZSBoYXZlIG91ciBlbnRyeVNjb3BlIGZvcgorICAgICAgICAgICB0aGUgY3VycmVudCB0aHJlYWQg
YWxyZWFkeSwgYW5kIHRoZSBpbnN0YWxsYXRpb24gY29kZSBzaG91bGQgZG8gbm90aGluZy4KKwor
ICAgICAgICAgICBJZiBWTTo6ZW50cnlTY29wZSBpcyBub24tbnVsbCBhbmQgdGhlIGVudHJ5U2Nv
cGUncyBvd25lciB0aHJlYWQgaXMgbm90CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZCwg
dGhlbiB3ZSdsbCBpbnN0YWxsIHRoZSBjdXJyZW50IHRocmVhZCdzIFZNRW50cnlTY29wZS4KKyAg
ICAgICAgICAgV2Ugd2lsbCBhbHNvIGFkZCB0aGlzIG5ldyBlbnRyeVNjb3BlIHRvIHRoZSBWTSdz
IG1fZW50cnlTY29wZU1hcC4KKworICAgICAgICAyLiBXaGVuIGV4aXRpbmcgdGhlIFZNLCB3ZSB3
aWxsIHJlbW92ZSB0aGUgY3VycmVudCB0aHJlYWQncyBlbnRyeVNjb3BlCisgICAgICAgICAgIGZy
b20gdGhlIFZNJ3MgbV9lbnRyeVNjb3BlTWFwLiBXZSB3aWxsIHNldCBWTTo6ZW50cnlTY29wZSB0
byB0aGUKKyAgICAgICAgICAgZmlyc3Qgb2YgdGhlIHJlbWFpbmluZyBlbnRyeVNjb3BlcyBpbiBt
X2VudHJ5U2NvcGVNYXAuIEl0IGRvZXNuJ3QgbWF0dGVyCisgICAgICAgICAgIHdoaWNoIHRocmVh
ZCB0aGF0IGVudHJ5U2NvcGUgYmVsb25ncyB0by4gQWxsIHRoYXQgbWF0dGVycyBpcyB0aGF0IHdl
CisgICAgICAgICAgIHNldCBWTTo6ZW50cnlTY29wZSB0byBvbmUgc28gdGhhdCBWTTo6ZW50cnlT
Y29wZSBpcyBub3QgbnVsbCBhcyBsb25nIGFzCisgICAgICAgICAgIHNvbWUgdGhyZWFkIGlzIHN0
aWxsICJpbiB0aGUgVk0iIGkuZS4gaGFzIGFuIGFjdGl2ZSBWTUVudHJ5U2NvcGUuCisKKyAgICAg
ICAgICAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgZW50cnlTY29wZXMgaW4gVk06Om1fZW50cnlTY29w
ZU1hcCwgdGhlbiB3ZSB3aWxsCisgICAgICAgICAgIHNldCBWTTo6ZW50cnlTY29wZSB0byBudWxs
IGluZGljYXRpbmcgdGhhdCBhbGwgdGhyZWFkcyBoYXZlIGV4aXRlZCB0aGUKKyAgICAgICAgICAg
Vk0uCisKKyAgICAgICAgMy4gSlNMb2NrOjpEcm9wQWxsTG9ja3Mgd2lsbCBzYXZlIGl0cyBjYWxs
ZXIgdGhyZWFhZCdzIGVudHJ5U2NvcGUgYmVmb3JlCisgICAgICAgICAgIGRyb3BwaW5nIGxvY2tz
LCBhbmQgd2lsbCByZXN0b3JlIGl0IGFmdGVyIHJlLWdyYWJiaW5nIHRoZSBsb2Nrcy4KKworICAg
ICAgICBIZW5jZToKKyAgICAgICAgMS4gRWFjaCB0aHJlYWQgd2lsbCB1c2UgdGhlaXIgb3duIFZN
RW50cnlTY29wZS4gRWFjaCB0aHJlYWQgaXMgZnJlZSB0bworICAgICAgICAgICBleGl0IG91dCBv
ZiB0aGUgVk0gY29tcGxldGVseSBhbmQgcmVsZWFzZSBpdHMgVk1FbnRyeVNjb3BlLiBJdCB3aWxs
CisgICAgICAgICAgIG5vdCBhZmZlY3Qgb3RoZXIgdGhyZWFkcy4KKworICAgICAgICAyLiBFYWNo
IHRocmVhZCBtYXkgZW50ZXIgbW9yZSB0aGFuIG9uZSBWTS4gRWFjaCBWTSB3aWxsIGhhdmUgaXRz
IG93bgorICAgICAgICAgICBzZXBhcmF0ZSBWTUVudHJ5U2NvcGUgZnJvbSB0aGF0IHRocmVhZC4g
VGhlIDIgVk0ncyB3aWxsIG5vdCBpbnRlcmZlcmUKKyAgICAgICAgICAgd2l0aCBlYWNoIG90aGVy
IGluIHRlcm1zIG9mIHRoZWlyIGVudHJ5U2NvcGVzLgorCisgICAgICAgIDMuIEEgVk0ncyBlbnRy
eVNjb3BlIHdpbGwgY29udGludWUgdG8gYmUgbm9uLW51bGwgYXMgbG9uZyBhcyB0aGVyZSBpcyBh
dAorICAgICAgICAgICBsZWFzdCBvbmUgdGhyZWFkIHRoYXQgaGFzIG5vdCBleGl0ZWQgdGhlIFZN
IHlldC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6CisgICAgICAgIChKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9w
QWxsTG9ja3M6OmRyb3BMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06Omluc3RhbGxFbnRyeVNjb3Bl
KToKKyAgICAgICAgKEpTQzo6Vk06OnVuaW5zdGFsbEVudHJ5U2NvcGUpOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAg
IChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVNjb3BlOjp+Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5o
OgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6Om93bmVyVGhyZWFkKToKKwogMjAxNC0wMi0y
NCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTmVlZCB0byBpbml0
aWFsaXplIFZNIHN0YWNrIGRhdGEgZXZlbiB3aGVuIHRoZSBWTSBpcyBvbiBhbiBleGNsdXNpdmUg
dGhyZWFkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShy
ZXZpc2lvbiAxNjQ2MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjAgKzIzOCwxNCBAQCBKU0xvY2s6OkRyb3BBbGxM
b2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNTCiAgICAgOiBtX2Ryb3BwZWRMb2NrQ291bnQoMCkKICAg
ICAsIG1fdm0oZXhlYyA/ICZleGVjLT52bSgpIDogbnVsbHB0cikKIHsKLSAgICBpZiAoIW1fdm0p
Ci0gICAgICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+aXNDb2xsZWN0b3JC
dXN5KCkpOwotICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxs
TG9ja3ModGhpcyk7CisgICAgZHJvcExvY2tzKCk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tz
OjpEcm9wQWxsTG9ja3MoVk0qIHZtKQogICAgIDogbV9kcm9wcGVkTG9ja0NvdW50KDApCiAgICAg
LCBtX3ZtKHZtKQogewotICAgIGlmICghbV92bSkKLSAgICAgICAgcmV0dXJuOwotICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3ZtLT5pc0NvbGxlY3RvckJ1c3koKSk7Ci0gICAgbV9kcm9wcGVkTG9ja0Nv
dW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrcyh0aGlzKTsKKyAgICBkcm9wTG9ja3Mo
KTsKIH0KIAogSlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MoKQpAQCAtMjU5LDYg
KzI1MywxNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRyb3BBbGxMb2NrcygpCiAgICAgaWYg
KCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgbV92bS0+YXBpTG9jaygpLmdyYWJBbGxMb2Nr
cyh0aGlzLCBtX2Ryb3BwZWRMb2NrQ291bnQpOworICAgIG1fdm0tPmVudHJ5U2NvcGUgPSBtX3Nh
dmVkVk1FbnRyeVNjb3BlOworfQorCit2b2lkIEpTTG9jazo6RHJvcEFsbExvY2tzOjpkcm9wTG9j
a3MoKQoreworICAgIGlmICghbV92bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9B
U1NFUlQoIW1fdm0tPmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBtX3NhdmVkVk1FbnRyeVNjb3Bl
ID0gbV92bS0+ZW50cnlTY29wZTsKKyAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlM
b2NrKCkuZHJvcEFsbExvY2tzKHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiAxNjQ2MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWNTdGF0ZTsK
ICAgICBjbGFzcyBWTTsKKyAgICBjbGFzcyBWTUVudHJ5U2NvcGU7CiAKICAgICAvLyBUaGlzIGNs
YXNzIGlzIHVzZWQgdG8gcHJvdGVjdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGxlZ2FjeSBz
aW5nbGUgCiAgICAgLy8gc2hhcmVkIFZNLgpAQCAtMTE4LDExICsxMTksMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZW5kaWYKIAogICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgdm9pZCBkcm9w
TG9ja3MoKTsKKwogICAgICAgICAgICAgaW50cHRyX3QgbV9kcm9wcGVkTG9ja0NvdW50OwogICAg
ICAgICAgICAgUmVmUHRyPFZNPiBtX3ZtOwogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAg
ICAgICAgICB1bnNpZ25lZCBtX2Ryb3BEZXB0aDsKICNlbmRpZgorICAgICAgICAgICAgVk1FbnRy
eVNjb3BlKiBtX3NhdmVkVk1FbnRyeVNjb3BlOwogICAgICAgICB9OwogCiAgICAgcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2NDYyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJWTUVudHJ5U2NvcGUuaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC04ODcsNCAr
ODg4LDQwIEBAIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKiB2bSkKICNlbmRpZgogfQogCit2
b2lkIFZNOjppbnN0YWxsRW50cnlTY29wZShWTUVudHJ5U2NvcGUqIGVudHJ5U2NvcGUpCit7Cisg
ICAgQVNTRVJUKG1fYXBpTG9jay0+Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CisgICAg
c3RkOjp0aHJlYWQ6OmlkIHRocmVhZElkID0gZW50cnlTY29wZS0+b3duZXJUaHJlYWQoKTsKKyAg
ICBBU1NFUlQodGhyZWFkSWQgPT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIGlm
ICghdGhpcy0+ZW50cnlTY29wZSkgeworICAgICAgICB0aGlzLT5lbnRyeVNjb3BlID0gZW50cnlT
Y29wZTsKKyAgICAgICAgbV9lbnRyeVNjb3BlTWFwLmVtcGxhY2UodGhyZWFkSWQsIGVudHJ5U2Nv
cGUpOworCisgICAgfSBlbHNlIGlmICh0aGlzLT5lbnRyeVNjb3BlLT5vd25lclRocmVhZCgpICE9
IHRocmVhZElkKSB7CisgICAgICAgIEVudHJ5U2NvcGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9lbnRy
eVNjb3BlTWFwLmZpbmQodGhyZWFkSWQpOworICAgICAgICBpZiAoaXQgPT0gbV9lbnRyeVNjb3Bl
TWFwLmVuZCgpKQorICAgICAgICAgICAgbV9lbnRyeVNjb3BlTWFwLmVtcGxhY2UodGhyZWFkSWQs
IGVudHJ5U2NvcGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeVNjb3BlID0gaXQt
PnNlY29uZDsKKyAgICAgICAgdGhpcy0+ZW50cnlTY29wZSA9IGVudHJ5U2NvcGU7CisgICAgfQor
fQorCit2b2lkIFZNOjp1bmluc3RhbGxFbnRyeVNjb3BlKFZNRW50cnlTY29wZSogZW50cnlTY29w
ZSkKK3sKKyAgICBBU1NFUlQobV9hcGlMb2NrLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygp
KTsKKyAgICBpZiAodGhpcy0+ZW50cnlTY29wZSAhPSBlbnRyeVNjb3BlKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdGQ6OnRocmVhZDo6aWQgdGhyZWFkSWQgPSBlbnRyeVNjb3BlLT5vd25lclRo
cmVhZCgpOworICAgIEFTU0VSVCh0aHJlYWRJZCA9PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQo
KSk7CisgICAgbV9lbnRyeVNjb3BlTWFwLmVyYXNlKHRocmVhZElkKTsKKworICAgIEVudHJ5U2Nv
cGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9lbnRyeVNjb3BlTWFwLmJlZ2luKCk7CisgICAgaWYgKGl0
ICE9IG1fZW50cnlTY29wZU1hcC5lbmQoKSkKKyAgICAgICAgdGhpcy0+ZW50cnlTY29wZSA9IGl0
LT5zZWNvbmQ7CisgICAgZWxzZQorICAgICAgICB0aGlzLT5lbnRyeVNjb3BlID0gbnVsbHB0cjsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgJKHJldmlzaW9uIDE2NDYyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJXYXRjaGRvZy5o
IgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCisjaW5j
bHVkZSA8dW5vcmRlcmVkX21hcD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtNDQ0LDYgKzQ0NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZ2F0aGVy
Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAorICAgICAgICB2b2lkIGlu
c3RhbGxFbnRyeVNjb3BlKFZNRW50cnlTY29wZSopOworICAgICAgICB2b2lkIHVuaW5zdGFsbEVu
dHJ5U2NvcGUoVk1FbnRyeVNjb3BlKik7CisKICAgICAgICAgVk1FbnRyeVNjb3BlKiBlbnRyeVNj
b3BlOwogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zp
c2l0ZWRPYmplY3RzOwpAQCAtNTU2LDYgKzU2MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKICAgICAg
ICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50U2V0czsKKworICAgICAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6
OnRocmVhZDo6aWQsIFZNRW50cnlTY29wZSo+IEVudHJ5U2NvcGVNYXA7CisgICAgICAgIEVudHJ5
U2NvcGVNYXAgbV9lbnRyeVNjb3BlTWFwOwogICAgIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURB
VElPTikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcAkocmV2aXNpb24gMTY0NjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1FbnRyeVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCisgICAgLCBtX293bmVyVGhyZWFkKHN0ZDo6dGhpc190aHJlYWQ6Omdl
dF9pZCgpKQogICAgICwgbV9yZWNvbXBpbGF0aW9uTmVlZGVkKGZhbHNlKQogewogICAgIEFTU0VS
VCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKQEAgLTQ0LDEy
ICs0NSwxMSBAQCBWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvCiAgICAg
ICAgIGlmIChFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkpCiAgICAg
ICAgICAgICB2bS5oZWFwLmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOwogI2VuZGlmCi0gICAgICAg
IHZtLmVudHJ5U2NvcGUgPSB0aGlzOwotCiAgICAgICAgIC8vIFJlc2V0IHRoZSBkYXRlIGNhY2hl
IGJldHdlZW4gSlMgaW52b2NhdGlvbnMgdG8gZm9yY2UgdGhlIFZNIHRvCiAgICAgICAgIC8vIG9i
c2VydmUgdGltZSB4b25lIGNoYW5nZXMuCiAgICAgICAgIHZtLnJlc2V0RGF0ZUNhY2hlKCk7CiAg
ICAgfQorICAgIHZtLmluc3RhbGxFbnRyeVNjb3BlKHRoaXMpOwogCiAgICAgLy8gQ2xlYXIgdGhl
IGNhcHR1cmVkIGV4Y2VwdGlvbiBzdGFjayBiZXR3ZWVuIGVudHJpZXMKICAgICB2bS5jbGVhckV4
Y2VwdGlvblN0YWNrKCk7CkBAIC01NywxMiArNTcsOSBAQCBWTUVudHJ5U2NvcGU6OlZNRW50cnlT
Y29wZShWTSYgdm0sIEpTR2xvCiAKIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiB7Ci0g
ICAgaWYgKG1fdm0uZW50cnlTY29wZSAhPSB0aGlzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3ZtLmVudHJ5U2NvcGUgPSBudWxscHRyOworICAgIG1fdm0udW5pbnN0YWxsRW50cnlTY29wZSh0
aGlzKTsKIAotICAgIGlmIChtX3JlY29tcGlsYXRpb25OZWVkZWQpIHsKKyAgICBpZiAoIW1fdm0u
ZW50cnlTY29wZSAmJiBtX3JlY29tcGlsYXRpb25OZWVkZWQpIHsKICAgICAgICAgaWYgKERlYnVn
Z2VyKiBkZWJ1Z2dlciA9IG1fZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKQogICAgICAgICAgICAg
ZGVidWdnZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCZtX3ZtKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkocmV2aXNpb24g
MTY0NjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxNCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgflZNRW50cnlTY29wZSgpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CisgICAgc3RkOjp0aHJlYWQ6
OmlkIG93bmVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vd25lclRocmVhZDsgfQogCiAgICAg
dm9pZCBzZXRSZWNvbXBpbGF0aW9uTmVlZGVkKGJvb2wgcmVjb21waWxlTmVlZGVkKSB7IG1fcmVj
b21waWxhdGlvbk5lZWRlZCA9IHJlY29tcGlsZU5lZWRlZDsgfQogCiBwcml2YXRlOgogICAgIFZN
JiBtX3ZtOwogICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKKyAgICBzdGQ6OnRo
cmVhZDo6aWQgbV9vd25lclRocmVhZDsKICAgICBib29sIG1fcmVjb21waWxhdGlvbk5lZWRlZDsK
IH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225205</attachid>
            <date>2014-02-25 17:54:06 -0800</date>
            <delta_ts>2014-02-25 17:55:48 -0800</delta_ts>
            <desc>patch 3: require ordered re-entry into the VM</desc>
            <filename>bug-128766b.patch</filename>
            <type>text/plain</type>
            <size>4248</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0Njg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE0LTAyLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDUkFTSCB3aGVuIGV2YWx1YXRpbmcgaW4gY29uc29sZSBvZiBKU0NvbnRl
eHQgUldJIHdpdGggZGlzYWJsZWQgYnJlYWtwb2ludHMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xMjg3NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSB0aGUgSlNMb2NrOjpncmFiQWxsTG9ja3MoKSB3b3JrIHRoZSBzYW1lIHdh
eSBhcyBmb3IgdGhlIEMgbG9vcCBMTElOVC4KKyAgICAgICAgVGhlIHJlYXNvbmluZyBpcyB0aGF0
IHdlIGRvbid0IGtub3cgb2YgYW55IGNsaWVudHMgdGhhdCBuZWVkIHVub3JkZXJlZAorICAgICAg
ICByZS1lbnRyeSBpbnRvIHRoZSBWTSBmcm9tIGRpZmZlcmVudCB0aHJlYWRzLiBTbywgd2UncmUg
ZW5mb3JjaW5nIG9yZGVyZWQKKyAgICAgICAgcmUtZW50cnkgaS5lLiB3ZSBtdXN0IHJlLWdyYWIg
bG9ja3MgaW4gdGhlIHJldmVyc2Ugb3JkZXIgb2YgZHJvcHBpbmcgbG9ja3MuCisKKyAgICAgICAg
VGhlIGNyYXNoIGluIHRoaXMgYnVnIGhhcHBlbmVkIGJlY2F1c2Ugd2Ugd2VyZSBhbGxvd2luZyB1
bm9yZGVyZWQgcmUtZW50cnksCisgICAgICAgIGFuZCB0aGUgZm9sbG93aW5nIHR5cGUgb2Ygc2Nl
bmFyaW8gb2NjdXJyZWQ6CisKKyAgICAgICAgMS4gVGhyZWFkIFQxIGxvY2tzIHRoZSBWTSwgYW5k
IGVudGVycyB0aGUgVk0gdG8gZXhlY3V0ZSBzb21lIEpTIGNvZGUuCisgICAgICAgIDIuIE9uIGVu
dHJ5LCBUMSBkZXRlY3RzIHRoYXQgVk06Om1fZW50cnlTY29wZSBpcyBudWxsIGkuZS4gdGhpcyBp
cyB0aGUKKyAgICAgICAgICAgZmlyc3QgdGltZSBpdCBlbnRlcmVkIHRoZSBWTS4KKyAgICAgICAg
ICAgVDEgc2V0cyBWTTo6bV9lbnRyeVNjb3BlIHRvIFQxJ3MgZW50cnlTY29wZS4KKyAgICAgICAg
My4gVDEgZHJvcHMgYWxsIGxvY2tzLgorCisgICAgICAgIDQuIFRocmVhZCBUMiBsb2NrcyB0aGUg
Vk0sIGFuZCBlbnRlcnMgdGhlIFZNIHRvIGV4ZWN1dGUgc29tZSBKUyBjb2RlLgorICAgICAgICAg
ICBPbiBlbnRyeSwgVDIgc2VlcyB0aGF0IFZNOjptX2VudHJ5U2NvcGUgaXMgTk9UIG51bGwsIGFu
ZCB0aGVyZWZvcmUKKyAgICAgICAgICAgZG9lcyBub3Qgc2V0IHRoZSBlbnRyeVNjb3BlLgorICAg
ICAgICA1LiBUMiBkcm9wcyBhbGwgbG9ja3MuCisKKyAgICAgICAgNi4gVDEgcmUtZ3JhYnMgbG9j
a3MuCisgICAgICAgIDcuIFQxIHJldHVybnMgYWxsIHRoZSB3YXkgb3V0IG9mIEpTIGNvZGUuIE9u
IGV4aXQgZnJvbSB0aGUgb3V0ZXIgbW9zdAorICAgICAgICAgICBKUyBmdW5jdGlvbiwgVDEgY2xl
YXJzIFZNOjptX2VudHJ5U2NvcGUgKGJlY2F1c2UgVDEgd2FzIHRoZSBvbmUgd2hvCisgICAgICAg
ICAgIHNldCBpdCkuCisgICAgICAgIDguIFQxIHVubG9ja3MgdGhlIFZNLgorCisgICAgICAgIDku
IFQyIHJlLWdyYWJzIGxvY2tzLgorICAgICAgICAxMC4gVDIgcHJvY2VlZHMgdG8gZXhlY3V0ZSBz
b21lIGNvZGUgYW5kIGV4cGVjdHMgVk06Om1fZW50cnlTY29wZSB0byBiZQorICAgICAgICAgICAg
Tk9UIG51bGwsIGJ1dCBpdCB0dXJucyBvdXQgdG8gYmUgbnVsbC4gQXNzZXJ0aW9uIGZhaWx1cmVz
IGFuZAorICAgICAgICAgICAgY3Jhc2hlcyBlbnN1ZS4KKworICAgICAgICBXaXRoIG9yZGVyZWQg
cmUtZW50cnksIGF0IHN0ZXAgNiwgVDEgd2lsbCBsb29wIGFuZCB5aWVsZCB1bnRpbCBUMiBleGl0
cworICAgICAgICB0aGUgVk0uIEhlbmNlLCB0aGUgaXNzdWUgd2lsbCBubyBsb25nZXIgbWFuaWZl
c3QuCisKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9j
azo6ZHJvcEFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpncmFiQWxsTG9ja3MpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFs
bExvY2tzOjpkcm9wRGVwdGgpOgorCiAyMDE0LTAyLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBOZWVkIHRvIGluaXRpYWxpemUgVk0gc3RhY2sgZGF0YSBldmVu
IHdoZW4gdGhlIFZNIGlzIG9uIGFuIGV4Y2x1c2l2ZSB0aHJlYWQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDE2NDY4NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDkgKzI2LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAjaW5jbHVkZSA8dGhyZWFkPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xOTIs
MTAgKzE5MCw3IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2MKIAog
ICAgICsrbV9sb2NrRHJvcERlcHRoOwogCi0gICAgVU5VU0VEX1BBUkFNKGRyb3BwZXIpOwotI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgZHJvcHBlci0+c2V0RHJvcERlcHRoKG1fbG9ja0Ry
b3BEZXB0aCk7Ci0jZW5kaWYKIAogICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZU
aHJlYWREYXRhKCk7CiAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRy
eShtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CkBAIC0yMTgsMTQgKzIxMywxMSBAQCB2
b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyogCiAgICAgQVNTRVJUKCFjdXJy
ZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKICAgICBsb2NrKGRyb3BwZWRMb2NrQ291bnQpOwog
Ci0gICAgVU5VU0VEX1BBUkFNKGRyb3BwZXIpOwotI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAg
ICAgd2hpbGUgKGRyb3BwZXItPmRyb3BEZXB0aCgpICE9IG1fbG9ja0Ryb3BEZXB0aCkgewogICAg
ICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CiAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6
OnlpZWxkKCk7CiAgICAgICAgIGxvY2soZHJvcHBlZExvY2tDb3VudCk7CiAgICAgfQotI2VuZGlm
CiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDE2NDY4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTcgKzExMiwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2Nr
cyhWTSopOwogICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRyb3BBbGxMb2NrcygpOwog
ICAgICAgICAgICAgCi0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgICAgIHZvaWQg
c2V0RHJvcERlcHRoKHVuc2lnbmVkIGRlcHRoKSB7IG1fZHJvcERlcHRoID0gZGVwdGg7IH0KICAg
ICAgICAgICAgIHVuc2lnbmVkIGRyb3BEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcERlcHRo
OyB9Ci0jZW5kaWYKIAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgaW50cHRyX3QgbV9k
cm9wcGVkTG9ja0NvdW50OwogICAgICAgICAgICAgUmVmUHRyPFZNPiBtX3ZtOwotI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCiAgICAgICAgICAgICB1bnNpZ25lZCBtX2Ryb3BEZXB0aDsKLSNlbmRp
ZgogICAgICAgICB9OwogCiAgICAgcHJpdmF0ZToK
</data>
<flag name="review"
          id="249328"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>