<?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>29690</bug_id>
          
          <creation_ts>2009-09-23 13:08:23 -0700</creation_ts>
          <short_desc>ApplicationCache Events Should Delay Firing Until After Document Load</short_desc>
          <delta_ts>2010-01-28 22:41: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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://bogojoker.com/webkit/bug_onchecking/bad.html</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149481</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-09-23 13:08:23 -0700</bug_when>
    <thetext>When a page has a cache manifest and includes an external script (&lt;script src=&quot;...&quot;&gt;) regardless of wether or not that external script loads, any &quot;checking&quot; event listeners on the Application Cache do not fire.  This differs from Firefox, which (as I would have expected) throws the checking event listeners.

Test Cases: 
Error Page: http://bogojoker.com/webkit/bug_onchecking/bad.html
Success Page: http://bogojoker.com/webkit/bug_onchecking/good.html

Steps to Reproduce:
1. Navigate to the error test page.
2. Refresh the page (see below for the reason).

Actual Results:
No alert dialog, the listener was not run.

Expected Results:
The onchecking listener should fire and an alert dialog saying &quot;checking&quot; should have appeared.

Why You Had to Refresh:
This is another difference between Firefox and WebKit. Due to my testing when initially loading a page and on subsequent loads of a page with a manifest Firefox will fire the onchecking event. WebKit only fires the onchecking event on subsequent loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149485</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-09-23 13:17:36 -0700</bug_when>
    <thetext>Ahh, you can ignore the &quot;Why You Had to Refresh&quot; section. I did a complete test from scratch and WebKit does correctly fire onchecking on the first load (as per the spec):
http://www.whatwg.org/specs/web-apps/current-work/#event-appcache-checking

But the bug that I talk about here still exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150034</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-25 09:36:03 -0700</bug_when>
    <thetext>Here is what&apos;s going on:
1) As soon as body manifest attribute is processed, application cache update begins, and a zero-timer task to dispatch a checking event is posted for later execution.
2) &lt;script src=&quot;THIS_FILE_DOES_NOT_EXIST&quot;&gt; begins to load, blocking the inline script below that sets applicationCache.onchecking.
3) While THIS_FILE_DOES_NOT_EXIST is being requested, the task from step 1 fires, and the checking event gets dispatched, even though there is no listener set for it yet.
4) Loading finally finishes with a failure, so main document parsing resumes. Onchecking listener gets set, but it&apos;s too late now.

This might actually be correct behavior, I&apos;m not sure yet. And this is not limited to appcache - all the new events that are posted asynchronously can get dispatched even when parsing is paused for an external script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150041</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-09-25 09:50:56 -0700</bug_when>
    <thetext>&gt; This might actually be correct behavior, I&apos;m not sure yet. And this is not
&gt; limited to appcache - all the new events that are posted asynchronously can get
&gt; dispatched even when parsing is paused for an external script.

I&apos;d be worried if this is the correct behavior.   If that is what the spec says then maybe it should be fixed / clarified. A more realistic scenario then the test case I provided is if there is applicationCache logic in the external javascript file. For instance a simple library that interacts with the applicationCache in order to provide users with a custom user interface (as 6.9.4.4 mentions a default User Agent Interface) indicating what is happening.

In this case I wouldn&apos;t want the applicationCache&apos;s checking event to fire before that external script, which would contain handlers for these types of events, is downloaded!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180063</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-01-12 18:16:52 -0800</bug_when>
    <thetext>Following up some recent discussion.

Some discussion was made on the Mailing List:
http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-January/024741.html

Discussion produces the following change:
http://html5.org/tools/web-apps-tracker?from=4581&amp;to=4582

Summary:

&gt; Done. All the events fired during the update process are delayed if the 
&gt; Document whose ApplicationCache they are targetting hasn&apos;t loaded yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184431</commentid>
    <comment_count>5</comment_count>
      <attachid>47373</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-25 15:58:31 -0800</bug_when>
    <thetext>Created attachment 47373
defer events until onload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184434</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-25 16:02:42 -0800</bug_when>
    <thetext>Attachment 47373 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/loader/appcache/ApplicationCacheHost.cpp:253:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184437</commentid>
    <comment_count>7</comment_count>
      <attachid>47374</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-25 16:10:36 -0800</bug_when>
    <thetext>Created attachment 47374
style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184441</commentid>
    <comment_count>8</comment_count>
      <attachid>47375</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-25 16:19:47 -0800</bug_when>
    <thetext>Created attachment 47375
more style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184455</commentid>
    <comment_count>9</comment_count>
      <attachid>47375</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-25 17:36:05 -0800</bug_when>
    <thetext>Comment on attachment 47375
more style fixes

I don&apos;t have the time to deeply look at this right away, but something I noticed while looking through the patch quickly:

 void FrameLoader::handledOnloadEvents()
 {
     m_client-&gt;dispatchDidHandleOnloadEvents();
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+    documentLoader()-&gt;applicationCacheHost()-&gt;didHandleDocumentOnloadEvents();

I don&apos;t think didHandleDocumentOnloadEvents() is a good name - it doesn&apos;t tell anything at all at call site, and only tells a little at implementation. The method name should say what it does.

Did you run existing tests? I&apos;m mildly surprised that none of them broke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184462</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-25 18:06:49 -0800</bug_when>
    <thetext>&gt;  void FrameLoader::handledOnloadEvents()
&gt;  {
&gt;      m_client-&gt;dispatchDidHandleOnloadEvents();
&gt; +#if ENABLE(OFFLINE_WEB_APPLICATIONS)
&gt; +    documentLoader()-&gt;applicationCacheHost()-&gt;didHandleDocumentOnloadEvents();
&gt; 
&gt; I don&apos;t think didHandleDocumentOnloadEvents() is a good name - it doesn&apos;t tell
&gt; anything at all at call site, and only tells a little at implementation. The
&gt; method name should say what it does.

I thought about naming from the point of view of the appcachehost (something along the lines of &apos;enableEventDispatching()&apos;) but ended up sticking to the naming scheme that indicates &apos;did handle onload event&apos; for two reasons...

1) That scheme is used throughout the other classes that get poked after this has happened, ala...
  FrameLoader::handledOnloadEvents()
  FrameLoaderClient::dispatchDidHandleOnloadEvents()

2) That is the specified thing of interest that has to happen prior to deferred events being surfaced into the page. Having the method named in those terms on the ApplicationCacheHost class makes that more clear.

I&apos;m open to suggestions.

&gt; Did you run existing tests? I&apos;m mildly surprised that none of them broke.

Yes, I was pleasantly surprised to see them all pass, but sure enough, they did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184635</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 11:08:57 -0800</bug_when>
    <thetext>&gt; &gt; Did you run existing tests? I&apos;m mildly surprised that none of them broke.
&gt; 
&gt; Yes, I was pleasantly surprised to see them all pass, but sure enough, they
&gt; did.

Wait, I had just run the appcache tests which happily passed. But there are some crashers in the full set of tests in cases where the frameLoader has no documentLoader. New patch coming soon with a test for null which passes the full set of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184638</commentid>
    <comment_count>12</comment_count>
      <attachid>47421</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 11:10:20 -0800</bug_when>
    <thetext>Created attachment 47421
adds a test for a null documentLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184684</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 12:52:46 -0800</bug_when>
    <thetext>Some thoughts about renaming the new methods/members of ApplicationCacheHost...

void stopDeferringEvents();  // also raises the events that have been queued up

bool m_isDeferringEvents;  // initialized to true
Deque&lt;EventID&gt; m_deferredEvents;

wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184702</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 13:16:53 -0800</bug_when>
    <thetext>I think what&apos;s there works for webcore/loader/appcache and chrome/appcache alike. I didn&apos;t see a better hook for &apos;onload has happened&apos; than the one i hooked into.

One concern i have, is it possible that a handler will result in DocumentLoader and its ApplicationCacheHost object being deleted while we&apos;re looping over the queue events and raising them?

Fyi, as coded, this is happening while the document is still &quot;processingLoadEvent()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184796</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 15:42:46 -0800</bug_when>
    <thetext>&gt; One concern i have, is it possible that a handler will result in DocumentLoader
&gt; and its ApplicationCacheHost object being deleted while we&apos;re looping over the
&gt; queue events and raising them?

Well... yes it is possible for that to happen... the following gives the current patch trouble...

&lt;html manifest=&quot;THIS_FILE_DOES_NOT_EXIST.manifest&quot;&gt;
&lt;head&gt;
  &lt;script src=&quot;THIS_FILE_DOES_NOT_EXIST.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
  &lt;script type=&quot;text/javascript&quot;&gt;
    window.applicationCache.onchecking = function() {
        if (window != window.top)
            window.top.killFrame();
    }

    window.applicationCache.onerror = function() {
        throw &quot;crash damnit!&quot;;
    }

    function killFrame() {
        document.body.removeChild(document.getElementsByTagName(&quot;iframe&quot;)[0]);
    }
  &lt;/script&gt;
&lt;/head&gt;
&lt;body onload=&quot;onloadHasBeenCalled = true&quot;&gt;
Do whacky things and try to crash the system.
&lt;iframe src=&quot;deferred-events-try-to-crash.html&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;
&lt;/html&gt;


Some options for how to handle this sort of case.

1) Very directly inform the loop doing the event raising that the instance has been deleted and have it stop looping.
   - put a local bool on the stack, set to true (shouldContinueRaisingDeferredEvents)
   - put a ptr to that local in a data member (generally this ptr value is null,
     only non-null while looping)
   - dtor checks ptr value and if not null sets the value on the stack to &apos;false&apos;
   - loop tests the value on the stack prior to continuing loop

2) AddRef DocumentLoader while running the loop, so we don&apos;t get deleted in the act.

3) Pick off one deferred event at a time and raise it. Go thru the message loop for each one. If deleted, stop.

The first is the most focused way to resolve the problem i&apos;m seeing. The other two change life cycle of instances and/or make event delivery less deterministic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184821</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 16:35:20 -0800</bug_when>
    <thetext>&gt; The first is the most focused way to resolve the problem i&apos;m seeing.

I&apos;ve implemented that first option to deal with the delete while looping, that fix works all right.

I&apos;ll prepare a new patch with that fix, and renaming as outlined earlier, and a new test that tickles the crash i was seeing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184891</commentid>
    <comment_count>17</comment_count>
      <attachid>47484</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 18:46:08 -0800</bug_when>
    <thetext>Created attachment 47484
handles deletion while raising deferred events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184892</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-26 18:50:23 -0800</bug_when>
    <thetext>Attachment 47484 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/loader/appcache/ApplicationCacheHost.cpp:253:  One space before end of line comments  [whitespace/comments] [5]
WebCore/loader/appcache/ApplicationCacheHost.cpp:264:  One space before end of line comments  [whitespace/comments] [5]
WebCore/loader/appcache/ApplicationCacheHost.h:114:  One space before end of line comments  [whitespace/comments] [5]
WebCore/loader/appcache/ApplicationCacheHost.h:122:  One space before end of line comments  [whitespace/comments] [5]
WebKit/chromium/src/ApplicationCacheHost.cpp:218:  One space before end of line comments  [whitespace/comments] [5]
WebKit/chromium/src/ApplicationCacheHost.cpp:229:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 6


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184910</commentid>
    <comment_count>19</comment_count>
      <attachid>47485</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 20:00:52 -0800</bug_when>
    <thetext>Created attachment 47485
removed 6 space characters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185211</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-27 13:59:37 -0800</bug_when>
    <thetext>I&apos;ve also tested a different solution to the the problem with the frame being removed while raising the deferred events. Simply addref the DocumentLoader while running the loop so the DocumentLoader and its ApplicationCacheHost don&apos;t get finally released in that loop.

This passes the layout tests as well and i think is cleaner code. When the frame is removed from its container while iterating over the events, things get detached nicely w/o finally deleting the objects until the loop exits.

I&apos;ll upload a patch with that solution soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185238</commentid>
    <comment_count>21</comment_count>
      <attachid>47566</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-27 15:11:29 -0800</bug_when>
    <thetext>Created attachment 47566
cleaner patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185628</commentid>
    <comment_count>22</comment_count>
      <attachid>47566</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-28 15:34:31 -0800</bug_when>
    <thetext>Comment on attachment 47566
cleaner patch

This looks very good. Two minor nitpicks Michael agreed to address:

I&apos;d have used a Vector, not a Deque - generally, the former is the best solution for most data structures, as well as there aren&apos;t too many items expected. It has simpler housekeeping, avoids executable code bloat, and asymptotic performance characteristics don&apos;t matter yet. In WebKit, Deque is implemented with a Vector anyway.

Also, m_isDeferringEvents should be m_defersEvents for consistency with m_defersCallbacks elsewhere in the code base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185650</commentid>
    <comment_count>23</comment_count>
      <attachid>47658</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-28 17:10:01 -0800</bug_when>
    <thetext>Created attachment 47658
rename a datamember and switch to Vector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185664</commentid>
    <comment_count>24</comment_count>
      <attachid>47658</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-28 17:27:40 -0800</bug_when>
    <thetext>Comment on attachment 47658
rename a datamember and switch to Vector

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185741</commentid>
    <comment_count>25</comment_count>
      <attachid>47658</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-28 22:41:46 -0800</bug_when>
    <thetext>Comment on attachment 47658
rename a datamember and switch to Vector

Clearing flags on attachment: 47658

Committed r54044: &lt;http://trac.webkit.org/changeset/54044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185743</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-28 22:41:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47373</attachid>
            <date>2010-01-25 15:58:31 -0800</date>
            <delta_ts>2010-01-25 16:10:36 -0800</delta_ts>
            <desc>defer events until onload</desc>
            <filename>defer.txt</filename>
            <type>text/plain</type>
            <size>9237</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBJbmZvcm1zIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHRoYXQgb25sb2FkIGhhcyBmaXJlZC4K
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KTogSW5pdGlhbGl6ZSBtX3F1ZXVlRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERlcGVuZGlu
ZywgcXVldWUgb3IgcmFpc2UgdGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmRpZEhhbmRsZURvY3VtZW50T25sb2FkRXZlbnRzKTogUmFpc2UgYW55IHF1
ZXVlZCBldmVudHMgYW5kIHJlc2V0IG1fcXVldWVFdmVudHMuCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6IERlY2xhcmUgYSBuZXcgZGF0YSBtZW1iZXIg
YW5kIG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0Nyw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnRva2VuaXplclByb2Nlc3NlZERhdGEKIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxv
YWRFdmVudHMoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpOworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZGlkSGFuZGxlRG9jdW1lbnRPbmxvYWRF
dmVudHMoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpmcmFtZURldGFjaGVkKCkK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNhY2hlSG9z
dChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpCiAgICAgOiBtX2RvbUFwcGxpY2F0aW9u
Q2FjaGUoMCkKICAgICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCisgICAgLCBt
X3F1ZXVlRXZlbnRzKHRydWUpCiAgICAgLCBtX2NhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91
cCgwKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKQEAgLTIyOSw2ICsyMzAsMTEg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpCiB7
CisgICAgaWYgKG1fcXVldWVFdmVudHMpIHsKKyAgICAgICAgLy8gRXZlbnRzIGFyZSBkZWZlcnJl
ZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX3F1ZXVlZEV2ZW50
cy5hcHBlbmQoaWQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxp
Y2F0aW9uQ2FjaGUpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIG1f
ZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxp
Y2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwpAQCAtMjM2
LDYgKzI0MiwyMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsCiAg
ICAgfQogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaWRIYW5kbGVEb2N1bWVudE9u
bG9hZEV2ZW50cygpCit7CisgICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgRXZlbnRJRCBpZCA9IG1fcXVldWVkRXZlbnRzLmZpcnN0KCk7CisgICAgICAgIG1f
cXVldWVkRXZlbnRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRp
b25DYWNoZSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAg
ICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01B
cHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksZWMpOworICAg
ICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9xdWV1ZUV2ZW50
cyA9IGZhbHNlOworfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRDYW5kaWRhdGVB
cHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkKIHsKICAg
ICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlzaW9uIDUzODEzKQorKysgV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKIAorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEx
MCwxMiArMTExLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRET01B
cHBsaWNhdGlvbkNhY2hlKERPTUFwcGxpY2F0aW9uQ2FjaGUqIGRvbUFwcGxpY2F0aW9uQ2FjaGUp
OwogICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCk7CiAK
KyAgICAgICAgdm9pZCBkaWRIYW5kbGVEb2N1bWVudE9ubG9hZEV2ZW50cygpOworCiAgICAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAgICAgICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9jdW1lbnRMb2Fk
ZXI7IH0KIAogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBtX2RvbUFwcGxpY2F0aW9uQ2Fj
aGU7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOworICAgICAgICBi
b29sIG1fcXVldWVFdmVudHM7CisgICAgICAgIERlcXVlPEV2ZW50SUQ+IG1fcXVldWVkRXZlbnRz
OwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlSG9zdEludGVybmFsOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgxNykK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wMS0yNSAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNh
dGlvbkNhY2hlIGV2ZW50cyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgRG9jdW1lbnQg
b25sb2FkIGhhcyBmaXJlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI5NjkwCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KTogSW5pdGlhbGl6ZSBtX3F1ZXVlRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERl
cGVuZGluZywgcXVldWUgb3IgcmFpc2UgdGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmRpZEhhbmRsZURvY3VtZW50T25sb2FkRXZlbnRzKTogUmFpc2Ug
YW55IHF1ZXVlZCBldmVudHMgYW5kIHJlc2V0IG1fcXVldWVFdmVudHMuCisKIDIwMTAtMDEtMjIg
IEVsbGlvdCBHbGF5c2hlciAgPGVyZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNo
ZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQogICAgIDogbV9kb21BcHBsaWNh
dGlvbkNhY2hlKDApCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQorICAg
ICwgbV9xdWV1ZUV2ZW50cyh0cnVlKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsK
IH0KQEAgLTE5NiwxNSArMTk3LDMzIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERP
TUFwcGxpY2EKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRp
b25DYWNoZShFdmVudElEIGlkKQogeworICAgIGlmIChtX3F1ZXVlRXZlbnRzKSB7CisgICAgICAg
IC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBmaXJlZC4K
KyAgICAgICAgbV9xdWV1ZWRFdmVudHMuYXBwZW5kKGlkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQo
Ci0gICAgICAgICAgICBFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRU
eXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICAgIGVjKTsKKyAgICAgICAgbV9kb21B
cHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRp
b25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7CiAgICAgICAgIEFT
U0VSVCghZWMpOwogICAgIH0KIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZGlkSGFu
ZGxlRG9jdW1lbnRPbmxvYWRFdmVudHMoKQoreworICAgIHdoaWxlICghbV9xdWV1ZWRFdmVudHMu
aXNFbXB0eSgpKSB7CisgICAgICBFdmVudElEIGlkID0gbV9xdWV1ZWRFdmVudHMuZmlyc3QoKTsK
KyAgICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICAgIGlmIChtX2RvbUFw
cGxpY2F0aW9uQ2FjaGUpIHsKKyAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShE
T01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsK
KyAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgIH0KKyAgICB9CisgICAgbV9xdWV1ZUV2ZW50
cyA9IGZhbHNlOworfQorCiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpzdGF0dXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2ludGVybmFsID8gc3Rh
dGljX2Nhc3Q8U3RhdHVzPihtX2ludGVybmFsLT5tX291dGVySG9zdC0+c3RhdHVzKCkpIDogVU5D
QUNIRUQ7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgxNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAxLTI1ICBNaWNoYWVsIE5v
cmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgZXZlbnRzIHNob3VsZCBiZSBk
ZWZlcnJlZCB1bnRpbCBhZnRlciBEb2N1bWVudCBvbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2OTAKKworICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDEtMjUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCB0cml2aWFsIGJhc2VsaW5lIHVwZGF0ZXMuCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZl
cnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIgQEAKK1Rlc3QgdGhhdCBBcHBpY2F0aW9uQ2FjaGUgZXZlbnRzIGFyZSBk
ZWZlcnJlZCB1bnRpbCBhZnRlciBvbmxvYWQgaGFzIGJlZW4gZmlyZWQuCitTVUNDRVNTCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZl
bnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2RlZmVycmVkLWV2ZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACis8aHRt
bCBtYW5pZmVzdD0iVEhJU19GSUxFX0RPRVNfTk9UX0VYSVNULm1hbmlmZXN0Ij4KKzxoZWFkPgor
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFyIG9ubG9hZEhhc0JlZW5D
YWxsZWQgPSBmYWxzZTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYXBw
bGljYXRpb25DYWNoZS5vbmNoZWNraW5nID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChvbmxv
YWRIYXNCZWVuQ2FsbGVkKQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9ICJTVUNDRVNTIgorICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KKyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJUSElTX0ZJTEVfRE9FU19O
T1RfRVhJU1QuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9Im9ubG9hZEhhc0JlZW5DYWxsZWQgPSB0cnVlIj4KK1Rlc3QgdGhhdCBBcHBp
Y2F0aW9uQ2FjaGUgZXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBvbmxvYWQgaGFzIGJl
ZW4gZmlyZWQuCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47374</attachid>
            <date>2010-01-25 16:10:36 -0800</date>
            <delta_ts>2010-01-25 16:19:47 -0800</delta_ts>
            <desc>style fix</desc>
            <filename>defer2.txt</filename>
            <type>text/plain</type>
            <size>9238</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBJbmZvcm1zIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHRoYXQgb25sb2FkIGhhcyBmaXJlZC4K
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KTogSW5pdGlhbGl6ZSBtX3F1ZXVlRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERlcGVuZGlu
ZywgcXVldWUgb3IgcmFpc2UgdGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmRpZEhhbmRsZURvY3VtZW50T25sb2FkRXZlbnRzKTogUmFpc2UgYW55IHF1
ZXVlZCBldmVudHMgYW5kIHJlc2V0IG1fcXVldWVFdmVudHMuCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6IERlY2xhcmUgYSBuZXcgZGF0YSBtZW1iZXIg
YW5kIG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0Nyw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnRva2VuaXplclByb2Nlc3NlZERhdGEKIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxv
YWRFdmVudHMoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpOworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZGlkSGFuZGxlRG9jdW1lbnRPbmxvYWRF
dmVudHMoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpmcmFtZURldGFjaGVkKCkK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNhY2hlSG9z
dChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpCiAgICAgOiBtX2RvbUFwcGxpY2F0aW9u
Q2FjaGUoMCkKICAgICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCisgICAgLCBt
X3F1ZXVlRXZlbnRzKHRydWUpCiAgICAgLCBtX2NhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91
cCgwKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKQEAgLTIyOSw2ICsyMzAsMTEg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpCiB7
CisgICAgaWYgKG1fcXVldWVFdmVudHMpIHsKKyAgICAgICAgLy8gRXZlbnRzIGFyZSBkZWZlcnJl
ZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX3F1ZXVlZEV2ZW50
cy5hcHBlbmQoaWQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxp
Y2F0aW9uQ2FjaGUpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIG1f
ZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxp
Y2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwpAQCAtMjM2
LDYgKzI0MiwyMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsCiAg
ICAgfQogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaWRIYW5kbGVEb2N1bWVudE9u
bG9hZEV2ZW50cygpCit7CisgICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgRXZlbnRJRCBpZCA9IG1fcXVldWVkRXZlbnRzLmZpcnN0KCk7CisgICAgICAgIG1f
cXVldWVkRXZlbnRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRp
b25DYWNoZSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAg
ICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01B
cHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICB9CisgICAgfQorICAgIG1fcXVldWVFdmVu
dHMgPSBmYWxzZTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0Q2FuZGlkYXRl
QXBwbGljYXRpb25DYWNoZUdyb3VwKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXApCiB7CiAg
ICAgQVNTRVJUKCFtX2FwcGxpY2F0aW9uQ2FjaGUpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiA1MzgxMykKKysrIFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCiAKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0x
MTAsMTIgKzExMSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RE9N
QXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBsaWNhdGlvbkNhY2hl
KTsKICAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpOwog
CisgICAgICAgIHZvaWQgZGlkSGFuZGxlRG9jdW1lbnRPbmxvYWRFdmVudHMoKTsKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOwogICAgICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSB7IHJldHVybiBtX2RvY3VtZW50TG9h
ZGVyOyB9CiAKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNh
Y2hlOwogICAgICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKKyAgICAgICAg
Ym9vbCBtX3F1ZXVlRXZlbnRzOworICAgICAgICBEZXF1ZTxFdmVudElEPiBtX3F1ZXVlZEV2ZW50
czsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBmcmllbmQgY2xhc3MgQXBwbGlj
YXRpb25DYWNoZUhvc3RJbnRlcm5hbDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTM4MTcp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGlj
YXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVyIERvY3VtZW50
IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNh
Y2hlSG9zdCk6IEluaXRpYWxpemUgbV9xdWV1ZUV2ZW50cyB0byB0cnVlLgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUpOiBE
ZXBlbmRpbmcsIHF1ZXVlIG9yIHJhaXNlIHRoZSBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpkaWRIYW5kbGVEb2N1bWVudE9ubG9hZEV2ZW50cyk6IFJhaXNl
IGFueSBxdWV1ZWQgZXZlbnRzIGFuZCByZXNldCBtX3F1ZXVlRXZlbnRzLgorCiAyMDEwLTAxLTIy
ICBFbGxpb3QgR2xheXNoZXIgIDxlcmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9tQXBwbGlj
YXRpb25DYWNoZSgwKQogICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKKyAg
ICAsIG1fcXVldWVFdmVudHModHJ1ZSkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudExvYWRlcik7
CiB9CkBAIC0xOTYsMTUgKzE5NywzMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRE
T01BcHBsaWNhCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0
aW9uQ2FjaGUoRXZlbnRJRCBpZCkKIHsKKyAgICBpZiAobV9xdWV1ZUV2ZW50cykgeworICAgICAg
ICAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGRvY3VtZW50Lm9ubG9hZCBoYXMgZmlyZWQu
CisgICAgICAgIG1fcXVldWVkRXZlbnRzLmFwcGVuZChpZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50
KAotICAgICAgICAgICAgRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50
VHlwZShpZCksIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgICBlYyk7CisgICAgICAgIG1fZG9t
QXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0
aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwogICAgICAgICBB
U1NFUlQoIWVjKTsKICAgICB9CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpZEhh
bmRsZURvY3VtZW50T25sb2FkRXZlbnRzKCkKK3sKKyAgICB3aGlsZSAoIW1fcXVldWVkRXZlbnRz
LmlzRW1wdHkoKSkgeworICAgICAgRXZlbnRJRCBpZCA9IG1fcXVldWVkRXZlbnRzLmZpcnN0KCk7
CisgICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmVGaXJzdCgpOworCisgICAgICBpZiAobV9kb21B
cHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
RE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7
CisgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICB9CisgICAgfQorICAgIG1fcXVldWVFdmVu
dHMgPSBmYWxzZTsKK30KKwogQXBwbGljYXRpb25DYWNoZUhvc3Q6OlN0YXR1cyBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6c3RhdHVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbCA/IHN0
YXRpY19jYXN0PFN0YXR1cz4obV9pbnRlcm5hbC0+bV9vdXRlckhvc3QtPnN0YXR1cygpKSA6IFVO
Q0FDSEVEOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM4MTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMS0yNSAgTWljaGFlbCBO
b3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIGV2ZW50cyBzaG91bGQgYmUg
ZGVmZXJyZWQgdW50aWwgYWZ0ZXIgRG9jdW1lbnQgb25sb2FkIGhhcyBmaXJlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NjkwCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWw6IEFk
ZGVkLgorCiAyMDEwLTAxLTI1ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdHJpdmlhbCBiYXNlbGluZSB1cGRhdGVzLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVm
ZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyIEBACitUZXN0IHRoYXQgQXBwaWNhdGlvbkNhY2hlIGV2ZW50cyBhcmUg
ZGVmZXJyZWQgdW50aWwgYWZ0ZXIgb25sb2FkIGhhcyBiZWVuIGZpcmVkLgorU1VDQ0VTUwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2
ZW50cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9kZWZlcnJlZC1ldmVudHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorPGh0
bWwgbWFuaWZlc3Q9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5tYW5pZmVzdCI+Cis8aGVhZD4K
KyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBvbmxvYWRIYXNCZWVu
Q2FsbGVkID0gZmFsc2U7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmFw
cGxpY2F0aW9uQ2FjaGUub25jaGVja2luZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAob25s
b2FkSGFzQmVlbkNhbGxlZCkKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyIKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICB9CisgIDwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iVEhJU19GSUxFX0RPRVNf
Tk9UX0VYSVNULmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJvbmxvYWRIYXNCZWVuQ2FsbGVkID0gdHJ1ZSI+CitUZXN0IHRoYXQgQXBw
aWNhdGlvbkNhY2hlIGV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgb25sb2FkIGhhcyBi
ZWVuIGZpcmVkLgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47375</attachid>
            <date>2010-01-25 16:19:47 -0800</date>
            <delta_ts>2010-01-26 11:10:20 -0800</delta_ts>
            <desc>more style fixes</desc>
            <filename>defer3.txt</filename>
            <type>text/plain</type>
            <size>9252</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBJbmZvcm1zIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHRoYXQgb25sb2FkIGhhcyBmaXJlZC4K
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KTogSW5pdGlhbGl6ZSBtX3F1ZXVlRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERlcGVuZGlu
ZywgcXVldWUgb3IgcmFpc2UgdGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmRpZEhhbmRsZURvY3VtZW50T25sb2FkRXZlbnRzKTogUmFpc2UgYW55IHF1
ZXVlZCBldmVudHMgYW5kIHJlc2V0IG1fcXVldWVFdmVudHMuCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6IERlY2xhcmUgYSBuZXcgZGF0YSBtZW1iZXIg
YW5kIG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0Nyw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnRva2VuaXplclByb2Nlc3NlZERhdGEKIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxv
YWRFdmVudHMoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpOworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZGlkSGFuZGxlRG9jdW1lbnRPbmxvYWRF
dmVudHMoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpmcmFtZURldGFjaGVkKCkK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNhY2hlSG9z
dChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpCiAgICAgOiBtX2RvbUFwcGxpY2F0aW9u
Q2FjaGUoMCkKICAgICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCisgICAgLCBt
X3F1ZXVlRXZlbnRzKHRydWUpCiAgICAgLCBtX2NhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91
cCgwKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKQEAgLTIyOSw2ICsyMzAsMTEg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpCiB7
CisgICAgaWYgKG1fcXVldWVFdmVudHMpIHsKKyAgICAgICAgLy8gRXZlbnRzIGFyZSBkZWZlcnJl
ZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX3F1ZXVlZEV2ZW50
cy5hcHBlbmQoaWQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxp
Y2F0aW9uQ2FjaGUpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIG1f
ZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxp
Y2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwpAQCAtMjM2
LDYgKzI0MiwyMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsCiAg
ICAgfQogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaWRIYW5kbGVEb2N1bWVudE9u
bG9hZEV2ZW50cygpCit7CisgICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgRXZlbnRJRCBpZCA9IG1fcXVldWVkRXZlbnRzLmZpcnN0KCk7CisgICAgICAgIG1f
cXVldWVkRXZlbnRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRp
b25DYWNoZSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAg
ICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01B
cHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICB9CisgICAgfQorICAgIG1fcXVldWVFdmVu
dHMgPSBmYWxzZTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0Q2FuZGlkYXRl
QXBwbGljYXRpb25DYWNoZUdyb3VwKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXApCiB7CiAg
ICAgQVNTRVJUKCFtX2FwcGxpY2F0aW9uQ2FjaGUpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiA1MzgxMykKKysrIFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCiAKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0x
MTAsMTIgKzExMSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RE9N
QXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBsaWNhdGlvbkNhY2hl
KTsKICAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpOwog
CisgICAgICAgIHZvaWQgZGlkSGFuZGxlRG9jdW1lbnRPbmxvYWRFdmVudHMoKTsKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOwogICAgICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSB7IHJldHVybiBtX2RvY3VtZW50TG9h
ZGVyOyB9CiAKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNh
Y2hlOwogICAgICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKKyAgICAgICAg
Ym9vbCBtX3F1ZXVlRXZlbnRzOworICAgICAgICBEZXF1ZTxFdmVudElEPiBtX3F1ZXVlZEV2ZW50
czsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBmcmllbmQgY2xhc3MgQXBwbGlj
YXRpb25DYWNoZUhvc3RJbnRlcm5hbDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTM4MTcp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGlj
YXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVyIERvY3VtZW50
IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpBcHBsaWNhdGlvbkNh
Y2hlSG9zdCk6IEluaXRpYWxpemUgbV9xdWV1ZUV2ZW50cyB0byB0cnVlLgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUpOiBE
ZXBlbmRpbmcsIHF1ZXVlIG9yIHJhaXNlIHRoZSBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpkaWRIYW5kbGVEb2N1bWVudE9ubG9hZEV2ZW50cyk6IFJhaXNl
IGFueSBxdWV1ZWQgZXZlbnRzIGFuZCByZXNldCBtX3F1ZXVlRXZlbnRzLgorCiAyMDEwLTAxLTIy
ICBFbGxpb3QgR2xheXNoZXIgIDxlcmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9tQXBwbGlj
YXRpb25DYWNoZSgwKQogICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKKyAg
ICAsIG1fcXVldWVFdmVudHModHJ1ZSkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudExvYWRlcik7
CiB9CkBAIC0xOTYsMTUgKzE5NywzMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRE
T01BcHBsaWNhCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0
aW9uQ2FjaGUoRXZlbnRJRCBpZCkKIHsKKyAgICBpZiAobV9xdWV1ZUV2ZW50cykgeworICAgICAg
ICAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGRvY3VtZW50Lm9ubG9hZCBoYXMgZmlyZWQu
CisgICAgICAgIG1fcXVldWVkRXZlbnRzLmFwcGVuZChpZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50
KAotICAgICAgICAgICAgRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50
VHlwZShpZCksIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgICBlYyk7CisgICAgICAgIG1fZG9t
QXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0
aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwogICAgICAgICBB
U1NFUlQoIWVjKTsKICAgICB9CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpZEhh
bmRsZURvY3VtZW50T25sb2FkRXZlbnRzKCkKK3sKKyAgICB3aGlsZSAoIW1fcXVldWVkRXZlbnRz
LmlzRW1wdHkoKSkgeworICAgICAgICBFdmVudElEIGlkID0gbV9xdWV1ZWRFdmVudHMuZmlyc3Qo
KTsKKyAgICAgICAgbV9xdWV1ZWRFdmVudHMucmVtb3ZlRmlyc3QoKTsKKworICAgICAgICBpZiAo
bV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZh
bHNlKSwgZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbV9xdWV1ZUV2ZW50cyA9IGZhbHNlOworfQorCiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6U3Rh
dHVzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdGF0dXMoKSBjb25zdAogewogICAgIHJldHVybiBt
X2ludGVybmFsID8gc3RhdGljX2Nhc3Q8U3RhdHVzPihtX2ludGVybmFsLT5tX291dGVySG9zdC0+
c3RhdHVzKCkpIDogVU5DQUNIRUQ7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgxNykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAx
LTI1ICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgZXZl
bnRzIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBEb2N1bWVudCBvbmxvYWQgaGFzIGZp
cmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2
OTAKKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1l
dmVudHMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjUgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6
a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB0cml2aWFsIGJhc2VsaW5l
IHVwZGF0ZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVk
LWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1Rlc3QgdGhhdCBBcHBpY2F0aW9uQ2Fj
aGUgZXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBvbmxvYWQgaGFzIGJlZW4gZmlyZWQu
CitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVk
LWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI0IEBACis8aHRtbCBtYW5pZmVzdD0iVEhJU19GSUxFX0RPRVNfTk9UX0VYSVNULm1hbmlm
ZXN0Ij4KKzxoZWFkPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFy
IG9ubG9hZEhhc0JlZW5DYWxsZWQgPSBmYWxzZTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICB3aW5kb3cuYXBwbGljYXRpb25DYWNoZS5vbmNoZWNraW5nID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmIChvbmxvYWRIYXNCZWVuQ2FsbGVkKQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJTVUNDRVNTIgorICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJU
SElTX0ZJTEVfRE9FU19OT1RfRVhJU1QuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZEhhc0JlZW5DYWxsZWQgPSB0cnVlIj4K
K1Rlc3QgdGhhdCBBcHBpY2F0aW9uQ2FjaGUgZXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRl
ciBvbmxvYWQgaGFzIGJlZW4gZmlyZWQuCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47421</attachid>
            <date>2010-01-26 11:10:20 -0800</date>
            <delta_ts>2010-01-26 20:00:52 -0800</delta_ts>
            <desc>adds a test for a null documentLoader</desc>
            <filename>defer4.txt</filename>
            <type>text/plain</type>
            <size>9284</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBJbmZvcm1zIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHRoYXQgb25sb2FkIGhhcyBmaXJlZC4K
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KTogSW5pdGlhbGl6ZSBtX3F1ZXVlRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERlcGVuZGlu
ZywgcXVldWUgb3IgcmFpc2UgdGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmRpZEhhbmRsZURvY3VtZW50T25sb2FkRXZlbnRzKTogUmFpc2UgYW55IHF1
ZXVlZCBldmVudHMgYW5kIHJlc2V0IG1fcXVldWVFdmVudHMuCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6IERlY2xhcmUgYSBuZXcgZGF0YSBtZW1iZXIg
YW5kIG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0NywxMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjp0b2tlbml6ZXJQcm9jZXNzZWREYXRhCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25s
b2FkRXZlbnRzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVu
dHMoKTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIGlmIChkb2N1
bWVudExvYWRlcigpKQorICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLT5kaWRIYW5kbGVEb2N1bWVudE9ubG9hZEV2ZW50cygpOworI2VuZGlmCiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXI6OmZyYW1lRGV0YWNoZWQoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNTM4MTMpCisr
KyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlcikKICAgICA6IG1fZG9tQXBwbGljYXRpb25DYWNoZSgwKQogICAgICwgbV9kb2N1bWVu
dExvYWRlcihkb2N1bWVudExvYWRlcikKKyAgICAsIG1fcXVldWVFdmVudHModHJ1ZSkKICAgICAs
IG1fY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKDApCiB7CiAgICAgQVNTRVJUKG1fZG9j
dW1lbnRMb2FkZXIpOwpAQCAtMjI5LDYgKzIzMCwxMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpzZXRET01BcHBsaWNhCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURP
TUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCkKIHsKKyAgICBpZiAobV9xdWV1ZUV2ZW50cykg
eworICAgICAgICAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGRvY3VtZW50Lm9ubG9hZCBo
YXMgZmlyZWQuCisgICAgICAgIG1fcXVldWVkRXZlbnRzLmFwcGVuZChpZCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUo
aWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7CkBAIC0yMzYsNiArMjQyLDIxIEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGwKICAgICB9CiB9CiAKK3ZvaWQgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OmRpZEhhbmRsZURvY3VtZW50T25sb2FkRXZlbnRzKCkKK3sKKyAgICB3aGls
ZSAoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBFdmVudElEIGlkID0gbV9x
dWV1ZWRFdmVudHMuZmlyc3QoKTsKKyAgICAgICAgbV9xdWV1ZWRFdmVudHMucmVtb3ZlRmlyc3Qo
KTsKKworICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRU
eXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbV9xdWV1ZUV2ZW50cyA9IGZhbHNlOworfQorCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25D
YWNoZSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgJKHJldmlzaW9uIDUzODEzKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIAorI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTExMCwxMiArMTExLDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERPTUFwcGxp
Y2F0aW9uQ2FjaGUqIGRvbUFwcGxpY2F0aW9uQ2FjaGUpOwogICAgICAgICB2b2lkIG5vdGlmeURP
TUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCk7CiAKKyAgICAgICAgdm9pZCBkaWRIYW5kbGVE
b2N1bWVudE9ubG9hZEV2ZW50cygpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0Fw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlcigpIHsgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXI7IH0KIAogICAgICAgICBET01BcHBs
aWNhdGlvbkNhY2hlKiBtX2RvbUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgICAgIERvY3VtZW50TG9h
ZGVyKiBtX2RvY3VtZW50TG9hZGVyOworICAgICAgICBib29sIG1fcXVldWVFdmVudHM7CisgICAg
ICAgIERlcXVlPEV2ZW50SUQ+IG1fcXVldWVkRXZlbnRzOwogCiAjaWYgUExBVEZPUk0oQ0hST01J
VU0pCiAgICAgICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgxNykKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMS0yNSAgTWljaGFl
bCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIGV2ZW50cyBzaG91bGQg
YmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgRG9jdW1lbnQgb25sb2FkIGhhcyBmaXJlZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NjkwCisKKyAgICAg
ICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KTogSW5pdGlhbGl6ZSBtX3F1
ZXVlRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERlcGVuZGluZywgcXVldWUgb3IgcmFpc2Ug
dGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpZEhh
bmRsZURvY3VtZW50T25sb2FkRXZlbnRzKTogUmFpc2UgYW55IHF1ZXVlZCBldmVudHMgYW5kIHJl
c2V0IG1fcXVldWVFdmVudHMuCisKIDIwMTAtMDEtMjIgIEVsbGlvdCBHbGF5c2hlciAgPGVyZ0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24g
NTM4MTMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyKQogICAgIDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKDApCiAgICAgLCBtX2Rv
Y3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQorICAgICwgbV9xdWV1ZUV2ZW50cyh0cnVlKQog
ewogICAgIEFTU0VSVChtX2RvY3VtZW50TG9hZGVyKTsKIH0KQEAgLTE5NiwxNSArMTk3LDMzIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2EKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElEIGlkKQogewor
ICAgIGlmIChtX3F1ZXVlRXZlbnRzKSB7CisgICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQg
dW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBmaXJlZC4KKyAgICAgICAgbV9xdWV1ZWRFdmVudHMu
YXBwZW5kKGlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAobV9kb21BcHBsaWNh
dGlvbkNhY2hlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBtX2Rv
bUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoCi0gICAgICAgICAgICBFdmVudDo6Y3Jl
YXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwK
LSAgICAgICAgICAgIGVjKTsKKyAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQp
LCBmYWxzZSwgZmFsc2UpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIH0KIAor
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZGlkSGFuZGxlRG9jdW1lbnRPbmxvYWRFdmVudHMo
KQoreworICAgIHdoaWxlICghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIEV2
ZW50SUQgaWQgPSBtX3F1ZXVlZEV2ZW50cy5maXJzdCgpOworICAgICAgICBtX3F1ZXVlZEV2ZW50
cy5yZW1vdmVGaXJzdCgpOworCisgICAgICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsK
KyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgbV9kb21BcHBs
aWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25D
YWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgICAgICAgICBB
U1NFUlQoIWVjKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3F1ZXVlRXZlbnRzID0gZmFsc2U7
Cit9CisKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OnN0YXR1cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwgPyBzdGF0aWNfY2FzdDxT
dGF0dXM+KG1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LT5zdGF0dXMoKSkgOiBVTkNBQ0hFRDsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDUzODE3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1p
Y2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVu
dGlsIGFmdGVyIERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy5odG1sOiBBZGRlZC4KKwogMjAx
MC0wMS0yNSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHRyaXZpYWwgYmFzZWxpbmUgdXBkYXRlcy4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2RlZmVycmVkLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMiBAQAorVGVzdCB0aGF0IEFwcGljYXRpb25DYWNoZSBldmVudHMgYXJlIGRlZmVycmVkIHVu
dGlsIGFmdGVyIG9ubG9hZCBoYXMgYmVlbiBmaXJlZC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQt
ZXZlbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sIG1hbmlmZXN0
PSJUSElTX0ZJTEVfRE9FU19OT1RfRVhJU1QubWFuaWZlc3QiPgorPGhlYWQ+CisgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICB2YXIgb25sb2FkSGFzQmVlbkNhbGxlZCA9IGZh
bHNlOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5hcHBsaWNhdGlvbkNh
Y2hlLm9uY2hlY2tpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKG9ubG9hZEhhc0JlZW5D
YWxsZWQpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5u
ZXJIVE1MID0gIlNVQ0NFU1MiCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
fQorICA8L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ib25sb2FkSGFzQmVlbkNhbGxlZCA9IHRydWUiPgorVGVzdCB0aGF0IEFwcGljYXRpb25DYWNo
ZSBldmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGFmdGVyIG9ubG9hZCBoYXMgYmVlbiBmaXJlZC4K
KzxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47484</attachid>
            <date>2010-01-26 18:46:08 -0800</date>
            <delta_ts>2010-01-26 20:00:52 -0800</delta_ts>
            <desc>handles deletion while raising deferred events</desc>
            <filename>defer5.txt</filename>
            <type>text/plain</type>
            <size>13052</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBUZWxscyB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QgdG8gc3RvcCBkZWZlcnJpbmcgZXZl
bnRzLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNo
ZUhvc3QpOiBJbml0aWFsaXplIG1faXNEZWZlcnJpbmdFdmVudHMgdG8gdHJ1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hl
KTogRGVwZW5kaW5nLCBkZWZlciBvciByYWlzZSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cyk6IFJhaXNlIGFueSBk
ZWZlcnJlZCBldmVudHMgYW5kIHJlc2V0IHRoZSBmbGFnLgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOiBEZWNsYXJlIG5ldyBkYXRhIG1lbWJlcnMgYW5k
IG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojp0b2tlbml6ZXJQcm9jZXNzZWREYXRhCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2Fk
RXZlbnRzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIGlmIChkb2N1bWVu
dExvYWRlcigpKQorICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5zdG9wRGVmZXJyaW5nRXZlbnRzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZnJhbWVEZXRhY2hlZCgpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA1MzgxMykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
QXBwbGljYXRpb25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQogICAg
IDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKDApCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3Vt
ZW50TG9hZGVyKQorICAgICwgbV9pc0RlZmVycmluZ0V2ZW50cyh0cnVlKQorICAgICwgbV9pc1Jh
aXNpbmdEZWZlcnJlZEV2ZW50cyhmYWxzZSkKKyAgICAsIG1fc2hvdWxkQ29udGludWVSYWlzaW5n
RGVmZXJyZWRFdmVudHMoMCkKICAgICAsIG1fY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3Vw
KDApCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRMb2FkZXIpOwpAQCAtNTMsNiArNTYsOSBAQCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNoZUhvCiAKIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0Ojp+QXBwbGljYXRpb25DYWNoZUhvc3QoKQogeworICAgIGlmIChtX2lzUmFpc2luZ0Rl
ZmVycmVkRXZlbnRzKQorICAgICAgKm1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVu
dHMgPSBmYWxzZTsKKwogICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGUpCiAgICAgICAgIG1fYXBw
bGljYXRpb25DYWNoZS0+Z3JvdXAoKS0+ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIobV9kb2N1
bWVudExvYWRlcik7CiAgICAgZWxzZSBpZiAobV9jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3Jv
dXApCkBAIC0yMjksNiArMjM1LDExIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERP
TUFwcGxpY2EKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRp
b25DYWNoZShFdmVudElEIGlkKQogeworICAgIGlmIChtX2lzRGVmZXJyaW5nRXZlbnRzKSB7Cisg
ICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBm
aXJlZC4KKyAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKICAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlk
KSwgZmFsc2UsIGZhbHNlKSwgZWMpOwpAQCAtMjM2LDYgKzI0NywyOCBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsCiAgICAgfQogfQogCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKK3sKKyAgICBib29sIHNob3VsZENvbnRp
bnVlID0gdHJ1ZTsKKyAgICBtX3Nob3VsZENvbnRpbnVlUmFpc2luZ0RlZmVycmVkRXZlbnRzID0g
JnNob3VsZENvbnRpbnVlOyAgLy8gc28gdGhlIGR0b3IgY2FuIHNldCB0byBmYWxzZQorICAgIG1f
aXNSYWlzaW5nRGVmZXJyZWRFdmVudHMgPSB0cnVlOworICAgIHdoaWxlICghbV9kZWZlcnJlZEV2
ZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgRXZlbnRJRCBpZCA9IG1fZGVmZXJyZWRFdmVudHMu
Zmlyc3QoKTsKKyAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5yZW1vdmVGaXJzdCgpOworICAgICAg
ICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFs
c2UsIGZhbHNlKSwgZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFzaG91bGRDb250aW51ZSkKKyAgICAgICAgICAgIHJldHVybjsgIC8vIHdlJ3Zl
IGJlZW4gZGVsZXRlZAorICAgIH0KKyAgICBtX2lzUmFpc2luZ0RlZmVycmVkRXZlbnRzID0gZmFs
c2U7CisgICAgbV9zaG91bGRDb250aW51ZVJhaXNpbmdEZWZlcnJlZEV2ZW50cyA9IDA7CisKKyAg
ICBtX2lzRGVmZXJyaW5nRXZlbnRzID0gZmFsc2U7Cit9CisKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OnNldENhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cChBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwKQogewogICAgIEFTU0VSVCghbV9hcHBsaWNhdGlvbkNhY2hlKTsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkocmV2
aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtMTEwLDEyICsxMTEsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSog
ZG9tQXBwbGljYXRpb25DYWNoZSk7CiAgICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25D
YWNoZShFdmVudElEIGlkKTsKIAorICAgICAgICB2b2lkIHN0b3BEZWZlcnJpbmdFdmVudHMoKTsg
IC8vIEFsc28gcmFpc2VzIHRoZSBldmVudHMgdGhhdCBoYXZlIGJlZW4gcXVldWVkIHVwLgorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAg
ICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9jdW1l
bnRMb2FkZXI7IH0KIAogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBtX2RvbUFwcGxpY2F0
aW9uQ2FjaGU7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOworICAg
ICAgICBib29sIG1faXNEZWZlcnJpbmdFdmVudHM7ICAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVu
dGlsIGFmdGVyIGRvY3VtZW50IG9ubG9hZC4KKyAgICAgICAgRGVxdWU8RXZlbnRJRD4gbV9kZWZl
cnJlZEV2ZW50czsKKyAgICAgICAgYm9vbCBtX2lzUmFpc2luZ0RlZmVycmVkRXZlbnRzOworICAg
ICAgICBib29sKiBtX3Nob3VsZENvbnRpbnVlUmFpc2luZ0RlZmVycmVkRXZlbnRzOwogCiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdEludGVybmFsOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgxNykKKysrIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wMS0yNSAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
IGV2ZW50cyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgRG9jdW1lbnQgb25sb2FkIGhh
cyBmaXJlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5NjkwCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KTog
SW5pdGlhbGl6ZSBtX2lzRGVmZXJyaW5nRXZlbnRzIHRvIHRydWUuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZSk6IERlcGVu
ZGluZywgZGVmZXIgb3IgcmFpc2UgdGhlIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUhvc3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMpOiBSYWlzZSBhbnkgZGVmZXJyZWQg
ZXZlbnRzIGFuZCByZXNldCB0aGUgZmxhZy4KKwogMjAxMC0wMS0yMiAgRWxsaW90IEdsYXlzaGVy
ICA8ZXJnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4K
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShy
ZXZpc2lvbiA1MzgxMykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsMTcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9tQXBwbGljYXRpb25DYWNoZSgwKQog
ICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKKyAgICAsIG1faXNEZWZlcnJp
bmdFdmVudHModHJ1ZSkKKyAgICAsIG1faXNSYWlzaW5nRGVmZXJyZWRFdmVudHMoZmFsc2UpCisg
ICAgLCBtX3Nob3VsZENvbnRpbnVlUmFpc2luZ0RlZmVycmVkRXZlbnRzKDApCiB7CiAgICAgQVNT
RVJUKG1fZG9jdW1lbnRMb2FkZXIpOwogfQogCiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6fkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkKIHsKKyAgICBpZiAobV9pc1JhaXNpbmdEZWZlcnJlZEV2ZW50cykK
KyAgICAgICptX3Nob3VsZENvbnRpbnVlUmFpc2luZ0RlZmVycmVkRXZlbnRzID0gZmFsc2U7CiB9
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZE1haW5SZXNvdXJjZShSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN1YnN0aXR1dGVEYXRhJikKQEAgLTE5NiwxNSArMjAxLDM5
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2EKIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElEIGlkKQog
eworICAgIGlmIChtX2lzRGVmZXJyaW5nRXZlbnRzKSB7CisgICAgICAgIG1fZGVmZXJyZWRFdmVu
dHMuYXBwZW5kKGlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAobV9kb21BcHBs
aWNhdGlvbkNhY2hlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBt
X2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoCi0gICAgICAgICAgICBFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwKLSAgICAgICAgICAgIGVjKTsKKyAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUo
aWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIH0K
IAordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygpCit7Cisg
ICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRydWU7CisgICAgbV9zaG91bGRDb250aW51ZVJhaXNp
bmdEZWZlcnJlZEV2ZW50cyA9ICZzaG91bGRDb250aW51ZTsgIC8vIHNvIHRoZSBkdG9yIGNhbiBz
ZXQgdG8gZmFsc2UKKyAgICBtX2lzUmFpc2luZ0RlZmVycmVkRXZlbnRzID0gdHJ1ZTsKKyAgICB3
aGlsZSAoIW1fZGVmZXJyZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIEV2ZW50SUQgaWQg
PSBtX2RlZmVycmVkRXZlbnRzLmZpcnN0KCk7CisgICAgICAgIG1fZGVmZXJyZWRFdmVudHMucmVt
b3ZlRmlyc3QoKTsKKyAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICBtX2RvbUFwcGxpY2F0aW9u
Q2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0
b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
ZWMpOworICAgICAgICB9CisgICAgICAgIGlmICghc2hvdWxkQ29udGludWUpCisgICAgICAgICAg
ICByZXR1cm47ICAvLyB3ZSd2ZSBiZWVuIGRlbGV0ZWQKKyAgICB9CisgICAgbV9pc1JhaXNpbmdE
ZWZlcnJlZEV2ZW50cyA9IGZhbHNlOworICAgIG1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJy
ZWRFdmVudHMgPSAwOworCisgICAgbV9pc0RlZmVycmluZ0V2ZW50cyA9IGZhbHNlOworfQorCiBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdGF0dXMo
KSBjb25zdAogewogICAgIHJldHVybiBtX2ludGVybmFsID8gc3RhdGljX2Nhc3Q8U3RhdHVzPiht
X2ludGVybmFsLT5tX291dGVySG9zdC0+c3RhdHVzKCkpIDogVU5DQUNIRUQ7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1MzgxNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEwLTAxLTI1ICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGUgZXZlbnRzIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBhZnRl
ciBEb2N1bWVudCBvbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2OTAKKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVk
LWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNSAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHRyaXZpYWwgYmFzZWxpbmUgdXBkYXRlcy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Rl
ZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1k
ZWxldGUtd2hpbGUtcmFpc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NCBAQAorVGVzdCB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW4gaWZyYW1lIHdoaWxlIGRlZmVycmVkIGV2
ZW50cyBhcmUgYmVpbmcgcmFpc2VkIGRvZXMgbm90IGNyYXNoIHRoZSBzeXN0ZW0uCisKK1NVQ0NF
U1MKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVu
dHMtZGVsZXRlLXdoaWxlLXJhaXNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZl
cnJlZC1ldmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzNSBAQAorPGh0bWwgbWFuaWZlc3Q9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5tYW5p
ZmVzdCI+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgIHZhciBpc1BhcmVudEZyYW1lID0gd2luZG93ID09IHdpbmRvdy50
b3A7CisKKyAgICBpZiAoaXNQYXJlbnRGcmFtZSkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCkKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwg
PSAiU1VDQ0VTUyI7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHdpbmRvdy5hcHBsaWNhdGlvbkNhY2hlLm9u
Y2hlY2tpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgi
aGVsbG8iLCAiKiIpOworICAgICAgICAgICAgcGFyZW50LmtpbGxDaGlsZEZyYW1lKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBraWxsQ2hpbGRGcmFtZSgpIHsKKyAgICAgICAg
ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
aWZyYW1lIilbMF0pOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRl
c3QgdGhlIGRlc3RydWN0aW9uIG9mIGFuIGlmcmFtZSB3aGlsZSBkZWZlcnJlZCBldmVudHMgYXJl
IGJlaW5nIHJhaXNlZCBkb2VzIG5vdCBjcmFzaCB0aGUgc3lzdGVtLjwvcD4KKzxkaXYgaWQ9InJl
c3VsdCI+RkFJTFVSRTwvZGl2PgorPGlmcmFtZSBzcmM9ImRlZmVycmVkLWV2ZW50cy1kZWxldGUt
d2hpbGUtcmFpc2luZy5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVk
LWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMiBAQAorVGVzdCB0aGF0IEFwcGljYXRpb25DYWNoZSBldmVudHMgYXJlIGRlZmVy
cmVkIHVudGlsIGFmdGVyIG9ubG9hZCBoYXMgYmVlbiBmaXJlZC4KK1NVQ0NFU1MKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVm
ZXJyZWQtZXZlbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sIG1h
bmlmZXN0PSJUSElTX0ZJTEVfRE9FU19OT1RfRVhJU1QubWFuaWZlc3QiPgorPGhlYWQ+CisgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICB2YXIgb25sb2FkSGFzQmVlbkNhbGxl
ZCA9IGZhbHNlOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5hcHBsaWNh
dGlvbkNhY2hlLm9uY2hlY2tpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKG9ubG9hZEhh
c0JlZW5DYWxsZWQpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gIlNVQ0NFU1MiCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgfQorICA8L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9IlRISVNfRklMRV9ET0VTX05PVF9F
WElTVC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ib25sb2FkSGFzQmVlbkNhbGxlZCA9IHRydWUiPgorVGVzdCB0aGF0IEFwcGljYXRp
b25DYWNoZSBldmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGFmdGVyIG9ubG9hZCBoYXMgYmVlbiBm
aXJlZC4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47485</attachid>
            <date>2010-01-26 20:00:52 -0800</date>
            <delta_ts>2010-01-28 17:10:01 -0800</delta_ts>
            <desc>removed 6 space characters</desc>
            <filename>defer5.txt</filename>
            <type>text/plain</type>
            <size>13046</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBUZWxscyB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QgdG8gc3RvcCBkZWZlcnJpbmcgZXZl
bnRzLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNo
ZUhvc3QpOiBJbml0aWFsaXplIG1faXNEZWZlcnJpbmdFdmVudHMgdG8gdHJ1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hl
KTogRGVwZW5kaW5nLCBkZWZlciBvciByYWlzZSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cyk6IFJhaXNlIGFueSBk
ZWZlcnJlZCBldmVudHMgYW5kIHJlc2V0IHRoZSBmbGFnLgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOiBEZWNsYXJlIG5ldyBkYXRhIG1lbWJlcnMgYW5k
IG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojp0b2tlbml6ZXJQcm9jZXNzZWREYXRhCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2Fk
RXZlbnRzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIGlmIChkb2N1bWVu
dExvYWRlcigpKQorICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5zdG9wRGVmZXJyaW5nRXZlbnRzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZnJhbWVEZXRhY2hlZCgpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA1MzgxMykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
QXBwbGljYXRpb25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQogICAg
IDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKDApCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3Vt
ZW50TG9hZGVyKQorICAgICwgbV9pc0RlZmVycmluZ0V2ZW50cyh0cnVlKQorICAgICwgbV9pc1Jh
aXNpbmdEZWZlcnJlZEV2ZW50cyhmYWxzZSkKKyAgICAsIG1fc2hvdWxkQ29udGludWVSYWlzaW5n
RGVmZXJyZWRFdmVudHMoMCkKICAgICAsIG1fY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3Vw
KDApCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRMb2FkZXIpOwpAQCAtNTMsNiArNTYsOSBAQCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNoZUhvCiAKIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0Ojp+QXBwbGljYXRpb25DYWNoZUhvc3QoKQogeworICAgIGlmIChtX2lzUmFpc2luZ0Rl
ZmVycmVkRXZlbnRzKQorICAgICAgKm1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVu
dHMgPSBmYWxzZTsKKwogICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGUpCiAgICAgICAgIG1fYXBw
bGljYXRpb25DYWNoZS0+Z3JvdXAoKS0+ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIobV9kb2N1
bWVudExvYWRlcik7CiAgICAgZWxzZSBpZiAobV9jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3Jv
dXApCkBAIC0yMjksNiArMjM1LDExIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERP
TUFwcGxpY2EKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRp
b25DYWNoZShFdmVudElEIGlkKQogeworICAgIGlmIChtX2lzRGVmZXJyaW5nRXZlbnRzKSB7Cisg
ICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBm
aXJlZC4KKyAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKICAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlk
KSwgZmFsc2UsIGZhbHNlKSwgZWMpOwpAQCAtMjM2LDYgKzI0NywyOCBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsCiAgICAgfQogfQogCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKK3sKKyAgICBib29sIHNob3VsZENvbnRp
bnVlID0gdHJ1ZTsKKyAgICBtX3Nob3VsZENvbnRpbnVlUmFpc2luZ0RlZmVycmVkRXZlbnRzID0g
JnNob3VsZENvbnRpbnVlOyAvLyBzbyB0aGUgZHRvciBjYW4gc2V0IHRvIGZhbHNlCisgICAgbV9p
c1JhaXNpbmdEZWZlcnJlZEV2ZW50cyA9IHRydWU7CisgICAgd2hpbGUgKCFtX2RlZmVycmVkRXZl
bnRzLmlzRW1wdHkoKSkgeworICAgICAgICBFdmVudElEIGlkID0gbV9kZWZlcnJlZEV2ZW50cy5m
aXJzdCgpOworICAgICAgICBtX2RlZmVycmVkRXZlbnRzLnJlbW92ZUZpcnN0KCk7CisgICAgICAg
IGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgICAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxz
ZSwgZmFsc2UpLCBlYyk7CisgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgICAgICAgICAgcmV0dXJuOyAvLyB3ZSd2ZSBi
ZWVuIGRlbGV0ZWQKKyAgICB9CisgICAgbV9pc1JhaXNpbmdEZWZlcnJlZEV2ZW50cyA9IGZhbHNl
OworICAgIG1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVudHMgPSAwOworCisgICAg
bV9pc0RlZmVycmluZ0V2ZW50cyA9IGZhbHNlOworfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlz
aW9uIDUzODEzKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKIAorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTExMCwxMiArMTExLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERPTUFwcGxpY2F0aW9uQ2FjaGUqIGRv
bUFwcGxpY2F0aW9uQ2FjaGUpOwogICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0aW9uQ2Fj
aGUoRXZlbnRJRCBpZCk7CiAKKyAgICAgICAgdm9pZCBzdG9wRGVmZXJyaW5nRXZlbnRzKCk7IC8v
IEFsc28gcmFpc2VzIHRoZSBldmVudHMgdGhhdCBoYXZlIGJlZW4gcXVldWVkIHVwLgorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAgICAg
ICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9jdW1lbnRM
b2FkZXI7IH0KIAogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBtX2RvbUFwcGxpY2F0aW9u
Q2FjaGU7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOworICAgICAg
ICBib29sIG1faXNEZWZlcnJpbmdFdmVudHM7IC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwg
YWZ0ZXIgZG9jdW1lbnQgb25sb2FkLgorICAgICAgICBEZXF1ZTxFdmVudElEPiBtX2RlZmVycmVk
RXZlbnRzOworICAgICAgICBib29sIG1faXNSYWlzaW5nRGVmZXJyZWRFdmVudHM7CisgICAgICAg
IGJvb2wqIG1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVudHM7CiAKICNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKICAgICAgICAgZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
SW50ZXJuYWw7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzODE3KQorKysgV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAx
LTI1ICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgZXZl
bnRzIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBEb2N1bWVudCBvbmxvYWQgaGFzIGZp
cmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2
OTAKKworICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNoZUhvc3QpOiBJbml0
aWFsaXplIG1faXNEZWZlcnJpbmdFdmVudHMgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKTogRGVwZW5kaW5n
LCBkZWZlciBvciByYWlzZSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cyk6IFJhaXNlIGFueSBkZWZlcnJlZCBldmVu
dHMgYW5kIHJlc2V0IHRoZSBmbGFnLgorCiAyMDEwLTAxLTIyICBFbGxpb3QgR2xheXNoZXIgIDxl
cmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlz
aW9uIDUzODEzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEyICs1NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNoZUhvc3QoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyKQogICAgIDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKDApCiAgICAg
LCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQorICAgICwgbV9pc0RlZmVycmluZ0V2
ZW50cyh0cnVlKQorICAgICwgbV9pc1JhaXNpbmdEZWZlcnJlZEV2ZW50cyhmYWxzZSkKKyAgICAs
IG1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVudHMoMCkKIHsKICAgICBBU1NFUlQo
bV9kb2N1bWVudExvYWRlcik7CiB9CiAKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojp+QXBwbGljYXRp
b25DYWNoZUhvc3QoKQogeworICAgIGlmIChtX2lzUmFpc2luZ0RlZmVycmVkRXZlbnRzKQorICAg
ICAgKm1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVudHMgPSBmYWxzZTsKIH0KIAog
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkTWFpblJlc291cmNlKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgU3Vic3RpdHV0ZURhdGEmKQpAQCAtMTk2LDE1ICsyMDEsMzkgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpCiB7Cisg
ICAgaWYgKG1faXNEZWZlcnJpbmdFdmVudHMpIHsKKyAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5h
cHBlbmQoaWQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxpY2F0
aW9uQ2FjaGUpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1fZG9t
QXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudCgKLSAgICAgICAgICAgIEV2ZW50OjpjcmVh
dGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLAot
ICAgICAgICAgICAgZWMpOworICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCks
IGZhbHNlLCBmYWxzZSksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQogCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKK3sKKyAgICBi
b29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKKyAgICBtX3Nob3VsZENvbnRpbnVlUmFpc2luZ0Rl
ZmVycmVkRXZlbnRzID0gJnNob3VsZENvbnRpbnVlOyAvLyBzbyB0aGUgZHRvciBjYW4gc2V0IHRv
IGZhbHNlCisgICAgbV9pc1JhaXNpbmdEZWZlcnJlZEV2ZW50cyA9IHRydWU7CisgICAgd2hpbGUg
KCFtX2RlZmVycmVkRXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBFdmVudElEIGlkID0gbV9k
ZWZlcnJlZEV2ZW50cy5maXJzdCgpOworICAgICAgICBtX2RlZmVycmVkRXZlbnRzLnJlbW92ZUZp
cnN0KCk7CisgICAgICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKKyAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hl
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVu
dFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgICAgICAgICBBU1NFUlQoIWVjKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgICAgICAgICAgcmV0
dXJuOyAvLyB3ZSd2ZSBiZWVuIGRlbGV0ZWQKKyAgICB9CisgICAgbV9pc1JhaXNpbmdEZWZlcnJl
ZEV2ZW50cyA9IGZhbHNlOworICAgIG1fc2hvdWxkQ29udGludWVSYWlzaW5nRGVmZXJyZWRFdmVu
dHMgPSAwOworCisgICAgbV9pc0RlZmVycmluZ0V2ZW50cyA9IGZhbHNlOworfQorCiBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6U3RhdHVzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdGF0dXMoKSBjb25z
dAogewogICAgIHJldHVybiBtX2ludGVybmFsID8gc3RhdGljX2Nhc3Q8U3RhdHVzPihtX2ludGVy
bmFsLT5tX291dGVySG9zdC0+c3RhdHVzKCkpIDogVU5DQUNIRUQ7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1MzgxNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAxLTI1ICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGUgZXZlbnRzIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBEb2N1
bWVudCBvbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjk2OTAKKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZGVm
ZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50
cy1kZWxldGUtd2hpbGUtcmFpc2luZy5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNSAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHRyaXZpYWwgYmFzZWxpbmUgdXBkYXRlcy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVk
LWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUt
d2hpbGUtcmFpc2luZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAor
VGVzdCB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW4gaWZyYW1lIHdoaWxlIGRlZmVycmVkIGV2ZW50cyBh
cmUgYmVpbmcgcmFpc2VkIGRvZXMgbm90IGNyYXNoIHRoZSBzeXN0ZW0uCisKK1NVQ0NFU1MKKwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVs
ZXRlLXdoaWxlLXJhaXNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1l
dmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NSBAQAorPGh0bWwgbWFuaWZlc3Q9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5tYW5pZmVzdCI+
Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5qcyIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgIHZhciBpc1BhcmVudEZyYW1lID0gd2luZG93ID09IHdpbmRvdy50b3A7CisK
KyAgICBpZiAoaXNQYXJlbnRGcmFtZSkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCkKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VD
Q0VTUyI7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIHdpbmRvdy5hcHBsaWNhdGlvbkNhY2hlLm9uY2hlY2tp
bmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgiaGVsbG8i
LCAiKiIpOworICAgICAgICAgICAgcGFyZW50LmtpbGxDaGlsZEZyYW1lKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmdW5jdGlvbiBraWxsQ2hpbGRGcmFtZSgpIHsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1l
IilbMF0pOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgdGhl
IGRlc3RydWN0aW9uIG9mIGFuIGlmcmFtZSB3aGlsZSBkZWZlcnJlZCBldmVudHMgYXJlIGJlaW5n
IHJhaXNlZCBkb2VzIG5vdCBjcmFzaCB0aGUgc3lzdGVtLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
RkFJTFVSRTwvZGl2PgorPGlmcmFtZSBzcmM9ImRlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUt
cmFpc2luZy5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2RlZmVycmVkLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMiBAQAorVGVzdCB0aGF0IEFwcGljYXRpb25DYWNoZSBldmVudHMgYXJlIGRlZmVycmVkIHVu
dGlsIGFmdGVyIG9ubG9hZCBoYXMgYmVlbiBmaXJlZC4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQt
ZXZlbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sIG1hbmlmZXN0
PSJUSElTX0ZJTEVfRE9FU19OT1RfRVhJU1QubWFuaWZlc3QiPgorPGhlYWQ+CisgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICB2YXIgb25sb2FkSGFzQmVlbkNhbGxlZCA9IGZh
bHNlOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5hcHBsaWNhdGlvbkNh
Y2hlLm9uY2hlY2tpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKG9ubG9hZEhhc0JlZW5D
YWxsZWQpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5u
ZXJIVE1MID0gIlNVQ0NFU1MiCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
fQorICA8L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5q
cyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ib25sb2FkSGFzQmVlbkNhbGxlZCA9IHRydWUiPgorVGVzdCB0aGF0IEFwcGljYXRpb25DYWNo
ZSBldmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGFmdGVyIG9ubG9hZCBoYXMgYmVlbiBmaXJlZC4K
KzxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47566</attachid>
            <date>2010-01-27 15:11:29 -0800</date>
            <delta_ts>2010-01-28 17:10:01 -0800</delta_ts>
            <desc>cleaner patch</desc>
            <filename>defer7.txt</filename>
            <type>text/plain</type>
            <size>11619</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBUZWxscyB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QgdG8gc3RvcCBkZWZlcnJpbmcgZXZl
bnRzLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNo
ZUhvc3QpOiBJbml0aWFsaXplIG1faXNEZWZlcnJpbmdFdmVudHMgdG8gdHJ1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hl
KTogRGVwZW5kaW5nLCBkZWZlciBvciByYWlzZSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cyk6IFJhaXNlIGFueSBk
ZWZlcnJlZCBldmVudHMgYW5kIHJlc2V0IHRoZSBmbGFnLgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOiBEZWNsYXJlIG5ldyBkYXRhIG1lbWJlcnMgYW5k
IG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojp0b2tlbml6ZXJQcm9jZXNzZWREYXRhCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2Fk
RXZlbnRzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIGlmIChkb2N1bWVu
dExvYWRlcigpKQorICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5zdG9wRGVmZXJyaW5nRXZlbnRzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZnJhbWVEZXRhY2hlZCgpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA1MzgxMykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
QXBwbGljYXRpb25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQogICAg
IDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKDApCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3Vt
ZW50TG9hZGVyKQorICAgICwgbV9pc0RlZmVycmluZ0V2ZW50cyh0cnVlKQogICAgICwgbV9jYW5k
aWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoMCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudExv
YWRlcik7CkBAIC0yMjksNiArMjMwLDExIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNl
dERPTUFwcGxpY2EKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGlj
YXRpb25DYWNoZShFdmVudElEIGlkKQogeworICAgIGlmIChtX2lzRGVmZXJyaW5nRXZlbnRzKSB7
CisgICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhh
cyBmaXJlZC4KKyAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBl
KGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwpAQCAtMjM2LDYgKzI0MiwyMSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsCiAgICAgfQogfQogCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKK3sKKyAgICBSZWZQdHI8RG9jdW1l
bnRMb2FkZXI+IHByb3RlY3QoZG9jdW1lbnRMb2FkZXIoKSk7CisgICAgd2hpbGUgKCFtX2RlZmVy
cmVkRXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBFdmVudElEIGlkID0gbV9kZWZlcnJlZEV2
ZW50cy5maXJzdCgpOworICAgICAgICBtX2RlZmVycmVkRXZlbnRzLnJlbW92ZUZpcnN0KCk7Cisg
ICAgICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgICAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQp
LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBtX2lzRGVmZXJyaW5nRXZlbnRzID0gZmFsc2U7Cit9CisKIHZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OnNldENhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cChBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwKQogewogICAgIEFTU0VSVCghbV9hcHBsaWNhdGlvbkNh
Y2hlKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
ZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogCisjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTEwLDEyICsxMTEsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGlj
YXRpb25DYWNoZSogZG9tQXBwbGljYXRpb25DYWNoZSk7CiAgICAgICAgIHZvaWQgbm90aWZ5RE9N
QXBwbGljYXRpb25DYWNoZShFdmVudElEIGlkKTsKIAorICAgICAgICB2b2lkIHN0b3BEZWZlcnJp
bmdFdmVudHMoKTsgLy8gQWxzbyByYWlzZXMgdGhlIGV2ZW50cyB0aGF0IGhhdmUgYmVlbiBxdWV1
ZWQgdXAuCisKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGlzQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQoKTsKICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKCkgeyByZXR1
cm4gbV9kb2N1bWVudExvYWRlcjsgfQogCiAgICAgICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUqIG1f
ZG9tQXBwbGljYXRpb25DYWNoZTsKICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRM
b2FkZXI7CisgICAgICAgIGJvb2wgbV9pc0RlZmVycmluZ0V2ZW50czsgLy8gRXZlbnRzIGFyZSBk
ZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVudCBvbmxvYWQuCisgICAgICAgIERlcXVlPEV2ZW50
SUQ+IG1fZGVmZXJyZWRFdmVudHM7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWw7CkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDUzODE3KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAxLTI1ICBNaWNoYWVsIE5vcmRtYW4gIDxt
aWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgZXZlbnRzIHNob3VsZCBiZSBkZWZlcnJlZCB1
bnRpbCBhZnRlciBEb2N1bWVudCBvbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2OTAKKworICAgICAgICAqIHNyYy9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6QXBwbGljYXRpb25DYWNoZUhvc3QpOiBJbml0aWFsaXplIG1faXNEZWZlcnJpbmdFdmVu
dHMgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKTogRGVwZW5kaW5nLCBkZWZlciBvciByYWlzZSB0aGUgZXZl
bnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmlu
Z0V2ZW50cyk6IFJhaXNlIGFueSBkZWZlcnJlZCBldmVudHMgYW5kIHJlc2V0IHRoZSBmbGFnLgor
CiAyMDEwLTAxLTIyICBFbGxpb3QgR2xheXNoZXIgIDxlcmdAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6
IG1fZG9tQXBwbGljYXRpb25DYWNoZSgwKQogICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1bWVu
dExvYWRlcikKKyAgICAsIG1faXNEZWZlcnJpbmdFdmVudHModHJ1ZSkKIHsKICAgICBBU1NFUlQo
bV9kb2N1bWVudExvYWRlcik7CiB9CkBAIC0xOTYsMTUgKzE5NywzMiBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpzZXRET01BcHBsaWNhCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCkKIHsKKyAgICBpZiAobV9pc0Rl
ZmVycmluZ0V2ZW50cykgeworICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChpZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewog
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNh
Y2hlLT5kaXNwYXRjaEV2ZW50KAotICAgICAgICAgICAgRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNh
dGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgICBl
Yyk7CisgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiB9CiAKK3ZvaWQgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMoKQoreworICAgIFJlZlB0cjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdChkb2N1bWVudExvYWRlcigpKTsKKyAgICB3aGlsZSAoIW1fZGVmZXJy
ZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVycmVkRXZl
bnRzLmZpcnN0KCk7CisgICAgICAgIG1fZGVmZXJyZWRFdmVudHMucmVtb3ZlRmlyc3QoKTsKKyAg
ICAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCks
IGZhbHNlLCBmYWxzZSksIGVjKTsKKyAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICB9
CisgICAgfQorICAgIG1faXNEZWZlcnJpbmdFdmVudHMgPSBmYWxzZTsKK30KKwogQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlN0YXR1cyBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RhdHVzKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pbnRlcm5hbCA/IHN0YXRpY19jYXN0PFN0YXR1cz4obV9pbnRlcm5h
bC0+bV9vdXRlckhvc3QtPnN0YXR1cygpKSA6IFVOQ0FDSEVEOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NTM4MTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMC0wMS0yNSAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlIGV2ZW50cyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgRG9jdW1l
bnQgb25sb2FkIGhhcyBmaXJlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI5NjkwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVy
cmVkLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
YXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMt
ZGVsZXRlLXdoaWxlLXJhaXNpbmcuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjUgIERpbWl0cmkg
R2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB0
cml2aWFsIGJhc2VsaW5lIHVwZGF0ZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1l
dmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVsZXRlLXdo
aWxlLXJhaXNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1Rl
c3QgdGhlIGRlc3RydWN0aW9uIG9mIGFuIGlmcmFtZSB3aGlsZSBkZWZlcnJlZCBldmVudHMgYXJl
IGJlaW5nIHJhaXNlZCBkb2VzIG5vdCBjcmFzaCB0aGUgc3lzdGVtLgorCitTVUNDRVNTCisKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0
ZS13aGlsZS1yYWlzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZl
bnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUg
QEAKKzxodG1sIG1hbmlmZXN0PSJUSElTX0ZJTEVfRE9FU19OT1RfRVhJU1QubWFuaWZlc3QiPgor
PGhlYWQ+CisgIDxzY3JpcHQgc3JjPSJUSElTX0ZJTEVfRE9FU19OT1RfRVhJU1QuanMiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKyAgICB2YXIgaXNQYXJlbnRGcmFtZSA9IHdpbmRvdyA9PSB3aW5kb3cudG9wOworCisg
ICAgaWYgKGlzUGFyZW50RnJhbWUpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgIH0KKworICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlNVQ0NF
U1MiOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICB3aW5kb3cuYXBwbGljYXRpb25DYWNoZS5vbmNoZWNraW5n
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImhlbGxvIiwg
IioiKTsKKyAgICAgICAgICAgIHBhcmVudC5raWxsQ2hpbGRGcmFtZSgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24ga2lsbENoaWxkRnJhbWUoKSB7CisgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIp
WzBdKTsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IHRoZSBk
ZXN0cnVjdGlvbiBvZiBhbiBpZnJhbWUgd2hpbGUgZGVmZXJyZWQgZXZlbnRzIGFyZSBiZWluZyBy
YWlzZWQgZG9lcyBub3QgY3Jhc2ggdGhlIHN5c3RlbS48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPkZB
SUxVUkU8L2Rpdj4KKzxpZnJhbWUgc3JjPSJkZWZlcnJlZC1ldmVudHMtZGVsZXRlLXdoaWxlLXJh
aXNpbmcuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIgQEAKK1Rlc3QgdGhhdCBBcHBpY2F0aW9uQ2FjaGUgZXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRp
bCBhZnRlciBvbmxvYWQgaGFzIGJlZW4gZmlyZWQuCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2
ZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACis8aHRtbCBtYW5pZmVzdD0i
VEhJU19GSUxFX0RPRVNfTk9UX0VYSVNULm1hbmlmZXN0Ij4KKzxoZWFkPgorICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFyIG9ubG9hZEhhc0JlZW5DYWxsZWQgPSBmYWxz
ZTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYXBwbGljYXRpb25DYWNo
ZS5vbmNoZWNraW5nID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChvbmxvYWRIYXNCZWVuQ2Fs
bGVkKQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9ICJTVUNDRVNTIgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0K
KyAgPC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJUSElTX0ZJTEVfRE9FU19OT1RfRVhJU1QuanMi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
Im9ubG9hZEhhc0JlZW5DYWxsZWQgPSB0cnVlIj4KK1Rlc3QgdGhhdCBBcHBpY2F0aW9uQ2FjaGUg
ZXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBvbmxvYWQgaGFzIGJlZW4gZmlyZWQuCis8
ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="30035"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47658</attachid>
            <date>2010-01-28 17:10:01 -0800</date>
            <delta_ts>2010-01-28 22:41:45 -0800</delta_ts>
            <desc>rename a datamember and switch to Vector</desc>
            <filename>defer8.txt</filename>
            <type>text/plain</type>
            <size>11593</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMjUgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGFmdGVy
IERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlZE9ubG9hZEV2ZW50
cyk6ICBUZWxscyB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QgdG8gc3RvcCBkZWZlcnJpbmcgZXZl
bnRzLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25DYWNo
ZUhvc3QpOiBJbml0aWFsaXplIG1faXNEZWZlcnJpbmdFdmVudHMgdG8gdHJ1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hl
KTogRGVwZW5kaW5nLCBkZWZlciBvciByYWlzZSB0aGUgZXZlbnQuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cyk6IFJhaXNlIGFueSBk
ZWZlcnJlZCBldmVudHMgYW5kIHJlc2V0IHRoZSBmbGFnLgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOiBEZWNsYXJlIG5ldyBkYXRhIG1lbWJlcnMgYW5k
IG1ldGhvZC4KKwogMjAxMC0wMS0yNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gNTM4MTMpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDcsNiArMzE0NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojp0b2tlbml6ZXJQcm9jZXNzZWREYXRhCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2Fk
RXZlbnRzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIGlmIChkb2N1bWVu
dExvYWRlcigpKQorICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5zdG9wRGVmZXJyaW5nRXZlbnRzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZnJhbWVEZXRhY2hlZCgpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA1MzgxMykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
QXBwbGljYXRpb25DYWNoZUhvc3QoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQogICAg
IDogbV9kb21BcHBsaWNhdGlvbkNhY2hlKDApCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3Vt
ZW50TG9hZGVyKQorICAgICwgbV9kZWZlcnNFdmVudHModHJ1ZSkKICAgICAsIG1fY2FuZGlkYXRl
QXBwbGljYXRpb25DYWNoZUdyb3VwKDApCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRMb2FkZXIp
OwpAQCAtMjI5LDYgKzIzMCwxMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRET01B
cHBsaWNhCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9u
Q2FjaGUoRXZlbnRJRCBpZCkKIHsKKyAgICBpZiAobV9kZWZlcnNFdmVudHMpIHsKKyAgICAgICAg
Ly8gRXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgor
ICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChpZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxz
ZSwgZmFsc2UpLCBlYyk7CkBAIC0yMzYsNiArMjQyLDIxIEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om5vdGlmeURPTUFwcGwKICAgICB9CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMoKQoreworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4g
cHJvdGVjdChkb2N1bWVudExvYWRlcigpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9kZWZlcnJlZEV2ZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBFdmVudElEIGlkID0gbV9k
ZWZlcnJlZEV2ZW50c1tpXTsKKyAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewor
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAgICBtX2RvbUFwcGxp
Y2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNh
Y2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKKyAgICAgICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICB9CisgICAgfQorICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIo
KTsKKyAgICBtX2RlZmVyc0V2ZW50cyA9IGZhbHNlOworfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJl
dmlzaW9uIDUzODEzKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5BQkxFKE9G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIAorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTExMCwxMiArMTExLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERPTUFwcGxpY2F0aW9uQ2FjaGUq
IGRvbUFwcGxpY2F0aW9uQ2FjaGUpOwogICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0aW9u
Q2FjaGUoRXZlbnRJRCBpZCk7CiAKKyAgICAgICAgdm9pZCBzdG9wRGVmZXJyaW5nRXZlbnRzKCk7
IC8vIEFsc28gcmFpc2VzIHRoZSBldmVudHMgdGhhdCBoYXZlIGJlZW4gcXVldWVkIHVwLgorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAg
ICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9jdW1l
bnRMb2FkZXI7IH0KIAogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBtX2RvbUFwcGxpY2F0
aW9uQ2FjaGU7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOworICAg
ICAgICBib29sIG1fZGVmZXJzRXZlbnRzOyAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGFm
dGVyIGRvY3VtZW50IG9ubG9hZC4KKyAgICAgICAgVmVjdG9yPEV2ZW50SUQ+IG1fZGVmZXJyZWRF
dmVudHM7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgZnJpZW5kIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWw7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUz
ODE3KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEwLTAxLTI1ICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGUgZXZlbnRzIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBEb2N1
bWVudCBvbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjk2OTAKKworICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRp
b25DYWNoZUhvc3QpOiBJbml0aWFsaXplIG1faXNEZWZlcnJpbmdFdmVudHMgdG8gdHJ1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlv
bkNhY2hlKTogRGVwZW5kaW5nLCBkZWZlciBvciByYWlzZSB0aGUgZXZlbnQuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cyk6IFJhaXNl
IGFueSBkZWZlcnJlZCBldmVudHMgYW5kIHJlc2V0IHRoZSBmbGFnLgorCiAyMDEwLTAxLTIyICBF
bGxpb3QgR2xheXNoZXIgIDxlcmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAJKHJldmlzaW9uIDUzODEzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkFwcGxpY2F0aW9uQ2FjaGVI
b3N0KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9tQXBwbGljYXRp
b25DYWNoZSgwKQogICAgICwgbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKKyAgICAs
IG1fZGVmZXJzRXZlbnRzKHRydWUpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRMb2FkZXIpOwog
fQpAQCAtMTk2LDE1ICsxOTcsMzIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9N
QXBwbGljYQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlv
bkNhY2hlKEV2ZW50SUQgaWQpCiB7CisgICAgaWYgKG1fZGVmZXJzRXZlbnRzKSB7CisgICAgICAg
IG1fZGVmZXJyZWRFdmVudHMuYXBwZW5kKGlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoCi0gICAg
ICAgICAgICBFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlk
KSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICAgIGVjKTsKKyAgICAgICAgbV9kb21BcHBsaWNh
dGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNo
ZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7CiAgICAgICAgIEFTU0VSVCgh
ZWMpOwogICAgIH0KIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmlu
Z0V2ZW50cygpCit7CisgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KGRvY3VtZW50
TG9hZGVyKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RlZmVycmVkRXZlbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVycmVkRXZlbnRzW2ld
OworICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBl
KGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbV9kZWZlcnJlZEV2ZW50cy5jbGVhcigpOworICAgIG1fZGVmZXJz
RXZlbnRzID0gZmFsc2U7Cit9CisKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OnN0YXR1cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwg
PyBzdGF0aWNfY2FzdDxTdGF0dXM+KG1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LT5zdGF0dXMoKSkg
OiBVTkNBQ0hFRDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzODE3KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjUgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSBldmVudHMgc2hvdWxk
IGJlIGRlZmVycmVkIHVudGlsIGFmdGVyIERvY3VtZW50IG9ubG9hZCBoYXMgZmlyZWQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MAorCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1k
ZWxldGUtd2hpbGUtcmFpc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTAxLTI1ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdHJpdmlhbCBiYXNlbGluZSB1cGRhdGVzLgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVs
ZXRlLXdoaWxlLXJhaXNpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUZXN0IHRoZSBkZXN0cnVjdGlvbiBvZiBhbiBp
ZnJhbWUgd2hpbGUgZGVmZXJyZWQgZXZlbnRzIGFyZSBiZWluZyByYWlzZWQgZG9lcyBub3QgY3Jh
c2ggdGhlIHN5c3RlbS4KKworU1VDQ0VTUworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRz
LWRlbGV0ZS13aGlsZS1yYWlzaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACis8aHRtbCBtYW5pZmVzdD0iVEhJU19G
SUxFX0RPRVNfTk9UX0VYSVNULm1hbmlmZXN0Ij4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iVEhJ
U19GSUxFX0RPRVNfTk9UX0VYSVNULmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFyIGlzUGFyZW50RnJh
bWUgPSB3aW5kb3cgPT0gd2luZG93LnRvcDsKKworICAgIGlmIChpc1BhcmVudEZyYW1lKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgd2luZG93Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJTVUNDRVNTIjsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2lu
ZG93LmFwcGxpY2F0aW9uQ2FjaGUub25jaGVja2luZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgcGFyZW50LnBvc3RNZXNzYWdlKCJoZWxsbyIsICIqIik7CisgICAgICAgICAgICBwYXJlbnQu
a2lsbENoaWxkRnJhbWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGtpbGxD
aGlsZEZyYW1lKCkgeworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXSk7CisgICAgfQorICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW4gaWZyYW1lIHdo
aWxlIGRlZmVycmVkIGV2ZW50cyBhcmUgYmVpbmcgcmFpc2VkIGRvZXMgbm90IGNyYXNoIHRoZSBz
eXN0ZW0uPC9wPgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+Cis8aWZyYW1lIHNyYz0i
ZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLmh0bWwiPjwvaWZyYW1lPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZl
cnJlZC1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZlbnRzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitUZXN0IHRoYXQgQXBwaWNhdGlv
bkNhY2hlIGV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgb25sb2FkIGhhcyBiZWVuIGZp
cmVkLgorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZl
cnJlZC1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2RlZmVycmVkLWV2ZW50cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNCBAQAorPGh0bWwgbWFuaWZlc3Q9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5t
YW5pZmVzdCI+Cis8aGVhZD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IHZhciBvbmxvYWRIYXNCZWVuQ2FsbGVkID0gZmFsc2U7CisKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorCisgICAgd2luZG93LmFwcGxpY2F0aW9uQ2FjaGUub25jaGVja2luZyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBpZiAob25sb2FkSGFzQmVlbkNhbGxlZCkKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyIKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgIDwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iVEhJU19GSUxFX0RPRVNfTk9UX0VYSVNULmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWRIYXNCZWVuQ2FsbGVkID0gdHJ1
ZSI+CitUZXN0IHRoYXQgQXBwaWNhdGlvbkNhY2hlIGV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwg
YWZ0ZXIgb25sb2FkIGhhcyBiZWVuIGZpcmVkLgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>