<?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>10773</bug_id>
          
          <creation_ts>2006-09-07 12:16:13 -0700</creation_ts>
          <short_desc>Memory usage grows when reloading google.com/ig</short_desc>
          <delta_ts>2007-01-21 13:10:07 -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>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.google.com/ig</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sornalatha Rathnasamy">sornalatha.rathnasamy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ejalbert</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>mrowe</cc>
    
    <cc>sanjay12</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>54991</commentid>
    <comment_count>0</comment_count>
    <who name="Sornalatha Rathnasamy">sornalatha.rathnasamy</who>
    <bug_when>2006-09-07 12:16:13 -0700</bug_when>
    <thetext>1) Load www.google.com/ig
2) reload the page. 

Result: Memory leak of about 4 MB happens for each reload. Same memory leak happens when a link in top stories is visited and back to the main page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55085</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-09-08 13:41:21 -0700</bug_when>
    <thetext>I&apos;m seeing that the RAM size taken by Safari+TOT increases after each reload, but couldn&apos;t find an actual leak yet. Could you please describe the steps you perform in maximum detail? Do you close the window and/or reset the caches? Also, do you use a downloaded nightly, or a local WebKit build (if the latter, is it debug or release)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46825</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-11-05 19:22:33 -0800</bug_when>
    <thetext>I cannot reproduce any leak by following the instructions provided.  If you are still able to reproduce this, I would appreciate if you could reopen this bug report and provide the information that Alexey asked for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43816</commentid>
    <comment_count>3</comment_count>
    <who name="Krishna">krishnamurty.podipireddy</who>
    <bug_when>2006-11-29 12:20:19 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;m seeing that the RAM size taken by Safari+TOT increases after each reload,
&gt; but couldn&apos;t find an actual leak yet. Could you please describe the steps you
&gt; perform in maximum detail? Do you close the window and/or reset the caches?
&gt; Also, do you use a downloaded nightly, or a local WebKit build (if the latter,
&gt; is it debug or release)?

Yes, RAM size increases for each reload. The following are the RAM sizes in MBs
21.88 - when launching Webkit (Safari)
31.18 - when loading www.google.com/ig
39.00 - first reload
42.68 - second reload
49.00 - third reload

The webkit build is taken from http://nightly.webkit.org
Webkit nightly build dated Nov 29
Safari Version 2.0.3 (417.9.2)

Reproduction step:
Launch Activity Monitor to see the RAM size
Launch the Webkit icon (Safari browser)
Load www.google.com/ig
Reload the page as many times as needed

We are not sure whether this is a leak but webkit is consuming more RAM when reloading the page everytime and hence performance would be deteriorated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35233</commentid>
    <comment_count>4</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-13 03:14:48 -0800</bug_when>
    <thetext>After researching this, I have some further information on the cause.

1.) If you are logged in to your google account, go ahead and remove everything from your home page other than the Calendar. Note that the bug still occurs. So that narrows it down somewhat.

2.) It certainly is an issue with JS objects being referenced when they no longer should. Several thousand JS objects are NOT getting GC&apos;ed on the refresh, which is most likely where all the increased memory usage is coming from.

So the next step will be to narrow down the problem even further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35144</commentid>
    <comment_count>5</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-13 18:25:59 -0800</bug_when>
    <thetext>FWIW, this same JS leak issue appears to occur with gmail as well, but on an even greater magnitude. Oddly enough though, if you go to the actual google calendar website the issue does not appear to occur. So the calendar widget and gmail have something that they&apos;re both doing in common.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35116</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-14 03:11:51 -0800</bug_when>
    <thetext>On each reload, there is one more Document and three more HTMLDocuments in the heap (after garbage collection, of course).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35092</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-14 05:17:22 -0800</bug_when>
    <thetext>Actually, that&apos;s:
- a Document prototype;
- a WebCore::HTMLDocument prototype;
- a KJS::HTMLDocument prototype;
- and one actual HTMLDocument.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34933</commentid>
    <comment_count>8</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-14 17:51:05 -0800</bug_when>
    <thetext>After pouring over their javascript, I was able to figure out specifically which line was causing the problem. It appears to be the one where they attach an event listener onto document for the &quot;keydown&quot; event. I&apos;m going to now attempt to reproduce the issue in a much smaller script file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34897</commentid>
    <comment_count>9</comment_count>
      <attachid>12439</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-14 21:32:39 -0800</bug_when>
    <thetext>Created attachment 12439
JS object leak test case

I&apos;ve attached a test case which demonstrates this leak on the most basic level. It seems like there are a few key things that need to happen in order to cause the leak:

1. Declare a function-object.
2. In the function object, declare a handler which does something with the document object.
3. Allocate further memory in the function object to make the leak detectable.
4. Set a variable equal to document, and then run addEventListener on that variable, attaching the handler to &quot;keydown&quot;.
5. Then create a new instance of your function object.

The attached html file will leak approximately 4mb per refresh (or 43 JS objects if you&apos;re monitoring the caches window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34864</commentid>
    <comment_count>10</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-15 01:37:23 -0800</bug_when>
    <thetext>After further investigation, one way to get the leak to stop happening is by moving the call to forgetAllDOMNodesForDocument from Document::~Document() to Document::detach(). However, this is not a real solution since documents can potentially reattach themselves. Also, this change only affects the test case and the www.google.com/ig case, but www.gmail.com still leaks memory. But it does give some further insight as to what is happening.

Basically, in the ig leak case, the JS engine is holding a reference to the Document object. Since that reference is held, the Document destructor is never called, so the Document holds a reference to all the other DOM objects in the page. So the leak is the Document + all of its child objects still being held by native code and as a result unable to be freed.

So the key to fixing this will be figuring out why the JS engine is holding onto the Document object in this particular case, whereas in other similar cases it correctly releases it. Once we can get the JS engine to relinquish its reference to the Document, that will allow ~Document() to be called, which will clear out all the other objects.

As some added notes, bdash was able to reduce the test case further here: http://paste.lisp.org/display/35330

And othermaciej had this to add in IRC about the conditions in which the reference to Document is being held:
&quot;I would guess you have to assign the variable holding the document or the document itself or something with the document in scope to the prototype&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34639</commentid>
    <comment_count>11</comment_count>
      <attachid>12482</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-16 05:35:18 -0800</bug_when>
    <thetext>Created attachment 12482
Further reduction

This demonstrates the root cause of the leak: a wrapper holding a reference to the document (in previous reductions the reference was very indirect, going through the __defineSetter__ property of the Object prototype and then the Function prototype). This completes a ref cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34643</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-01-16 06:48:41 -0800</bug_when>
    <thetext>An ugly fix would be to add JSCell::setMarked() and use it in ScriptInterpreter::mark() to prevent nodes from marking their document (if the document is not marked, set its marked bit and remember this; mark nodes for the document; if the document was not marked to begin with, reset its marked bit).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34629</commentid>
    <comment_count>13</comment_count>
      <attachid>12488</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-16 08:39:11 -0800</bug_when>
    <thetext>Created attachment 12488
Possible fix

Fixes the leak. No test regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34630</commentid>
    <comment_count>14</comment_count>
      <attachid>12488</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-16 08:53:08 -0800</bug_when>
    <thetext>Comment on attachment 12488
Possible fix

Bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34635</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-01-16 09:41:18 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; An ugly fix would be to add JSCell::setMarked() and use it in
&gt; ScriptInterpreter::mark() to prevent nodes from marking their document (if the
&gt; document is not marked, set its marked bit and remember this; mark nodes for
&gt; the document; if the document was not marked to begin with, reset its marked
&gt; bit).
&gt; 

Also a bad idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34637</commentid>
    <comment_count>16</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-16 09:49:28 -0800</bug_when>
    <thetext>I made some mark graphs which should help out those people who can&apos;t visualize what&apos;s happening (like I couldn&apos;t!)

http://paste.lisp.org/display/35471
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34621</commentid>
    <comment_count>17</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-16 11:49:57 -0800</bug_when>
    <thetext>At work so I can&apos;t ask this in IRC, but I was thinking...(bear with me here as I&apos;m explaining this to myself while typing it out)...

We&apos;re kind of looking at it in terms of &quot;let&apos;s prevent the Document from getting marked.&quot;

But logically thinking, wouldn&apos;t it make sense that if an HTMLBodyElement or HTMLHeadElement WAS marked, then the document that owns it has to be marked as well, because that element is contained by the document?

So the issue really is figuring out why the HTMLBodyElement or HTMLHeadElement is getting marked, and prevent that from happening.

Browsing the code some more, I&apos;m curious (though I can&apos;t really test it until I get home) whether the issue is maybe something like this:

1. You hit refresh, and a new HTMLDocument is created.
2. The new HTMLDocument adopts the previous document&apos;s HTMLBodyElement or HTMLHeadElement, for whatever reason (it maybe needs to be kept alive temporarily on the refresh to make sure onunload handlers get their chance to run).
3. However, even though the old HTMLBodyElement or old HTMLHeadElement is now adopted by the new HTMLDocument, it STILL has a reference to the old HTMLDocument in it&apos;s node tree.
4. So now when the old HTMLBodyElement/HeadElement gets marked, even though it&apos;s now owned by the new HTMLDocument, it marks the old HTMLDocument because it still has a reference to it in its tree.
5. Now that the old HTMLDocument is marked, its destructor can never be called. This is important because it means forgetAllDOMNodesForDocument never gets called, which then leaks the old HTMLDocument + any DOM Nodes that weren&apos;t adopted by the new HTMLDocument
6. Then the vicious cycle continues for every subsequent refresh.


This might also explain why in the case of bdash&apos;s simplification without the window event handlers, if you never press a key and just click the refresh button, you don&apos;t leak. The reason for this is since the &quot;keydown&quot; listener isn&apos;t being processesed, the old HTMLHead doesn&apos;t need to be kept alive. The &quot;keydown&quot; listener is accessing the HTMLHead, so if a key is being pressed (which happens when you Cmd-R) when you refresh, the HTMLHead gets adopted by the new document, and causing the pattern as described above.

So then the &quot;fix&quot; if this is what&apos;s happening is to make sure that in updateDOMNodeDocument, it traverses through the tree and breaks off any links to the old HTMLDocument.

*Note the above comments were from information not actually garnered while debugging, so it&apos;s certainly feasible that I&apos;m totally off-base here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34610</commentid>
    <comment_count>18</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-16 11:52:40 -0800</bug_when>
    <thetext>Please ignore everything I wrote prior to the &quot;Browsing the code&quot; line, I typed up that message over the course of a long time going back and forth, that I didn&apos;t realize the first few sentences completely contradicted what I talk about later on :P.

(In reply to comment #17)
&gt; Browsing the code some more, I&apos;m curious (though I can&apos;t really test it until I
&gt; get home) whether the issue is maybe something like this:
&gt; 
&gt; 1. You hit refresh, and a new HTMLDocument is created.
&gt; 2. The new HTMLDocument adopts the previous document&apos;s HTMLBodyElement or
&gt; HTMLHeadElement, for whatever reason (it maybe needs to be kept alive
&gt; temporarily on the refresh to make sure onunload handlers get their chance to
&gt; run).
&gt; 3. However, even though the old HTMLBodyElement or old HTMLHeadElement is now
&gt; adopted by the new HTMLDocument, it STILL has a reference to the old
&gt; HTMLDocument in it&apos;s node tree.
&gt; 4. So now when the old HTMLBodyElement/HeadElement gets marked, even though
&gt; it&apos;s now owned by the new HTMLDocument, it marks the old HTMLDocument because
&gt; it still has a reference to it in its tree.
&gt; 5. Now that the old HTMLDocument is marked, its destructor can never be called.
&gt; This is important because it means forgetAllDOMNodesForDocument never gets
&gt; called, which then leaks the old HTMLDocument + any DOM Nodes that weren&apos;t
&gt; adopted by the new HTMLDocument
&gt; 6. Then the vicious cycle continues for every subsequent refresh.
&gt; 
&gt; 
&gt; This might also explain why in the case of bdash&apos;s simplification without the
&gt; window event handlers, if you never press a key and just click the refresh
&gt; button, you don&apos;t leak. The reason for this is since the &quot;keydown&quot; listener
&gt; isn&apos;t being processesed, the old HTMLHead doesn&apos;t need to be kept alive. The
&gt; &quot;keydown&quot; listener is accessing the HTMLHead, so if a key is being pressed
&gt; (which happens when you Cmd-R) when you refresh, the HTMLHead gets adopted by
&gt; the new document, and causing the pattern as described above.
&gt; 
&gt; So then the &quot;fix&quot; if this is what&apos;s happening is to make sure that in
&gt; updateDOMNodeDocument, it traverses through the tree and breaks off any links
&gt; to the old HTMLDocument.
&gt; 
&gt; *Note the above comments were from information not actually garnered while
&gt; debugging, so it&apos;s certainly feasible that I&apos;m totally off-base here!
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34581</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-01-16 18:51:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/4928583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34533</commentid>
    <comment_count>20</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-01-16 23:57:32 -0800</bug_when>
    <thetext>Maciej suggested what I think is a good solution: Make the document, rather than the ScriptInterpreter, responsible for marking all of its nodes&apos; wrappers. Once the document becomes unreachable, the wrappers will be collected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34503</commentid>
    <comment_count>21</comment_count>
      <attachid>12501</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-17 03:11:33 -0800</bug_when>
    <thetext>Created attachment 12501
potential solution

I&apos;m not really submitting this for review at this point because I haven&apos;t done sufficient testing (and there&apos;s also a good chance that the check-in is not good). But preliminary testing seems to indicate that it doesn&apos;t break existing functionality, and it certainly does fix the www.google.com/ig memory leak. However, FWIW gmail still leaks a lot of objects, so it&apos;s quite clearly due to another issue. So even after we close this bug out we may need to open a new one for gmail or something.

Now the only real potential downfall I could see is if it&apos;s a possibility through normal execution that the Window.m_frame loses its document and then gets it back. If that can happen, then with this change the document will get garbage collected in between these two points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34505</commentid>
    <comment_count>22</comment_count>
      <attachid>12501</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-17 03:40:12 -0800</bug_when>
    <thetext>Comment on attachment 12501
potential solution

Yeah so I was right about this being bad :). This method doesn&apos;t take into account documents which may have been created but never actually attached to a window (such as due to an XMLHttpRequest).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34235</commentid>
    <comment_count>23</comment_count>
      <attachid>12554</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-19 04:13:00 -0800</bug_when>
    <thetext>Created attachment 12554
A better fix?

I&apos;m submitting this as hopefully a solid way to fix the problem. I haven&apos;t ran the test suite against it yet, but at least in fairly extensive browsing of many different pages which were JS-intensive, nothing appeared to broke, and it most definitely fixed this particular kind of memory leak (though it still has not fixed gmail). If the method I use is agreeable then I&apos;ll of course run the automated tests and fix any regression/speed issues if they pop up, but I honestly can&apos;t imagine it being noticably more costly than what&apos;s currently in there.

The basic premise of my patch is to store off pointers to a Document, JSDocument pair whenever a JSDocument is created in toJS(). Once those are stored off, in ScriptInterpreter::mark rather than doing what it currently does with the DOM wrappers, it iterates through the cache, and checks the refcount of the Document to determine whether the JSDocument and any DOM wrappers associated with it need to be marked.

My understanding of the Document refcount is as such (please correct me if I&apos;m wrong):

1. If a Document doesn&apos;t have a JSDocument associated with it (which only happens in the case of no JS whatsoever in the file), it means its refcount will be 1 while it&apos;s being used, and then it hits 0 and takes care off itself. But, since no JSDocument is created, the pair won&apos;t be added to the list of Documents to check during mark, so it&apos;s behavior will be no different than it is currently.

2. If a Document w/ a JSDocument has a refcount greater than 1, it means it&apos;s currently in use, and as such any DOM wrappers associated with that particular document need to be marked.

3. If a Document w/ a JSDocument has a refcount of 1, it means that the ONLY thing left pointing to it is its JSDocument. In this case, don&apos;t mark any of the DOM wrappers associated with that document. When the collector then gets to its sweep phase, all the DOM wrappers for this document will be swept, including its JSDocument. When the JSDocument gets swept, Document loses its last refcount, and then gets deleted itself.


Now, I know that the more popular solution seems to be to make it such that JSDocument::mark handles checking whether or not it marks itself, and then if it does, have it mark all the wrappers associated with it. The logic of my patch is very similar (eg., the document ultimately decides who&apos;s getting marked), but I think my implementation has less risk involved with it. It seemed to me that in order for the JSDocument::mark approach to work, a few things would be necessary:

1. First, regardless of whether or not you do it this way, you are still going to need to keep track of all the JSDocuments that currently exist somehow, since nothing seems to do this currently. Now it&apos;s true that the wrapper hash map does get Document,JSDocument pairs inserted into it, but it has every other DOM wrapper inserted into it as well, which means it&apos;d be terribly inefficient for the purpose of tracking which JSDocuments exist.

2. But even then, how does JSDocument itself know whether or not it shouldn&apos;t mark itself? It&apos;s going to coexist with the Document object, and it&apos;s always going to be referenced by some other node in the scenario which causes this memory leak. So it seems like the only way it&apos;d be able to make that decision would be through it&apos;s Document, in which case assuming that my logic was correct, the refCount way would be the quickest to know whether or not native code still needs the document or not.

3. The third, and perhaps biggest issue as I saw it was that currently, when you have a live JSDocument and run mark on it, it just marks itself and the JSDocumentPrototype JSObjects. It does not have any links between itself and any of the elements in the actual file, so in order to get this to work the interpreter&apos;s behavior would have to be changed such that when it starts up on a new document it creates its new JSDocument as soon as it can, and the either store off the pointer to it, or passes it around a lot. Then you&apos;d have to change quite a few entry points where new JSObjects are created, and make sure that if they&apos;re part of the DOM hierarchy, that they get added into the JSDocument tree structure, or however it is that the JSObjects are linked together such that if JSDocument was to mark itself, there would be an easy tree to traverse through in order to make sure all its children were marked as well. Now it could be that this part of the code is still a little over my head, but from looking at it, it seemed to me that the solution I implemented would just work very similar to what was desired, and additionally be much less risky than changing the whole JSObject hierarchy.

*Please note that I was rather tired when I wrote this, so if parts don&apos;t make sense I&apos;ll clarify tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34171</commentid>
    <comment_count>24</comment_count>
      <attachid>12567</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-20 01:37:59 -0800</bug_when>
    <thetext>Created attachment 12567
clean way to fix it

Ok, after talking to othermaciej some more in IRC, I finally understood how JSDocument::mark would only be called if the Document is actually still in use. So this patch implements a custom mark for JSDocument which marks itself, and then marks all the DOM wrappers associated with its Document.

I&apos;ve tested the attached patch it on many JS-intensive websites and it does not appear to break anything. Additionally, I ran the</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34172</commentid>
    <comment_count>25</comment_count>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-20 01:42:53 -0800</bug_when>
    <thetext>(In reply to comment #24)
Er, oops, I cut it off accidentally. It should say &quot;Additionally, I also ran the javascript-core tests, and 0 errors or regressions were reported.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34174</commentid>
    <comment_count>26</comment_count>
      <attachid>12568</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-20 02:29:23 -0800</bug_when>
    <thetext>Created attachment 12568
clean way w/ very minor style changes

Just very minor changes from the last patch, from mitzpettel&apos;s comments. Also, I ran run-webkit-tests, and there did not appear to be any that were failing as a result of my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34103</commentid>
    <comment_count>27</comment_count>
      <attachid>12568</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-20 08:14:39 -0800</bug_when>
    <thetext>Comment on attachment 12568
clean way w/ very minor style changes

+    //we need to mark any DOM wrappers associated with this document

Normally we put spaces after the &quot;//&quot; for comments. Also, I&apos;m not sure this comment is good. It just repeats what the function name says. If the issue is clarifying that these are &quot;wrappers&quot; then I think the ScriptInterpreter function should be named markDOMWrappersForDocument. And lets omit the comment.

         NodeMap::iterator nodeEnd = nodeDict-&gt;end();
+        
         for (NodeMap::iterator nodeIt = nodeDict-&gt;begin(); nodeIt != nodeEnd; ++nodeIt) {

I don&apos;t think that adding this blank line improves paragraphing/formatting.

Is there any way to test this in a regression test?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34061</commentid>
    <comment_count>28</comment_count>
      <attachid>12577</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-20 20:12:36 -0800</bug_when>
    <thetext>Created attachment 12577
clean fix w/ changes + test case

I removed the comment and extra newline from the code as suggested.

Additionally, I added support for a test function to grab the current JS object count, and constructed a test case which checks to see if the JS objects leak after refreshing an iframe which contains Mitz&apos;s &quot;ultra&quot; reduction for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34062</commentid>
    <comment_count>29</comment_count>
      <attachid>12578</attachid>
    <who name="Sanjay Madhav (chmmravatar)">sanjay12</who>
    <bug_when>2007-01-20 20:24:14 -0800</bug_when>
    <thetext>Created attachment 12578
fixed changelog whitespace from last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33984</commentid>
    <comment_count>30</comment_count>
      <attachid>12578</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-21 08:21:35 -0800</bug_when>
    <thetext>Comment on attachment 12578
fixed changelog whitespace from last patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33910</commentid>
    <comment_count>31</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-21 13:10:07 -0800</bug_when>
    <thetext>Landed in r19013.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12439</attachid>
            <date>2007-01-14 21:32:39 -0800</date>
            <delta_ts>2007-01-14 21:32:39 -0800</delta_ts>
            <desc>JS object leak test case</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>932</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjx0aXRsZT5Hb29nbGUgSUcgVGVzdCBDYXNlPC90aXRsZT48L2hlYWQ+Cjxi
b2R5PgpIZWxsbyBXb3JsZCEKPGRpdiBpZD0ibXl0ZXh0Ij50ZXN0PC9kaXY+Cgo8c2NyaXB0PgoK
Ly90aGlzIG5lZWRzIHRvIGV4aXN0IGFzIGEgZnVuY3Rpb24tb2JqZWN0IG9yIGl0IGRvZXNuJ3Qg
bGVhawpmdW5jdGlvbiBNeVRlc3RGdW5jKCkKewogICAgCiAgICAvL2JpbmQgbmVjZXNzYXJ5CiAg
ICBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChhKQogICAgewogICAgfTsKICAg
IAogICAgZnVuY3Rpb24ga2V5ZG93bmV2ZW50KGMpCiAgICB7CiAgICAgICAgLy93ZSBuZWVkIHRv
IGFjY2VzcyBkb2N1bWVudCBpbiBpdHMgZXZlbnQgaGFuZGxlciB0byBjYXVzZSB0aGlzIGxlYWsK
ICAgICAgICB2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXl0ZXh0Iik7CiAgICB9Cgog
ICAgLy91c2UgdXAgYSBsb3Qgb2YgbWVtb3J5IHNvIHRoZSBsZWFrIGlzIHZpc2libGUgaW4gYWN0
aXZpdHkgbW9uaXRvcgogICAgLy95b3UnbGwgc2VlIGFib3V0IDRtYiBwZXIgcmVmcmVzaAogICAg
dmFyIG15YXJyYXkgPSBuZXcgQXJyYXkoMTAwMDAwKTsKICAgIGZvciAodmFyIGk9MDtpPDEwMDAw
MDtpKyspCiAgICB7CiAgICAgICAgbXlhcnJheVtpXT0yNzsKICAgIH0KICAgIAogICAgLy9pZiB5
b3UganVzdCBkbyBhIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIsIGl0IGRvZXNuJ3QgbGVhawog
ICAgLy9idXQgaWYgeW91IHN0b3JlIG9mZiBkb2N1bWVudCBhcyBhIHZhcmlhYmxlLCBpdCBkb2Vz
IGxlYWsKICAgIHZhciB6eiA9IGRvY3VtZW50OwogICAgenouYWRkRXZlbnRMaXN0ZW5lcigia2V5
ZG93biIsIGtleWRvd25ldmVudCwgZmFsc2UpOwoKfQoKbmV3IE15VGVzdEZ1bmMoKTsKCjwvc2Ny
aXB0Pgo8L2JvZHk+CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12482</attachid>
            <date>2007-01-16 05:35:18 -0800</date>
            <delta_ts>2007-01-16 05:35:18 -0800</delta_ts>
            <desc>Further reduction</desc>
            <filename>10773 reduction.html</filename>
            <type>text/html</type>
            <size>143</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogICAgPHRpdGxlPlJlbG9hZCBtZSBhbmQgSSB3aWxsIGxlYWs8L3RpdGxl
Pgo8L2hlYWQ+Cjxib2R5Pgo8c2NyaXB0PgogICAgZG9jdW1lbnQuYm9keS5mb28gPSBkb2N1bWVu
dDsKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12488</attachid>
            <date>2007-01-16 08:39:11 -0800</date>
            <delta_ts>2007-01-16 08:53:08 -0800</delta_ts>
            <desc>Possible fix</desc>
            <filename>10773_r0.patch</filename>
            <type>text/plain</type>
            <size>905</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwCShyZXZpc2lvbiAxODg4MSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAia2pzX2JpbmRpbmcu
aCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIwMSw2ICsyMDIsOSBAQCB2
b2lkIFNjcmlwdEludGVycHJldGVyOjptYXJrKGJvb2wgY3VycmVuCiB7CiAgICAgTm9kZVBlckRv
Y01hcDo6aXRlcmF0b3IgZGljdEVuZCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5lbmQoKTsKICAg
ICBmb3IgKE5vZGVQZXJEb2NNYXA6Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVzUGVyRG9jdW1l
bnQoKS5iZWdpbigpOyBkaWN0SXQgIT0gZGljdEVuZDsgKytkaWN0SXQpIHsKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZGljdEl0LT5maXJzdDsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+
cGFnZSgpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIE5vZGVNYXAqIG5vZGVEaWN0
ID0gZGljdEl0LT5zZWNvbmQ7CiAgICAgICAgIE5vZGVNYXA6Oml0ZXJhdG9yIG5vZGVFbmQgPSBu
b2RlRGljdC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTm9kZU1hcDo6aXRlcmF0b3Igbm9kZUl0ID0g
bm9kZURpY3QtPmJlZ2luKCk7IG5vZGVJdCAhPSBub2RlRW5kOyArK25vZGVJdCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12501</attachid>
            <date>2007-01-17 03:11:33 -0800</date>
            <delta_ts>2007-01-17 03:40:12 -0800</delta_ts>
            <desc>potential solution</desc>
            <filename>jsigleak.diff</filename>
            <type>text/plain</type>
            <size>2747</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDE4ODk4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3
Niw3IEBACiAgICAgICAgIHN0YXRpYyB2b2lkIGZvcmdldERPTU5vZGVGb3JEb2N1bWVudChXZWJD
b3JlOjpEb2N1bWVudCosIFdlYkNvcmU6Ok5vZGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZm9y
Z2V0QWxsRE9NTm9kZXNGb3JEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCopOwogICAgICAgICBz
dGF0aWMgdm9pZCB1cGRhdGVET01Ob2RlRG9jdW1lbnQoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6
OkRvY3VtZW50KiBvbGREb2MsIFdlYkNvcmU6OkRvY3VtZW50KiBuZXdEb2MpOworICAgICAgICBz
dGF0aWMgdm9pZCBtYXJrRE9NTm9kZURvY3VtZW50VHJlZShXZWJDb3JlOjpEb2N1bWVudCopOwog
CiAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7
IH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAJKHJldmlzaW9uIDE4ODk4
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5NywxMSArMTk3LDExIEBACiAgICAgfQogfQogCi12b2lkIFNjcmlwdEludGVycHJldGVy
OjptYXJrKGJvb2wgY3VycmVudFRocmVhZElzTWFpblRocmVhZCkKK3ZvaWQgU2NyaXB0SW50ZXJw
cmV0ZXI6Om1hcmtET01Ob2RlRG9jdW1lbnRUcmVlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICBOb2RlUGVyRG9jTWFwOjppdGVyYXRvciBkaWN0RW5kID0gZG9tTm9kZXNQZXJEb2N1bWVudCgp
LmVuZCgpOwotICAgIGZvciAoTm9kZVBlckRvY01hcDo6aXRlcmF0b3IgZGljdEl0ID0gZG9tTm9k
ZXNQZXJEb2N1bWVudCgpLmJlZ2luKCk7IGRpY3RJdCAhPSBkaWN0RW5kOyArK2RpY3RJdCkgewot
ICAgICAgICBOb2RlTWFwKiBub2RlRGljdCA9IGRpY3RJdC0+c2Vjb25kOworICAgIE5vZGVQZXJE
b2NNYXA6Oml0ZXJhdG9yIGl0ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmZpbmQoZG9jdW1lbnQp
OworICAgIGlmIChpdCAhPSBkb21Ob2Rlc1BlckRvY3VtZW50KCkuZW5kKCkpIHsKKyAgICAgICAg
Tm9kZU1hcCogbm9kZURpY3QgPSBpdC0+c2Vjb25kOwogICAgICAgICBOb2RlTWFwOjppdGVyYXRv
ciBub2RlRW5kID0gbm9kZURpY3QtPmVuZCgpOwogICAgICAgICBmb3IgKE5vZGVNYXA6Oml0ZXJh
dG9yIG5vZGVJdCA9IG5vZGVEaWN0LT5iZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsgKytub2Rl
SXQpIHsKICAgICAgICAgICAgIERPTU5vZGUqIG5vZGUgPSBub2RlSXQtPnNlY29uZDsKQEAgLTIx
Miw3ICsyMTIsMTIgQEAKICAgICAgICAgICAgICAgICBub2RlLT5tYXJrKCk7CiAgICAgICAgIH0K
ICAgICB9Cit9CiAKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6Om1hcmsoYm9vbCBjdXJyZW50VGhy
ZWFkSXNNYWluVGhyZWFkKQoreworICAgIE5vZGVQZXJEb2NNYXA6Oml0ZXJhdG9yIGRpY3RFbmQg
PSBkb21Ob2Rlc1BlckRvY3VtZW50KCkuZW5kKCk7CisKICAgICBpZiAoIWN1cnJlbnRUaHJlYWRJ
c01haW5UaHJlYWQpIHsKICAgICAgICAgLy8gT24gYWx0ZXJuYXRlIHRocmVhZHMsIERPTU9iamVj
dHMgcmVtYWluIGluIHRoZSBjYWNoZSBiZWNhdXNlIHRoZXkncmUgbm90IGNvbGxlY3RlZC4KICAg
ICAgICAgLy8gU28sIHRoZXkgbmVlZCBhbiBvcHBvcnR1bml0eSB0byBtYXJrIHRoZWlyIGNoaWxk
cmVuLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCShyZXZpc2lvbiAxODg5OCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2Myw2ICs0NjMsMTggQEAKIHZvaWQgV2luZG93OjptYXJrKCkKIHsKICAgSlNPYmplY3Q6Om1h
cmsoKTsKKyAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBpbnRlcnByZXRl
cigpKQorICB7CisgICAgLy9maXJzdCBtYXJrIHRoZSBkb2MgSlNPYmplY3QKKyAgICBET01PYmpl
Y3QqIGRvYyA9IGludGVycHJldGVyKCktPmdldERPTU9iamVjdChtX2ZyYW1lLT5kb2N1bWVudCgp
KTsKKyAgICBpZiAoZG9jKQorICAgIHsKKyAgICAgICAgaWYgKCFkb2MtPm1hcmtlZCgpKQorICAg
ICAgICAgICAgZG9jLT5tYXJrKCk7CisgICAgICAgIC8vbm93IG1hcmsgdGhlIGRvY3VtZW50J3Mg
dHJlZQorICAgICAgICBpbnRlcnByZXRlcigpLT5tYXJrRE9NTm9kZURvY3VtZW50VHJlZShtX2Zy
YW1lLT5kb2N1bWVudCgpKTsKKyAgICB9CisgIH0KICAgaWYgKHNjcmVlbiAmJiAhc2NyZWVuLT5t
YXJrZWQoKSkKICAgICBzY3JlZW4tPm1hcmsoKTsKICAgaWYgKGhpc3RvcnkgJiYgIWhpc3Rvcnkt
Pm1hcmtlZCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12554</attachid>
            <date>2007-01-19 04:13:00 -0800</date>
            <delta_ts>2007-01-20 01:37:59 -0800</delta_ts>
            <desc>A better fix?</desc>
            <filename>jsigleak2.diff</filename>
            <type>text/plain</type>
            <size>4620</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwCShyZXZpc2lvbiAxODk3MykKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw4IEBACiAjaW5jbHVkZSAia2pzX3dpbmRvdy5oIgogI2luY2x1ZGUgPGtqcy9jb2xs
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgIkpTRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRl
ICJTVkdFeGNlcHRpb24uaCIKQEAgLTU0LDYgKzU2LDcgQEAKIHR5cGVkZWYgSGFzaE1hcDx2b2lk
KiwgRE9NT2JqZWN0Kj4gRE9NT2JqZWN0TWFwOwogdHlwZWRlZiBIYXNoTWFwPE5vZGUqLCBET01O
b2RlKj4gTm9kZU1hcDsKIHR5cGVkZWYgSGFzaE1hcDxEb2N1bWVudCosIE5vZGVNYXAqPiBOb2Rl
UGVyRG9jTWFwOwordHlwZWRlZiBIYXNoTWFwPERvY3VtZW50KiwgSlNEb2N1bWVudCo+IEpTRG9j
dW1lbnRNYXA7CiAKIFVTdHJpbmcgRE9NT2JqZWN0Ojp0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25z
dAogewpAQCAtMTIxLDYgKzEyNCwxMiBAQAogICAgIHJldHVybiBzdGF0aWNET01Ob2Rlc1BlckRv
Y3VtZW50OwogfQogCitzdGF0aWMgSlNEb2N1bWVudE1hcCYgZG9jdW1lbnRKU0RvY3MoKQorewor
ICAgIHN0YXRpYyBKU0RvY3VtZW50TWFwIHN0YXRpY0RvY3VtZW50SlNEb2NzOworICAgIHJldHVy
biBzdGF0aWNEb2N1bWVudEpTRG9jczsKK30KKwogU2NyaXB0SW50ZXJwcmV0ZXI6OlNjcmlwdElu
dGVycHJldGVyKEpTT2JqZWN0KiBnbG9iYWwsIEZyYW1lKiBmcmFtZSkKICAgICA6IEludGVycHJl
dGVyKGdsb2JhbCkKICAgICAsIG1fZnJhbWUoZnJhbWUpCkBAIC0xOTUsMjEgKzIwNCwzNyBAQAog
ICAgICAgICBkZWxldGUgaXQtPnNlY29uZDsKICAgICAgICAgZG9tTm9kZXNQZXJEb2N1bWVudCgp
LnJlbW92ZShpdCk7CiAgICAgfQorICAgIAorICAgIGRvY3VtZW50SlNEb2NzKCkucmVtb3ZlKGRv
Y3VtZW50KTsKIH0KIAogdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6bWFyayhib29sIGN1cnJlbnRU
aHJlYWRJc01haW5UaHJlYWQpCiB7Ci0gICAgTm9kZVBlckRvY01hcDo6aXRlcmF0b3IgZGljdEVu
ZCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5lbmQoKTsKLSAgICBmb3IgKE5vZGVQZXJEb2NNYXA6
Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5iZWdpbigpOyBkaWN0SXQg
IT0gZGljdEVuZDsgKytkaWN0SXQpIHsKLSAgICAgICAgTm9kZU1hcCogbm9kZURpY3QgPSBkaWN0
SXQtPnNlY29uZDsKLSAgICAgICAgTm9kZU1hcDo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0
LT5lbmQoKTsKLSAgICAgICAgZm9yIChOb2RlTWFwOjppdGVyYXRvciBub2RlSXQgPSBub2RlRGlj
dC0+YmVnaW4oKTsgbm9kZUl0ICE9IG5vZGVFbmQ7ICsrbm9kZUl0KSB7Ci0gICAgICAgICAgICBE
T01Ob2RlKiBub2RlID0gbm9kZUl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICAvLyBkb24ndCBtYXJr
IHdyYXBwZXJzIGZvciBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlCi0gICAgICAgICAg
ICAvLyBkb2N1bWVudCAtIHRoZXkgc2hvdWxkIG5vdCBiZSBzYXZlZCBpZiB0aGUgbm9kZSBpcyBu
b3QKLSAgICAgICAgICAgIC8vIG90aGVyd2lzZSByZWFjaGFibGUgZnJvbSBKUy4KLSAgICAgICAg
ICAgIGlmIChub2RlLT5pbXBsKCktPmluRG9jdW1lbnQoKSAmJiAhbm9kZS0+bWFya2VkKCkpCi0g
ICAgICAgICAgICAgICAgbm9kZS0+bWFyaygpOworCisgICAgSlNEb2N1bWVudE1hcDo6aXRlcmF0
b3Igc2V0RW5kID0gZG9jdW1lbnRKU0RvY3MoKS5lbmQoKTsKKyAgICBmb3IgKEpTRG9jdW1lbnRN
YXA6Oml0ZXJhdG9yIHNldEl0ID0gZG9jdW1lbnRKU0RvY3MoKS5iZWdpbigpOyBzZXRJdCAhPSBz
ZXRFbmQ7ICsrc2V0SXQpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHNldEl0LT5maXJzdDsK
KyAgICAgICAgSlNEb2N1bWVudCoganNEb2MgPSBzZXRJdC0+c2Vjb25kOworICAgICAgICAKKyAg
ICAgICAgaWYgKGRvYyAmJiBkb2MtPnJlZkNvdW50KCkgPiAxKSB7CisgICAgICAgICAgICAvLyBt
YXJrIGl0c2VsZiBhbmQgdGhlbiBhbGwgdGhlIHdyYXBwZXJzIGFzc29jaWF0ZWQgd2l0aCBpdAor
ICAgICAgICAgICAgaWYgKGpzRG9jICYmICFqc0RvYy0+bWFya2VkKCkpCisgICAgICAgICAgICAg
ICAganNEb2MtPm1hcmsoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGVQZXJE
b2NNYXA6Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5maW5kKGRvYyk7
CisgICAgICAgICAgICBpZiAoZGljdEl0ICE9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5lbmQoKSkg
eworICAgICAgICAgICAgICAgIE5vZGVNYXAqIG5vZGVEaWN0ID0gZGljdEl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICAgICAgTm9kZU1hcDo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT5lbmQo
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKE5vZGVNYXA6Oml0ZXJh
dG9yIG5vZGVJdCA9IG5vZGVEaWN0LT5iZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsgKytub2Rl
SXQpIHsKKyAgICAgICAgICAgICAgICAgICAgRE9NTm9kZSogbm9kZSA9IG5vZGVJdC0+c2Vjb25k
OworICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBtYXJrIHdyYXBwZXJzIGZvciBub2RlcyB0
aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGRvY3VtZW50
IC0gdGhleSBzaG91bGQgbm90IGJlIHNhdmVkIGlmIHRoZSBub2RlIGlzIG5vdAorICAgICAgICAg
ICAgICAgICAgICAvLyBvdGhlcndpc2UgcmVhY2hhYmxlIGZyb20gSlMuCisgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5pbXBsKCktPmluRG9jdW1lbnQoKSAmJiAhbm9kZS0+bWFya2VkKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tYXJrKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDcsNiArMjcyLDExIEBA
CiAgICAgfQogfQogCit2b2lkIFNjcmlwdEludGVycHJldGVyOjpwdXREb2N1bWVudE9iamVjdChE
b2N1bWVudCogZG9jLCBKU0RvY3VtZW50KiBkb2NPYmplY3QpCit7CisgICAgZG9jdW1lbnRKU0Rv
Y3MoKS5hZGQoZG9jLCBkb2NPYmplY3QpOworfQorCiBib29sIFNjcmlwdEludGVycHJldGVyOjp3
YXNSdW5CeVVzZXJHZXN0dXJlKCkgY29uc3QKIHsKICAgICBpZiAobV9jdXJyZW50RXZlbnQpIHsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDE4OTczKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw4IEBACiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTdHJp
bmc7CisgICAgCisgICAgY2xhc3MgSlNEb2N1bWVudDsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiB9CkBAIC03Niw2ICs3OCw3IEBACiAgICAgICAgIHN0YXRpYyB2b2lkIGZvcmdl
dERPTU5vZGVGb3JEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCosIFdlYkNvcmU6Ok5vZGUqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZm9yZ2V0QWxsRE9NTm9kZXNGb3JEb2N1bWVudChXZWJDb3Jl
OjpEb2N1bWVudCopOwogICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVET01Ob2RlRG9jdW1lbnQo
V2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OkRvY3VtZW50KiBvbGREb2MsIFdlYkNvcmU6OkRvY3Vt
ZW50KiBuZXdEb2MpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREb2N1bWVudE9iamVjdChXZWJD
b3JlOjpEb2N1bWVudCosIFdlYkNvcmU6OkpTRG9jdW1lbnQqKTsKIAogICAgICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfZG9tLmNwcAkocmV2aXNpb24gMTg5NzMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDgsNiArOTQ4LDcgQEAKICAgICBXaW5k
b3c6OnJldHJpZXZlV2luZG93KG4tPmZyYW1lKCkpLT5wdXREaXJlY3QoImRvY3VtZW50IiwgcmV0
LCBEb250RGVsZXRlfFJlYWRPbmx5KTsKIAogICBpbnRlcnAtPnB1dERPTU9iamVjdChuLCByZXQp
OworICBpbnRlcnAtPnB1dERvY3VtZW50T2JqZWN0KG4sIHJldCk7CiAKICAgcmV0dXJuIHJldDsK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12567</attachid>
            <date>2007-01-20 01:37:59 -0800</date>
            <delta_ts>2007-01-20 02:29:23 -0800</delta_ts>
            <desc>clean way to fix it</desc>
            <filename>jsigleak3.diff</filename>
            <type>text/plain</type>
            <size>9776</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODk5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDctMDEtMjAgIFNhbmpheSBNYWRoYXYgIDxzYW5qYXkxMkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4IGZvcjogPHJkYXI6Ly9wcm9ibGVtLzQ5Mjg1ODM+IE1lbW9yeSB1c2FnZSBncm93cyB3aGVu
IHJlbG9hZGluZyBnb29nbGUuY29tL2lnCisKKyAgICAgICAgSlNEb2N1bWVudHMgYXJlIG5vdyBy
ZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aGUgRE9NIHdyYXBwZXJzIGFzc29jaWF0ZWQgd2l0aCB0
aGVtLCB3aGVuIHRoZXkgZ2V0IG1hcmtlZC4KKyAgICAgICAgVGhpcyBmaXhlcyBhIEpTIG9iamVj
dCBsZWFrIHdoZW4gYSBET00gd3JhcHBlciBoYXMgYSByZWZlcmVuY2UgdG8gYSBKU0RvY3VtZW50
IHRoYXQgaXMgb3RoZXJ3aXNlIG5vdCByZWFjaGFibGUuCisJCisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bWFyayk6CisgICAg
ICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjpTY3JpcHRJ
bnRlcnByZXRlcjo6bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQpOgorICAgICAgICAoS0pTOjpTY3Jp
cHRJbnRlcnByZXRlcjo6bWFyayk6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorCiAyMDA3LTAxLTE5ICBBZGVsZSBQZXRl
cnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDIyLDYgKzU0MjIsMTAgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJpbmRpbmdzXGpz
XEpTRG9jdW1lbnRDdXN0b20uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYmluZGluZ3NcanNcSlNIVE1MRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODk5NykKKysrIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ2LDYg
KzEzNDYsNyBAQAogCQk4NUZGMzEzQzBBQUZCRDcyMDAzNzRGMzggLyogRE9NV2hlZWxFdmVudFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
RkYzMTNCMEFBRkJENzIwMDM3NEYzOCAvKiBET01XaGVlbEV2ZW50UHJpdmF0ZS5oICovOyB9Owog
CQk4NUZGMzE1QTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTgwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQuaCAqLzsgfTsKIAkJODVGRjMxNUIwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9h
cmRFdmVudC5tbSAqLzsgfTsKKwkJOTI5MjY0NzcwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1l
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTI5MjY0NzYwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwICovOyB9
OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAv
KiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzMDcwNTZDMDlFMEFGOEYwMEIxN0ZFNCAvKiBjc3NoZWxwZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0Nzg2MDk3Q0FBQzgwMDk0QzlF
NCAvKiBjc3NoZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5MzA3MDVEODA5RTBDOUI3MDBCMTdGRTQgLyogSlNDb3VudGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDcwNUQ3MDlFMEM5
QjcwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuY3BwICovOyB9OwpAQCAtNDM2OSw2ICs0MzcwLDcgQEAK
IAkJODVGRjMxM0IwQUFGQkQ3MjAwMzc0RjM4IC8qIERPTVdoZWVsRXZlbnRQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaGVlbEV2ZW50UHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1ODBBQUZCRkNCMDAzNzRGMzggLyog
RE9NS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
S2V5Ym9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1OTBB
QUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01LZXlib2FyZEV2ZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MjkyNjQ3NjBCNjFGQzcyMDBCNDFEMzQgLyogSlNEb2N1bWVudEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFC
NkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA3MDU5MDA5RTBDNzU4MDBC
MTdGRTQgLyogQ1NTUHJpbWl0aXZlVmFsdWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gQ1NTUHJpbWl0aXZlVmFsdWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ291bnRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NzgwLDYg
Kzg3ODIsNyBAQAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8sCiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5w
bSAqLywKIAkJCQkxQTlFRjQ1NjBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwICovLAorCQkJCTkyOTI2NDc2MEI2MUZDNzIwMEI0MUQzNCAvKiBK
U0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk5MzhFNjVGNjA5RjA5ODVEMDA4QTQ4RUMgLyog
SlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLywKIAkJCQk5MzhFNjVGMDA5RjA5ODQw
MDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggKi8sCiAJCQkJQThEMDY1
QUQwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCAqLywKQEAg
LTEyMzQzLDYgKzEyMzQ2LDcgQEAKIAkJCQlCMkYyNzNGMzBCNUJGQUM4MDA2OEM5NTYgLyogU1ZH
RWxlbWVudEluc3RhbmNlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJBNjgyMzBCNUJF
REU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
MENFQkFEMEI2MEZDNDkwMDc2MzdDMSAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTI5MjY0NzcwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Rv
Y3VtZW50LmgiCisjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEb2N1bWVudDsKKyAgICAKK3ZvaWQgSlNEb2N1bWVudDo6bWFyaygpCit7Cisg
ICAgRE9NT2JqZWN0OjptYXJrKCk7CisgICAgLy93ZSBuZWVkIHRvIG1hcmsgYW55IERPTSB3cmFw
cGVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVudAorICAgIEtKUzo6U2NyaXB0SW50ZXJw
cmV0ZXI6Om1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8RG9jdW1lbnQq
PihpbXBsKCkpKTsKK30KKyAgICAKK30KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2Jp
bmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcu
Y3BwCShyZXZpc2lvbiAxODk5NykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMjIgKzE5NywyNiBAQCB2b2lkIFNjcmlwdEludGVy
cHJldGVyOjpmb3JnZXRBbGxET01Ob2RlCiAgICAgfQogfQogCi12b2lkIFNjcmlwdEludGVycHJl
dGVyOjptYXJrKGJvb2wgY3VycmVudFRocmVhZElzTWFpblRocmVhZCkKK3ZvaWQgU2NyaXB0SW50
ZXJwcmV0ZXI6Om1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2MpCiB7Ci0gICAg
Tm9kZVBlckRvY01hcDo6aXRlcmF0b3IgZGljdEVuZCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5l
bmQoKTsKLSAgICBmb3IgKE5vZGVQZXJEb2NNYXA6Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVz
UGVyRG9jdW1lbnQoKS5iZWdpbigpOyBkaWN0SXQgIT0gZGljdEVuZDsgKytkaWN0SXQpIHsKLSAg
ICAgICAgTm9kZU1hcCogbm9kZURpY3QgPSBkaWN0SXQtPnNlY29uZDsKLSAgICAgICAgTm9kZU1h
cDo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT5lbmQoKTsKLSAgICAgICAgZm9yIChOb2Rl
TWFwOjppdGVyYXRvciBub2RlSXQgPSBub2RlRGljdC0+YmVnaW4oKTsgbm9kZUl0ICE9IG5vZGVF
bmQ7ICsrbm9kZUl0KSB7Ci0gICAgICAgICAgICBET01Ob2RlKiBub2RlID0gbm9kZUl0LT5zZWNv
bmQ7Ci0gICAgICAgICAgICAvLyBkb24ndCBtYXJrIHdyYXBwZXJzIGZvciBub2RlcyB0aGF0IGFy
ZSBubyBsb25nZXIgaW4gdGhlCi0gICAgICAgICAgICAvLyBkb2N1bWVudCAtIHRoZXkgc2hvdWxk
IG5vdCBiZSBzYXZlZCBpZiB0aGUgbm9kZSBpcyBub3QKLSAgICAgICAgICAgIC8vIG90aGVyd2lz
ZSByZWFjaGFibGUgZnJvbSBKUy4KLSAgICAgICAgICAgIGlmIChub2RlLT5pbXBsKCktPmluRG9j
dW1lbnQoKSAmJiAhbm9kZS0+bWFya2VkKCkpCi0gICAgICAgICAgICAgICAgbm9kZS0+bWFyaygp
OworICAgICAgICBOb2RlUGVyRG9jTWFwOjppdGVyYXRvciBkaWN0SXQgPSBkb21Ob2Rlc1BlckRv
Y3VtZW50KCkuZmluZChkb2MpOworICAgICAgICBpZiAoZGljdEl0ICE9IGRvbU5vZGVzUGVyRG9j
dW1lbnQoKS5lbmQoKSkgeworICAgICAgICAgICAgTm9kZU1hcCogbm9kZURpY3QgPSBkaWN0SXQt
PnNlY29uZDsKKyAgICAgICAgICAgIE5vZGVNYXA6Oml0ZXJhdG9yIG5vZGVFbmQgPSBub2RlRGlj
dC0+ZW5kKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoTm9kZU1hcDo6aXRlcmF0
b3Igbm9kZUl0ID0gbm9kZURpY3QtPmJlZ2luKCk7IG5vZGVJdCAhPSBub2RlRW5kOyArK25vZGVJ
dCkgeworICAgICAgICAgICAgICAgIERPTU5vZGUqIG5vZGUgPSBub2RlSXQtPnNlY29uZDsKKyAg
ICAgICAgICAgICAgICAvLyBkb24ndCBtYXJrIHdyYXBwZXJzIGZvciBub2RlcyB0aGF0IGFyZSBu
byBsb25nZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gZG9jdW1lbnQgLSB0aGV5IHNob3Vs
ZCBub3QgYmUgc2F2ZWQgaWYgdGhlIG5vZGUgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gb3Ro
ZXJ3aXNlIHJlYWNoYWJsZSBmcm9tIEpTLgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5pbXBs
KCktPmluRG9jdW1lbnQoKSAmJiAhbm9kZS0+bWFya2VkKCkpCisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1hcmsoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KK30KIAordm9p
ZCBTY3JpcHRJbnRlcnByZXRlcjo6bWFyayhib29sIGN1cnJlbnRUaHJlYWRJc01haW5UaHJlYWQp
Cit7CiAgICAgaWYgKCFjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkKSB7CiAgICAgICAgIC8vIE9u
IGFsdGVybmF0ZSB0aHJlYWRzLCBET01PYmplY3RzIHJlbWFpbiBpbiB0aGUgY2FjaGUgYmVjYXVz
ZSB0aGV5J3JlIG5vdCBjb2xsZWN0ZWQuCiAgICAgICAgIC8vIFNvLCB0aGV5IG5lZWQgYW4gb3Bw
b3J0dW5pdHkgdG8gbWFyayB0aGVpciBjaGlsZHJlbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19i
aW5kaW5nLmgJKHJldmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmlu
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICBzdGF0aWMgdm9pZCBmb3JnZXRET01Ob2RlRm9yRG9jdW1lbnQoV2ViQ29yZTo6RG9j
dW1lbnQqLCBXZWJDb3JlOjpOb2RlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGZvcmdldEFsbERP
TU5vZGVzRm9yRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKTsKICAgICAgICAgc3RhdGljIHZv
aWQgdXBkYXRlRE9NTm9kZURvY3VtZW50KFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpEb2N1bWVu
dCogb2xkRG9jLCBXZWJDb3JlOjpEb2N1bWVudCogbmV3RG9jKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgbWFya0RPTU5vZGVzRm9yRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKTsKIAogICAgICAg
ICBXZWJDb3JlOjpGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKSW5k
ZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHJldmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKIG1vZHVsZSBjb3JlIHsKIAotICAg
IGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRXZlbnRUYXJnZXROb2RlLCBHZW5lcmF0
ZUNvbnN0cnVjdG9yXSBEb2N1bWVudCA6IEV2ZW50VGFyZ2V0Tm9kZSB7CisgICAgaW50ZXJmYWNl
IFtMZWdhY3lQYXJlbnQ9S0pTOjpET01FdmVudFRhcmdldE5vZGUsIEdlbmVyYXRlQ29uc3RydWN0
b3IsIEN1c3RvbU1hcmtGdW5jdGlvbl0gRG9jdW1lbnQgOiBFdmVudFRhcmdldE5vZGUgewogCiAg
ICAgICAgIC8vIERPTSBMZXZlbCAxIENvcmUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12568</attachid>
            <date>2007-01-20 02:29:23 -0800</date>
            <delta_ts>2007-01-21 12:50:39 -0800</delta_ts>
            <desc>clean way w/ very minor style changes</desc>
            <filename>jsigleak3.diff</filename>
            <type>text/plain</type>
            <size>9067</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODk5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDctMDEtMjAgIFNhbmpheSBNYWRoYXYgIDxzYW5qYXkxMkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4IGZvcjogPHJkYXI6Ly9wcm9ibGVtLzQ5Mjg1ODM+IE1lbW9yeSB1c2FnZSBncm93cyB3aGVu
IHJlbG9hZGluZyBnb29nbGUuY29tL2lnCisKKyAgICAgICAgSlNEb2N1bWVudHMgYXJlIG5vdyBy
ZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aGUgRE9NIHdyYXBwZXJzIGFzc29jaWF0ZWQgd2l0aCB0
aGVtLCB3aGVuIHRoZXkgZ2V0IG1hcmtlZC4KKyAgICAgICAgVGhpcyBmaXhlcyBhIEpTIG9iamVj
dCBsZWFrIHdoZW4gYSBET00gd3JhcHBlciBoYXMgYSByZWZlcmVuY2UgdG8gYSBKU0RvY3VtZW50
IHRoYXQgaXMgb3RoZXJ3aXNlIG5vdCByZWFjaGFibGUuCisJCisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bWFyayk6CisgICAg
ICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjpTY3JpcHRJ
bnRlcnByZXRlcjo6bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQpOgorICAgICAgICAoS0pTOjpTY3Jp
cHRJbnRlcnByZXRlcjo6bWFyayk6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorCiAyMDA3LTAxLTE5ICBBZGVsZSBQZXRl
cnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDIyLDYgKzU0MjIsMTAgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJpbmRpbmdzXGpz
XEpTRG9jdW1lbnRDdXN0b20uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYmluZGluZ3NcanNcSlNIVE1MRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODk5NykKKysrIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ2LDYg
KzEzNDYsNyBAQAogCQk4NUZGMzEzQzBBQUZCRDcyMDAzNzRGMzggLyogRE9NV2hlZWxFdmVudFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
RkYzMTNCMEFBRkJENzIwMDM3NEYzOCAvKiBET01XaGVlbEV2ZW50UHJpdmF0ZS5oICovOyB9Owog
CQk4NUZGMzE1QTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTgwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQuaCAqLzsgfTsKIAkJODVGRjMxNUIwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9h
cmRFdmVudC5tbSAqLzsgfTsKKwkJOTI5MjY0NzcwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1l
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTI5MjY0NzYwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwICovOyB9
OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAv
KiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzMDcwNTZDMDlFMEFGOEYwMEIxN0ZFNCAvKiBjc3NoZWxwZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0Nzg2MDk3Q0FBQzgwMDk0QzlF
NCAvKiBjc3NoZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5MzA3MDVEODA5RTBDOUI3MDBCMTdGRTQgLyogSlNDb3VudGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDcwNUQ3MDlFMEM5
QjcwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuY3BwICovOyB9OwpAQCAtNDM2OSw2ICs0MzcwLDcgQEAK
IAkJODVGRjMxM0IwQUFGQkQ3MjAwMzc0RjM4IC8qIERPTVdoZWVsRXZlbnRQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaGVlbEV2ZW50UHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1ODBBQUZCRkNCMDAzNzRGMzggLyog
RE9NS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
S2V5Ym9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1OTBB
QUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01LZXlib2FyZEV2ZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MjkyNjQ3NjBCNjFGQzcyMDBCNDFEMzQgLyogSlNEb2N1bWVudEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFC
NkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA3MDU5MDA5RTBDNzU4MDBC
MTdGRTQgLyogQ1NTUHJpbWl0aXZlVmFsdWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gQ1NTUHJpbWl0aXZlVmFsdWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ291bnRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NzgwLDYg
Kzg3ODIsNyBAQAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8sCiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5w
bSAqLywKIAkJCQkxQTlFRjQ1NjBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRDdXN0b20uY3BwICovLAorCQkJCTkyOTI2NDc2MEI2MUZDNzIwMEI0MUQzNCAvKiBK
U0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk5MzhFNjVGNjA5RjA5ODVEMDA4QTQ4RUMgLyog
SlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLywKIAkJCQk5MzhFNjVGMDA5RjA5ODQw
MDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggKi8sCiAJCQkJQThEMDY1
QUQwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCAqLywKQEAg
LTEyMzQzLDYgKzEyMzQ2LDcgQEAKIAkJCQlCMkYyNzNGMzBCNUJGQUM4MDA2OEM5NTYgLyogU1ZH
RWxlbWVudEluc3RhbmNlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJBNjgyMzBCNUJF
REU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
MENFQkFEMEI2MEZDNDkwMDc2MzdDMSAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTI5MjY0NzcwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQu
aCIKKworI2luY2x1ZGUgImtqc19iaW5kaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTRG9jdW1lbnQ6Om1hcmsoKQoreworICAgIERP
TU9iamVjdDo6bWFyaygpOworICAgIC8vd2UgbmVlZCB0byBtYXJrIGFueSBET00gd3JhcHBlcnMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQKKyAgICBLSlM6OlNjcmlwdEludGVycHJldGVy
OjptYXJrRE9NTm9kZXNGb3JEb2N1bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGltcGwoKSkp
OworfQorICAgIAorfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAJKHJldmlz
aW9uIDE4OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NywxMiArMTk3LDEzIEBAIHZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OmZv
cmdldEFsbERPTU5vZGUKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6Om1hcmso
Ym9vbCBjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkKQordm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6
bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvYykKIHsKLSAgICBOb2RlUGVyRG9j
TWFwOjppdGVyYXRvciBkaWN0RW5kID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmVuZCgpOwotICAg
IGZvciAoTm9kZVBlckRvY01hcDo6aXRlcmF0b3IgZGljdEl0ID0gZG9tTm9kZXNQZXJEb2N1bWVu
dCgpLmJlZ2luKCk7IGRpY3RJdCAhPSBkaWN0RW5kOyArK2RpY3RJdCkgeworICAgIE5vZGVQZXJE
b2NNYXA6Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5maW5kKGRvYyk7
CisgICAgaWYgKGRpY3RJdCAhPSBkb21Ob2Rlc1BlckRvY3VtZW50KCkuZW5kKCkpIHsKICAgICAg
ICAgTm9kZU1hcCogbm9kZURpY3QgPSBkaWN0SXQtPnNlY29uZDsKICAgICAgICAgTm9kZU1hcDo6
aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT5lbmQoKTsKKyAgICAgICAgCiAgICAgICAgIGZv
ciAoTm9kZU1hcDo6aXRlcmF0b3Igbm9kZUl0ID0gbm9kZURpY3QtPmJlZ2luKCk7IG5vZGVJdCAh
PSBub2RlRW5kOyArK25vZGVJdCkgewogICAgICAgICAgICAgRE9NTm9kZSogbm9kZSA9IG5vZGVJ
dC0+c2Vjb25kOwogICAgICAgICAgICAgLy8gZG9uJ3QgbWFyayB3cmFwcGVycyBmb3Igbm9kZXMg
dGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZQpAQCAtMjEyLDcgKzIxMywxMCBAQCB2b2lkIFNjcmlw
dEludGVycHJldGVyOjptYXJrKGJvb2wgY3VycmVuCiAgICAgICAgICAgICAgICAgbm9kZS0+bWFy
aygpOwogICAgICAgICB9CiAgICAgfQorfQogCit2b2lkIFNjcmlwdEludGVycHJldGVyOjptYXJr
KGJvb2wgY3VycmVudFRocmVhZElzTWFpblRocmVhZCkKK3sKICAgICBpZiAoIWN1cnJlbnRUaHJl
YWRJc01haW5UaHJlYWQpIHsKICAgICAgICAgLy8gT24gYWx0ZXJuYXRlIHRocmVhZHMsIERPTU9i
amVjdHMgcmVtYWluIGluIHRoZSBjYWNoZSBiZWNhdXNlIHRoZXkncmUgbm90IGNvbGxlY3RlZC4K
ICAgICAgICAgLy8gU28sIHRoZXkgbmVlZCBhbiBvcHBvcnR1bml0eSB0byBtYXJrIHRoZWlyIGNo
aWxkcmVuLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuaAkocmV2aXNpb24gMTg5OTcp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDYgKzc2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGZvcmdl
dERPTU5vZGVGb3JEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCosIFdlYkNvcmU6Ok5vZGUqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZm9yZ2V0QWxsRE9NTm9kZXNGb3JEb2N1bWVudChXZWJDb3Jl
OjpEb2N1bWVudCopOwogICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVET01Ob2RlRG9jdW1lbnQo
V2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OkRvY3VtZW50KiBvbGREb2MsIFdlYkNvcmU6OkRvY3Vt
ZW50KiBuZXdEb2MpOworICAgICAgICBzdGF0aWMgdm9pZCBtYXJrRE9NTm9kZXNGb3JEb2N1bWVu
dChXZWJDb3JlOjpEb2N1bWVudCopOwogCiAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMTg5
OTcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcg
KzIwLDcgQEAKIAogbW9kdWxlIGNvcmUgewogCi0gICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9
S0pTOjpET01FdmVudFRhcmdldE5vZGUsIEdlbmVyYXRlQ29uc3RydWN0b3JdIERvY3VtZW50IDog
RXZlbnRUYXJnZXROb2RlIHsKKyAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1LSlM6OkRPTUV2
ZW50VGFyZ2V0Tm9kZSwgR2VuZXJhdGVDb25zdHJ1Y3RvciwgQ3VzdG9tTWFya0Z1bmN0aW9uXSBE
b2N1bWVudCA6IEV2ZW50VGFyZ2V0Tm9kZSB7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDEgQ29y
ZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12577</attachid>
            <date>2007-01-20 20:12:36 -0800</date>
            <delta_ts>2007-01-20 20:24:14 -0800</delta_ts>
            <desc>clean fix w/ changes + test case</desc>
            <filename>jsleak4.diff</filename>
            <type>text/plain</type>
            <size>15610</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MDA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDctMDEtMjAgIFNhbmpheSBNYWRoYXYgIDxz
YW5qYXkxMkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCisKKyAgICAg
ICAgVGVzdCBmb3I6IDxyZGFyOi8vcHJvYmxlbS80OTI4NTgzPiBNZW1vcnkgdXNhZ2UgZ3Jvd3Mg
d2hlbiByZWxvYWRpbmcgZ29vZ2xlLmNvbS9pZworICAgICAgICAKKwkqIGZhc3QvZG9tL2djLTEw
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2MtMTAuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2djLTEwLWZyYW1lLmh0bWw6IEFkZGVk
LgorCiAyMDA3LTAxLTIwICBNaXR6IFBldHRlbCAgPG1pdHpAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNYWNpZWouCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzcyeDM2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNzcyOiAiVGhpcyBwYWdlIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWZy
ZXNoIG9mIGEgcGFnZSB3aGljaCBob2xkcyBhIGRvY3VtZW50IHJlZmVyZW5jZSBpbiBpdHMgRE9N
IHdyYXBwZXIgdHJlZSBkb2VzIG5vdCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lk
dGggMjE5OiAibGVhayBhbGwgb2YgaXRzIGFzc29jaWF0ZWQgSlMgb2JqZWN0cy4iCisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsNTIpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM3NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDM3NDogIklmIHRoZSB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIHNpbmdsZSAnUEFT
UycgbWVzc2FnZSBiZWxvdy4iCisgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDg2KSBzaXpl
IDc4NHgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCw5Nikgc2l6ZSA3ODR4MTUKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTUgW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMzA0eDE1CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAzMDQ6ICJQQVNTOiBSZWZyZXNoIGRpZCBub3QgbGVhayBKUyBvYmplY3RzLiIKKyAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDExMSkgc2l6ZSA3ODR4MTUwCisgICAg
ICAgIFJlbmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCisgICAg
ICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCisgICAgICAgICAgICBSZW5kZXJWaWV3
IGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAw
eDE1MAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE1
MAorICAgICAgICAgICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDI4NHgxMzQK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTEwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2djLTEwLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+R0MgdGVzdCAxMDwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24g
cHJpbnQobWVzc2FnZSwgY29sb3IpIAoreworICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFncmFwaC5zdHlsZS5mb250RmFtaWx5
ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAgICAgICBwYXJhZ3JhcGguc3R5bGUu
Y29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK3ZhciBiZWZvcmUsYWZ0ZXI7Cit2YXIgdGhyZXNo
b2xkID0gMzsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xs
ZXIpCisgICAgeworICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworICAgICAgICBiZWZv
cmUgPSBHQ0NvbnRyb2xsZXIuZ2V0SlNPYmplY3RDb3VudCgpOworICAgICAgICAKKyAgICAgICAg
d2luZG93LmZyYW1lcy5teWZyYW1lLmxvY2F0aW9uLnJlbG9hZCh0cnVlKTsKKworICAgICAgICBH
Q0NvbnRyb2xsZXIuY29sbGVjdCgpOworICAgICAgICBhZnRlciA9IEdDQ29udHJvbGxlci5nZXRK
U09iamVjdENvdW50KCk7CisgICAgICAgIAorICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IHdlIGNh
bm5vdCBkbyBhIHN0cmljdCBjaGVjayBoZXJlIGJlY2F1c2UgdGhlcmUgaXMgc3RpbGwgdmVyeSBt
aW5vciAoMykgSlMgb2JqZWN0IGluY3JlYXNlLAorICAgICAgICAvLyBsaWtlbHkgZHVlIHRvIHRl
bXBvcmFyeSBKUyBvYmplY3RzIGJlaW5nIGNyZWF0ZWQgZHVyaW5nIGZ1cnRoZXIgZXhlY3V0aW9u
IG9mIHRoaXMgdGVzdCBmdW5jdGlvbi4KKyAgICAgICAgLy8gSG93ZXZlciwgdGhlIGlmcmFtZSBk
b2N1bWVudCBsZWFraW5nIGV2ZXJ5dGhpbmcgaGFzIGFuIGFkZGl0aW9uIG9mIH4yNSBvYmplY3Rz
IGV2ZXJ5CisgICAgICAgIC8vIHJlZnJlc2gsIHNvIGl0IHN0aWxsIGlzIGFuIGFjY3VyYXRlIHRl
c3QuCisgICAgICAgIGlmIChhZnRlciA+IChiZWZvcmUgKyB0aHJlc2hvbGQpKQorICAgICAgICB7
CisgICAgICAgICAgICBwcmludCgiRkFJTDogIiArIGJlZm9yZSArICIgb2JqZWN0cyBiZWZvcmUg
cmVmcmVzaCwgIiArIGFmdGVyICsgIiBvYmplY3RzIGFmdGVyIHJlZnJlc2guIiwgInJlZCIpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnQoIlBB
U1M6IFJlZnJlc2ggZGlkIG5vdCBsZWFrIEpTIG9iamVjdHMuIiwgImdyZWVuIik7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcHJpbnQoIldBUk5JTkc6IFRlc3Qg
Y2Fubm90IHJ1biBpZiBHQ0NvbnRyb2xsZXIgZG9lcyBub3QgZXhpc3QuIFRodXMgaXQgb25seSBy
dW5zIGZyb20gdGhlIHRlc3QgaW50ZXJmYWNlLiIsICJyZWQiKTsKKyAgICB9Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBzdHlsZT0iY29sb3I6IGJsYWNrIiBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UaGlzIHBhZ2UgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlZnJlc2ggb2Yg
YSBwYWdlIHdoaWNoIGhvbGRzIGEgZG9jdW1lbnQgcmVmZXJlbmNlIGluIGl0cyBET00gd3JhcHBl
ciB0cmVlCitkb2VzIG5vdCBsZWFrIGFsbCBvZiBpdHMgYXNzb2NpYXRlZCBKUyBvYmplY3RzLjwv
cD4KKzxwPklmIHRoZSB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIHNpbmdsZSAnUEFTUycgbWVz
c2FnZSBiZWxvdy48L3A+Cis8aHI+CisKKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorCis8aWZy
YW1lIG5hbWU9Im15ZnJhbWUiIGlkPSJteWZyYW1lIiBzcmM9InJlc291cmNlcy9nYy0xMC1mcmFt
ZS5odG1sIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvZ2MtMTAtZnJhbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvZ2MtMTAtZnJhbWUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9nYy0xMC1m
cmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5SZWxvYWQgbWUgYW5kIEkgd2lsbCBsZWFrPC90aXRsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdD4KKyAgICBkb2N1bWVudC5ib2R5LmZvbyA9IGRvY3VtZW50OworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMDYpCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDA3LTAxLTIwICBTYW5qYXkg
TWFkaGF2ICA8c2FuamF5MTJAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
LgorCisgICAgICAgIEZpeCBmb3I6IDxyZGFyOi8vcHJvYmxlbS80OTI4NTgzPiBNZW1vcnkgdXNh
Z2UgZ3Jvd3Mgd2hlbiByZWxvYWRpbmcgZ29vZ2xlLmNvbS9pZworCisgICAgICAgIEpTRG9jdW1l
bnRzIGFyZSBub3cgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhlIERPTSB3cmFwcGVycyBhc3Nv
Y2lhdGVkIHdpdGggdGhlbSwgd2hlbiB0aGV5IGdldCBtYXJrZWQuCisgICAgICAgIFRoaXMgZml4
ZXMgYSBKUyBvYmplY3QgbGVhayB3aGVuIGEgRE9NIHdyYXBwZXIgaGFzIGEgcmVmZXJlbmNlIHRv
IGEgSlNEb2N1bWVudCB0aGF0IGlzIG90aGVyd2lzZSBub3QgcmVhY2hhYmxlLgorCQorICAgICAg
ICBUZXN0OiBmYXN0L2RvbS9nYy0xMC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjptYXJrKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHA6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJl
dGVyOjptYXJrRE9NTm9kZXNGb3JEb2N1bWVudCk6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVy
cHJldGVyOjptYXJrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfYmluZGluZy5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisKIDIwMDctMDEtMjAgIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDE4
OTk3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC01NDIyLDYgKzU0MjIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJpbmRpbmdzXGpzXEpTRG9jdW1l
bnRDdXN0b20uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5cYmluZGluZ3NcanNcSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNw
cCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODk5NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ2LDYgKzEzNDYsNyBA
QAogCQk4NUZGMzEzQzBBQUZCRDcyMDAzNzRGMzggLyogRE9NV2hlZWxFdmVudFByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkYzMTNCMEFB
RkJENzIwMDM3NEYzOCAvKiBET01XaGVlbEV2ZW50UHJpdmF0ZS5oICovOyB9OwogCQk4NUZGMzE1
QTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTgwQUFGQkZDQjAwMzc0RjM4IC8q
IERPTUtleWJvYXJkRXZlbnQuaCAqLzsgfTsKIAkJODVGRjMxNUIwQUFGQkZDQjAwMzc0RjM4IC8q
IERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5t
bSAqLzsgfTsKKwkJOTI5MjY0NzcwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTI5MjY0
NzYwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwICovOyB9OwogCQk5MzA1
QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMDcw
NTZDMDlFMEFGOEYwMEIxN0ZFNCAvKiBjc3NoZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0Nzg2MDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3No
ZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5MzA3MDVEODA5RTBDOUI3MDBCMTdGRTQgLyogSlNDb3VudGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDcwNUQ3MDlFMEM5QjcwMEIxN0ZF
NCAvKiBKU0NvdW50ZXIuY3BwICovOyB9OwpAQCAtNDM2OSw2ICs0MzcwLDcgQEAKIAkJODVGRjMx
M0IwQUFGQkQ3MjAwMzc0RjM4IC8qIERPTVdoZWVsRXZlbnRQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaGVlbEV2ZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1ODBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9h
cmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NS2V5Ym9hcmRF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1OTBBQUZCRkNCMDAz
NzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01LZXlib2FyZEV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MjkyNjQ3NjBCNjFGQzcyMDBCNDFEMzQgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1
NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA3MDU5MDA5RTBDNzU4MDBCMTdGRTQgLyog
Q1NTUHJpbWl0aXZlVmFsdWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gQ1NTUHJp
bWl0aXZlVmFsdWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA3MDVDNzA5
RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ291
bnRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NzgwLDYgKzg3ODIsNyBA
QAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJ
CQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLywKIAkJ
CQkxQTlFRjQ1NjBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRD
dXN0b20uY3BwICovLAorCQkJCTkyOTI2NDc2MEI2MUZDNzIwMEI0MUQzNCAvKiBKU0RvY3VtZW50
Q3VzdG9tLmNwcCAqLywKIAkJCQk5MzhFNjVGNjA5RjA5ODVEMDA4QTQ4RUMgLyogSlNIVE1MRWxl
bWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLywKIAkJCQk5MzhFNjVGMDA5RjA5ODQwMDA4QTQ4RUMg
LyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggKi8sCiAJCQkJQThEMDY1QUQwQTI0NDZD
RDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCAqLywKQEAgLTEyMzQzLDYg
KzEyMzQ2LDcgQEAKIAkJCQlCMkYyNzNGMzBCNUJGQUM4MDA2OEM5NTYgLyogU1ZHRWxlbWVudElu
c3RhbmNlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJBNjgyMzBCNUJFREU3MDAwMkE0
ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MENFQkFEMEI2
MEZDNDkwMDc2MzdDMSAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTI5MjY0NzcwQjYxRkM3MjAwQjQxRDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKKworI2lu
Y2x1ZGUgImtqc19iaW5kaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIEpTRG9jdW1lbnQ6Om1hcmsoKQoreworICAgIERPTU9iamVjdDo6
bWFyaygpOworICAgIEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6Om1hcmtET01Ob2Rlc0ZvckRvY3Vt
ZW50KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCgpKSk7Cit9CisgICAgCit9CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTg5OTcpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDEwICsx
OTcsMTAgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0QWxsRE9NTm9kZQogICAgIH0K
IH0KIAotdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6bWFyayhib29sIGN1cnJlbnRUaHJlYWRJc01h
aW5UaHJlYWQpCit2b2lkIFNjcmlwdEludGVycHJldGVyOjptYXJrRE9NTm9kZXNGb3JEb2N1bWVu
dChEb2N1bWVudCogZG9jKQogewotICAgIE5vZGVQZXJEb2NNYXA6Oml0ZXJhdG9yIGRpY3RFbmQg
PSBkb21Ob2Rlc1BlckRvY3VtZW50KCkuZW5kKCk7Ci0gICAgZm9yIChOb2RlUGVyRG9jTWFwOjpp
dGVyYXRvciBkaWN0SXQgPSBkb21Ob2Rlc1BlckRvY3VtZW50KCkuYmVnaW4oKTsgZGljdEl0ICE9
IGRpY3RFbmQ7ICsrZGljdEl0KSB7CisgICAgTm9kZVBlckRvY01hcDo6aXRlcmF0b3IgZGljdEl0
ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmZpbmQoZG9jKTsKKyAgICBpZiAoZGljdEl0ICE9IGRv
bU5vZGVzUGVyRG9jdW1lbnQoKS5lbmQoKSkgewogICAgICAgICBOb2RlTWFwKiBub2RlRGljdCA9
IGRpY3RJdC0+c2Vjb25kOwogICAgICAgICBOb2RlTWFwOjppdGVyYXRvciBub2RlRW5kID0gbm9k
ZURpY3QtPmVuZCgpOwogICAgICAgICBmb3IgKE5vZGVNYXA6Oml0ZXJhdG9yIG5vZGVJdCA9IG5v
ZGVEaWN0LT5iZWdpbigpOyBub2RlSXQgIT0gbm9kZUVuZDsgKytub2RlSXQpIHsKQEAgLTIxMiw3
ICsyMTIsMTAgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6bWFyayhib29sIGN1cnJlbgogICAg
ICAgICAgICAgICAgIG5vZGUtPm1hcmsoKTsKICAgICAgICAgfQogICAgIH0KK30KIAordm9pZCBT
Y3JpcHRJbnRlcnByZXRlcjo6bWFyayhib29sIGN1cnJlbnRUaHJlYWRJc01haW5UaHJlYWQpCit7
CiAgICAgaWYgKCFjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkKSB7CiAgICAgICAgIC8vIE9uIGFs
dGVybmF0ZSB0aHJlYWRzLCBET01PYmplY3RzIHJlbWFpbiBpbiB0aGUgY2FjaGUgYmVjYXVzZSB0
aGV5J3JlIG5vdCBjb2xsZWN0ZWQuCiAgICAgICAgIC8vIFNvLCB0aGV5IG5lZWQgYW4gb3Bwb3J0
dW5pdHkgdG8gbWFyayB0aGVpciBjaGlsZHJlbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
a2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5k
aW5nLmgJKHJldmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
ICAgICBzdGF0aWMgdm9pZCBmb3JnZXRET01Ob2RlRm9yRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1l
bnQqLCBXZWJDb3JlOjpOb2RlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGZvcmdldEFsbERPTU5v
ZGVzRm9yRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKTsKICAgICAgICAgc3RhdGljIHZvaWQg
dXBkYXRlRE9NTm9kZURvY3VtZW50KFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpEb2N1bWVudCog
b2xkRG9jLCBXZWJDb3JlOjpEb2N1bWVudCogbmV3RG9jKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKTsKIAogICAgICAgICBX
ZWJDb3JlOjpGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAKSW5kZXg6
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwJKHJldmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKIG1vZHVsZSBjb3JlIHsKIAotICAgIGlu
dGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRXZlbnRUYXJnZXROb2RlLCBHZW5lcmF0ZUNv
bnN0cnVjdG9yXSBEb2N1bWVudCA6IEV2ZW50VGFyZ2V0Tm9kZSB7CisgICAgaW50ZXJmYWNlIFtM
ZWdhY3lQYXJlbnQ9S0pTOjpET01FdmVudFRhcmdldE5vZGUsIEdlbmVyYXRlQ29uc3RydWN0b3Is
IEN1c3RvbU1hcmtGdW5jdGlvbl0gRG9jdW1lbnQgOiBFdmVudFRhcmdldE5vZGUgewogCiAgICAg
ICAgIC8vIERPTSBMZXZlbCAxIENvcmUKIApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMDYpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAw
Ny0wMS0yMCAgU2FuamF5IE1hZGhhdiAgPHNhbmpheTEyQGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbi4KKworICAgICAgICBUZXN0IHN1cHBvcnQgZm9yOiA8cmRhcjovL3By
b2JsZW0vNDkyODU4Mz4gTWVtb3J5IHVzYWdlIGdyb3dzIHdoZW4gcmVsb2FkaW5nIGdvb2dsZS5j
b20vaWcKKworCVRoaXMgYWRkcyBhIGdldEpTT2JqZWN0Q291bnQgdGVzdC1hY2Nlc3NpYmxlIGZ1
bmN0aW9uIHRvIGFsbG93IHRlc3Qgc2NyaXB0cyB0byB0cmFjayBKU09iamVjdCB1c2FnZS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0dDQ29udHJvbGxlci5tbToKKyAgICAgICAgKCtbR0NDb250cm9sbGVyIGlzU2Vs
ZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgtW0dDQ29udHJvbGxlciBn
ZXRKU09iamVjdENvdW50XSk6CisKIDIwMDctMDEtMjAgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMTg5OTcpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NCArMzQsNSBAQAogKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KFNFTClh
U2VsZWN0b3I7CiAtICh2b2lkKWNvbGxlY3Q7CiAtICh2b2lkKWNvbGxlY3RPbkFsdGVybmF0ZVRo
cmVhZDooQk9PTCl3YWl0VW50aWxEb25lOworLSAoc2l6ZV90KWdldEpTT2JqZWN0Q291bnQ7CiBA
ZW5kCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvR0NDb250cm9sbGVyLm1tCShy
ZXZpc2lvbiAxODk5NykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOSBAQAogICAgICAgICByZXR1cm4gTk87
CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFk
OikpCiAgICAgICAgIHJldHVybiBOTzsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcihn
ZXRKU09iamVjdENvdW50KSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAogICAgIHJldHVybiBZ
RVM7CiB9CiAKQEAgLTU3LDQgKzYwLDkgQEAKIHsKICAgICBbV2ViQ29yZVN0YXRpc3RpY3MgZ2Fy
YmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c09uQWx0ZXJuYXRlVGhyZWFkOndhaXRVbnRpbERv
bmVdOwogfQorCistIChzaXplX3QpZ2V0SlNPYmplY3RDb3VudAoreworICAgIHJldHVybiBbV2Vi
Q29yZVN0YXRpc3RpY3MgamF2YVNjcmlwdE9iamVjdHNDb3VudF07Cit9CiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12578</attachid>
            <date>2007-01-20 20:24:14 -0800</date>
            <delta_ts>2007-01-21 08:21:35 -0800</delta_ts>
            <desc>fixed changelog whitespace from last patch</desc>
            <filename>jsleak4.diff</filename>
            <type>text/plain</type>
            <size>15588</size>
            <attacher name="Sanjay Madhav (chmmravatar)">sanjay12</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MDA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDctMDEtMjAgIFNhbmpheSBNYWRoYXYgIDxz
YW5qYXkxMkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCisKKyAgICAg
ICAgVGVzdCBmb3I6IDxyZGFyOi8vcHJvYmxlbS80OTI4NTgzPiBNZW1vcnkgdXNhZ2UgZ3Jvd3Mg
d2hlbiByZWxvYWRpbmcgZ29vZ2xlLmNvbS9pZworCisgICAgICAgICogZmFzdC9kb20vZ2MtMTAt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy0xMC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvZ2MtMTAtZnJhbWUuaHRtbDogQWRkZWQu
CisKIDIwMDctMDEtMjAgIE1pdHogUGV0dGVsICA8bWl0ekB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTEwLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzJ4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3NzI6ICJUaGlzIHBhZ2UgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlZnJl
c2ggb2YgYSBwYWdlIHdoaWNoIGhvbGRzIGEgZG9jdW1lbnQgcmVmZXJlbmNlIGluIGl0cyBET00g
d3JhcHBlciB0cmVlIGRvZXMgbm90IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0
aCAyMTk6ICJsZWFrIGFsbCBvZiBpdHMgYXNzb2NpYXRlZCBKUyBvYmplY3RzLiIKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMzc0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMzc0OiAiSWYgdGhlIHRlc3QgcGFzc2VzLCB5b3UnbGwgc2VlIGEgc2luZ2xlICdQQVNT
JyBtZXNzYWdlIGJlbG93LiIKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsODYpIHNpemUg
Nzg0eDIgW2JvcmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDk2KSBzaXplIDc4NHgxNQorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDc4NHgxNSBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTUKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDMwNDogIlBBU1M6IFJlZnJlc2ggZGlkIG5vdCBsZWFrIEpTIG9iamVjdHMuIgorICAg
ICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTExKSBzaXplIDc4NHgxNTAKKyAgICAg
ICAgUmVuZGVyUGFydE9iamVjdCB7SUZSQU1FfSBhdCAoMCwwKSBzaXplIDMwMHgxNTAKKyAgICAg
ICAgICBsYXllciBhdCAoMCwwKSBzaXplIDMwMHgxNTAKKyAgICAgICAgICAgIFJlbmRlclZpZXcg
YXQgKDAsMCkgc2l6ZSAzMDB4MTUwCisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4
MTUwCisgICAgICAgICAgICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAzMDB4MTUw
CisgICAgICAgICAgICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgMjg0eDEzNApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nYy0xMC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2MtMTAuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5HQyB0ZXN0IDEwPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBw
cmludChtZXNzYWdlLCBjb2xvcikgCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkg
PSAibW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5j
b2xvciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKwordmFyIGJlZm9yZSxhZnRlcjsKK3ZhciB0aHJlc2hv
bGQgPSAzOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxl
cikKKyAgICB7CisgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgIGJlZm9y
ZSA9IEdDQ29udHJvbGxlci5nZXRKU09iamVjdENvdW50KCk7CisgICAgICAgIAorICAgICAgICB3
aW5kb3cuZnJhbWVzLm15ZnJhbWUubG9jYXRpb24ucmVsb2FkKHRydWUpOworCisgICAgICAgIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgIGFmdGVyID0gR0NDb250cm9sbGVyLmdldEpT
T2JqZWN0Q291bnQoKTsKKyAgICAgICAgCisgICAgICAgIC8vIFVuZm9ydHVuYXRlbHkgd2UgY2Fu
bm90IGRvIGEgc3RyaWN0IGNoZWNrIGhlcmUgYmVjYXVzZSB0aGVyZSBpcyBzdGlsbCB2ZXJ5IG1p
bm9yICgzKSBKUyBvYmplY3QgaW5jcmVhc2UsCisgICAgICAgIC8vIGxpa2VseSBkdWUgdG8gdGVt
cG9yYXJ5IEpTIG9iamVjdHMgYmVpbmcgY3JlYXRlZCBkdXJpbmcgZnVydGhlciBleGVjdXRpb24g
b2YgdGhpcyB0ZXN0IGZ1bmN0aW9uLgorICAgICAgICAvLyBIb3dldmVyLCB0aGUgaWZyYW1lIGRv
Y3VtZW50IGxlYWtpbmcgZXZlcnl0aGluZyBoYXMgYW4gYWRkaXRpb24gb2YgfjI1IG9iamVjdHMg
ZXZlcnkKKyAgICAgICAgLy8gcmVmcmVzaCwgc28gaXQgc3RpbGwgaXMgYW4gYWNjdXJhdGUgdGVz
dC4KKyAgICAgICAgaWYgKGFmdGVyID4gKGJlZm9yZSArIHRocmVzaG9sZCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHByaW50KCJGQUlMOiAiICsgYmVmb3JlICsgIiBvYmplY3RzIGJlZm9yZSBy
ZWZyZXNoLCAiICsgYWZ0ZXIgKyAiIG9iamVjdHMgYWZ0ZXIgcmVmcmVzaC4iLCAicmVkIik7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBwcmludCgiUEFT
UzogUmVmcmVzaCBkaWQgbm90IGxlYWsgSlMgb2JqZWN0cy4iLCAiZ3JlZW4iKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBwcmludCgiV0FSTklORzogVGVzdCBj
YW5ub3QgcnVuIGlmIEdDQ29udHJvbGxlciBkb2VzIG5vdCBleGlzdC4gVGh1cyBpdCBvbmx5IHJ1
bnMgZnJvbSB0aGUgdGVzdCBpbnRlcmZhY2UuIiwgInJlZCIpOworICAgIH0KK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IHN0eWxlPSJjb2xvcjogYmxhY2siIG9ubG9hZD0idGVzdCgp
Ij4KKzxwPlRoaXMgcGFnZSB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVmcmVzaCBvZiBh
IHBhZ2Ugd2hpY2ggaG9sZHMgYSBkb2N1bWVudCByZWZlcmVuY2UgaW4gaXRzIERPTSB3cmFwcGVy
IHRyZWUKK2RvZXMgbm90IGxlYWsgYWxsIG9mIGl0cyBhc3NvY2lhdGVkIEpTIG9iamVjdHMuPC9w
PgorPHA+SWYgdGhlIHRlc3QgcGFzc2VzLCB5b3UnbGwgc2VlIGEgc2luZ2xlICdQQVNTJyBtZXNz
YWdlIGJlbG93LjwvcD4KKzxocj4KKworPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CisKKzxpZnJh
bWUgbmFtZT0ibXlmcmFtZSIgaWQ9Im15ZnJhbWUiIHNyYz0icmVzb3VyY2VzL2djLTEwLWZyYW1l
Lmh0bWwiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVz
b3VyY2VzL2djLTEwLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vcmVzb3VyY2VzL2djLTEwLWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXNvdXJjZXMvZ2MtMTAtZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+UmVsb2FkIG1lIGFuZCBJIHdp
bGwgbGVhazwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZG9jdW1lbnQu
Ym9keS5mb28gPSBkb2N1bWVudDsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE5MDA2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNCBAQAorMjAwNy0wMS0yMCAgU2FuamF5IE1hZGhhdiAgPHNhbmpheTEyQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KKworICAgICAgICBGaXggZm9yOiA8cmRhcjov
L3Byb2JsZW0vNDkyODU4Mz4gTWVtb3J5IHVzYWdlIGdyb3dzIHdoZW4gcmVsb2FkaW5nIGdvb2ds
ZS5jb20vaWcKKworICAgICAgICBKU0RvY3VtZW50cyBhcmUgbm93IHJlc3BvbnNpYmxlIGZvciBt
YXJraW5nIHRoZSBET00gd3JhcHBlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0sIHdoZW4gdGhleSBn
ZXQgbWFya2VkLgorICAgICAgICBUaGlzIGZpeGVzIGEgSlMgb2JqZWN0IGxlYWsgd2hlbiBhIERP
TSB3cmFwcGVyIGhhcyBhIHJlZmVyZW5jZSB0byBhIEpTRG9jdW1lbnQgdGhhdCBpcyBvdGhlcndp
c2Ugbm90IHJlYWNoYWJsZS4KKwkKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2MtMTAuaHRtbAor
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNE
b2N1bWVudDo6bWFyayk6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwOgor
ICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQp
OgorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6bWFyayk6CisgICAgICAgICogYmlu
ZGluZ3MvanMva2pzX2JpbmRpbmcuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorCiAy
MDA3LTAxLTIwICBNaXR6IFBldHRlbCAgPG1pdHpAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBNYWNpZWouCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxODk5NykKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQyMiw2ICs1NDIy
LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxiaW5kaW5nc1xqc1xKU0RvY3VtZW50Q3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJpbmRpbmdzXGpzXEpT
SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg5
OTcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0Niw2ICsxMzQ2LDcgQEAKIAkJODVGRjMxM0MwQUFGQkQ3MjAwMzc0RjM4
IC8qIERPTVdoZWVsRXZlbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzEzQjBBQUZCRDcyMDAzNzRGMzggLyogRE9NV2hlZWxFdmVu
dFByaXZhdGUuaCAqLzsgfTsKIAkJODVGRjMxNUEwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1RkYzMTU4MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggKi87IH07CiAJ
CTg1RkYzMTVCMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTkwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gKi87IH07CisJCTkyOTI2NDc3MEI2MUZDNzIw
MEI0MUQzNCAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkyOTI2NDc2MEI2MUZDNzIwMEI0MUQzNCAvKiBKU0RvY3Vt
ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0
QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzA3MDU2QzA5RTBBRjhGMDBCMTdGRTQgLyogY3NzaGVs
cGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VB
NDc4NjA5N0NBQUM4MDA5NEM5RTQgLyogY3NzaGVscGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMwNzA1RDgwOUUwQzlCNzAwQjE3RkU0IC8q
IEpTQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzA3MDVENzA5RTBDOUI3MDBCMTdGRTQgLyogSlNDb3VudGVyLmNwcCAqLzsgfTsKQEAg
LTQzNjksNiArNDM3MCw3IEBACiAJCTg1RkYzMTNCMEFBRkJENzIwMDM3NEYzOCAvKiBET01XaGVl
bEV2ZW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2hl
ZWxFdmVudFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVGRjMxNTgw
QUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTI5MjY0NzYwQjYxRkM3MjAwQjQx
RDM0IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTMwNzA1OTAwOUUwQzc1ODAwQjE3RkU0IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZTsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IENTU1ByaW1pdGl2ZVZhbHVlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENvdW50ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODc4MCw2ICs4NzgyLDcgQEAKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3
NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAv
KiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8q
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKKwkJCQk5MjkyNjQ3NjBC
NjFGQzcyMDBCNDFEMzQgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJOTM4RTY1RjYw
OUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi8sCiAJ
CQkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5oICovLAogCQkJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAgKi8sCkBAIC0xMjM0Myw2ICsxMjM0Niw3IEBACiAJCQkJQjJGMjczRjMwQjVC
RkFDODAwNjhDOTU2IC8qIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEyQTY4MjMwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODBDRUJBRDBCNjBGQzQ5MDA3NjM3QzEgLyogU1ZHTVBhdGhFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkyOTI2NDc3MEI2MUZDNzIwMEI0MUQzNCAvKiBK
U0RvY3VtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU0RvY3VtZW50LmgiCisKKyNpbmNsdWRlICJranNfYmluZGluZy5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU0RvY3VtZW50
OjptYXJrKCkKK3sKKyAgICBET01PYmplY3Q6Om1hcmsoKTsKKyAgICBLSlM6OlNjcmlwdEludGVy
cHJldGVyOjptYXJrRE9NTm9kZXNGb3JEb2N1bWVudChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGlt
cGwoKSkpOworfQorICAgIAorfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAJ
KHJldmlzaW9uIDE4OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NywxMCArMTk3LDEwIEBAIHZvaWQgU2NyaXB0SW50ZXJwcmV0
ZXI6OmZvcmdldEFsbERPTU5vZGUKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6
Om1hcmsoYm9vbCBjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkKQordm9pZCBTY3JpcHRJbnRlcnBy
ZXRlcjo6bWFya0RPTU5vZGVzRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvYykKIHsKLSAgICBOb2Rl
UGVyRG9jTWFwOjppdGVyYXRvciBkaWN0RW5kID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmVuZCgp
OwotICAgIGZvciAoTm9kZVBlckRvY01hcDo6aXRlcmF0b3IgZGljdEl0ID0gZG9tTm9kZXNQZXJE
b2N1bWVudCgpLmJlZ2luKCk7IGRpY3RJdCAhPSBkaWN0RW5kOyArK2RpY3RJdCkgeworICAgIE5v
ZGVQZXJEb2NNYXA6Oml0ZXJhdG9yIGRpY3RJdCA9IGRvbU5vZGVzUGVyRG9jdW1lbnQoKS5maW5k
KGRvYyk7CisgICAgaWYgKGRpY3RJdCAhPSBkb21Ob2Rlc1BlckRvY3VtZW50KCkuZW5kKCkpIHsK
ICAgICAgICAgTm9kZU1hcCogbm9kZURpY3QgPSBkaWN0SXQtPnNlY29uZDsKICAgICAgICAgTm9k
ZU1hcDo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVEaWN0LT5lbmQoKTsKICAgICAgICAgZm9yIChO
b2RlTWFwOjppdGVyYXRvciBub2RlSXQgPSBub2RlRGljdC0+YmVnaW4oKTsgbm9kZUl0ICE9IG5v
ZGVFbmQ7ICsrbm9kZUl0KSB7CkBAIC0yMTIsNyArMjEyLDEwIEBAIHZvaWQgU2NyaXB0SW50ZXJw
cmV0ZXI6Om1hcmsoYm9vbCBjdXJyZW4KICAgICAgICAgICAgICAgICBub2RlLT5tYXJrKCk7CiAg
ICAgICAgIH0KICAgICB9Cit9CiAKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6Om1hcmsoYm9vbCBj
dXJyZW50VGhyZWFkSXNNYWluVGhyZWFkKQorewogICAgIGlmICghY3VycmVudFRocmVhZElzTWFp
blRocmVhZCkgewogICAgICAgICAvLyBPbiBhbHRlcm5hdGUgdGhyZWFkcywgRE9NT2JqZWN0cyBy
ZW1haW4gaW4gdGhlIGNhY2hlIGJlY2F1c2UgdGhleSdyZSBub3QgY29sbGVjdGVkLgogICAgICAg
ICAvLyBTbywgdGhleSBuZWVkIGFuIG9wcG9ydHVuaXR5IHRvIG1hcmsgdGhlaXIgY2hpbGRyZW4u
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5oCShyZXZpc2lvbiAxODk5NykKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiAr
NzYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgc3RhdGljIHZvaWQgZm9yZ2V0RE9NTm9k
ZUZvckRvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50KiwgV2ViQ29yZTo6Tm9kZSopOwogICAgICAg
ICBzdGF0aWMgdm9pZCBmb3JnZXRBbGxET01Ob2Rlc0ZvckRvY3VtZW50KFdlYkNvcmU6OkRvY3Vt
ZW50Kik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVwZGF0ZURPTU5vZGVEb2N1bWVudChXZWJDb3Jl
OjpOb2RlKiwgV2ViQ29yZTo6RG9jdW1lbnQqIG9sZERvYywgV2ViQ29yZTo6RG9jdW1lbnQqIG5l
d0RvYyk7CisgICAgICAgIHN0YXRpYyB2b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KFdlYkNv
cmU6OkRvY3VtZW50Kik7CiAKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZTsgfQogCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAxODk5NykKKysr
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBA
QAogCiBtb2R1bGUgY29yZSB7CiAKLSAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1LSlM6OkRP
TUV2ZW50VGFyZ2V0Tm9kZSwgR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gRG9jdW1lbnQgOiBFdmVudFRh
cmdldE5vZGUgeworICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRXZlbnRUYXJn
ZXROb2RlLCBHZW5lcmF0ZUNvbnN0cnVjdG9yLCBDdXN0b21NYXJrRnVuY3Rpb25dIERvY3VtZW50
IDogRXZlbnRUYXJnZXROb2RlIHsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMSBDb3JlCiAKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5MDA2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDEtMjAgIFNhbmpheSBNYWRoYXYgIDxzYW5q
YXkxMkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCisKKyAgICAgICAg
VGVzdCBzdXBwb3J0IGZvcjogPHJkYXI6Ly9wcm9ibGVtLzQ5Mjg1ODM+IE1lbW9yeSB1c2FnZSBn
cm93cyB3aGVuIHJlbG9hZGluZyBnb29nbGUuY29tL2lnCisKKyAgICAgICAgVGhpcyBhZGRzIGEg
Z2V0SlNPYmplY3RDb3VudCB0ZXN0LWFjY2Vzc2libGUgZnVuY3Rpb24gdG8gYWxsb3cgdGVzdCBz
Y3JpcHRzIHRvIHRyYWNrIEpTT2JqZWN0IHVzYWdlLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvR0NDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvR0NDb250cm9sbGVy
Lm1tOgorICAgICAgICAoK1tHQ0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNj
cmlwdDpdKToKKyAgICAgICAgKC1bR0NDb250cm9sbGVyIGdldEpTT2JqZWN0Q291bnRdKToKKwog
MjAwNy0wMS0yMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJv
bGxlci5oCShyZXZpc2lvbiAxODk5NykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0dD
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw0ICszNCw1IEBACiArIChOU1N0cmlu
ZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooU0VMKWFTZWxlY3RvcjsKIC0gKHZvaWQpY29s
bGVjdDsKIC0gKHZvaWQpY29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkOihCT09MKXdhaXRVbnRpbERv
bmU7CistIChzaXplX3QpZ2V0SlNPYmplY3RDb3VudDsKIEBlbmQKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE4OTk3KQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvR0NDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw5IEBACiAgICAgICAgIHJldHVybiBOTzsKICAgICBpZiAoYVNlbGVjdG9yID09
IEBzZWxlY3Rvcihjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQ6KSkKICAgICAgICAgcmV0dXJuIE5P
OworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGdldEpTT2JqZWN0Q291bnQpKQorICAg
ICAgICByZXR1cm4gTk87CisgICAgCiAgICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtNTcsNCArNjAs
OSBAQAogewogICAgIFtXZWJDb3JlU3RhdGlzdGljcyBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRP
YmplY3RzT25BbHRlcm5hdGVUaHJlYWQ6d2FpdFVudGlsRG9uZV07CiB9CisKKy0gKHNpemVfdCln
ZXRKU09iamVjdENvdW50Cit7CisgICAgcmV0dXJuIFtXZWJDb3JlU3RhdGlzdGljcyBqYXZhU2Ny
aXB0T2JqZWN0c0NvdW50XTsKK30KIEBlbmQK
</data>
<flag name="review"
          id="4774"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>