<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>16480</bug_id>
          
          <creation_ts>2000-12-04 21:48:02 +0000</creation_ts>
          <short_desc>[PATCH] Insert signature at top or cursor</short_desc>
          <delta_ts>2008-03-16 05:29:20 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>10</classification_id>
          <classification>Unmaintained</classification>
          <product>kmail</product>
          <component>composer</component>
          <version>1.1.99</version>
          <rep_platform>unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>wishlist</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave M">dave</reporter>
          <assigned_to name="kdepim bugs">pim-bugs-null</assigned_to>
          <cc>andrius</cc>
    
    <cc>davidpjames</cc>
    
    <cc>firebrnr</cc>
    
    <cc>liquidcable</cc>
    
    <cc>lnxreddy</cc>
    
    <cc>lubos</cc>
    
    <cc>pepouille</cc>
    
    <cc>pradeepto</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>282</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15583</commentid>
    <comment_count>0</comment_count>
    <who name="David">dpnsw</who>
    <bug_when>2000-12-04 21:20:35 +0000</bug_when>
    <thetext>(*** This bug was imported into bugs.kde.org ***)

Package: kmail
Version: 1.1.99 (KDE 2.0)
Severity: wishlist
Compiler: gcc version 2.96 20000731 (Red Hat Linux 7.0)
OS: Linux 2.2.16-22smp i686 (Red Hat Linux 6.9.2)

hanks for a well featured and soild e-mail client

My feature request relates to the placement of the signature file in reply &amp; forwarded mails

I use kmail predominately for work &amp; as such have a large number of reply &amp; forwarded e-mail. All the poeple I deal with follow the same convention which is that their comments appear at the top of the mail with the signature. There are good reasons for this practice which I won&apos;t go into here suffice to say that the ability to get a signature file at the top of a mail with a row of of characters
separating the start of previous e-mails would be a big advantage.

Ideally the feature would be selectable per profile but even one that is globally set would be great

Many thanks for your consideration

David</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126682</commentid>
    <comment_count>1</comment_count>
    <who name="">automailer</who>
    <bug_when>2003-04-03 20:43:56 +0000</bug_when>
    <thetext>IMHO also solved. 
 
KMail 1.5 forwards messages as attachments thus your signature will appear on top 
of the forwarded messages. 
 
Cheers, 
Thorsten </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126779</commentid>
    <comment_count>2</comment_count>
    <who name="Ingo Klöcker">kloecker</who>
    <bug_when>2003-04-04 10:32:21 +0000</bug_when>
    <thetext>It&apos;s not really solved for replies. So I will leave this wish open for now. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130963</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Rinaldo">rinaldok</who>
    <bug_when>2003-04-28 20:18:55 +0000</bug_when>
    <thetext>This is an old post but it&apos;s still outstanding... I&apos;d really like to see this feature 
implemented. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135902</commentid>
    <comment_count>4</comment_count>
    <who name="Ingo Klöcker">kloecker</who>
    <bug_when>2003-05-25 23:31:05 +0000</bug_when>
    <thetext>*** Bug 58917 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146066</commentid>
    <comment_count>5</comment_count>
    <who name="Dave M">dave</who>
    <bug_when>2003-07-16 06:34:29 +0000</bug_when>
    <thetext>Only asking because this WISH has been open (or new?) for like 2.5 years... Any chance of signatures 
being at the top of replies and in-line forwards? 
 
Thanks, 
 
Dave </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146100</commentid>
    <comment_count>6</comment_count>
    <who name="Ingo Klöcker">kloecker</who>
    <bug_when>2003-07-16 12:19:41 +0000</bug_when>
    <thetext>As this is mainly useful for the dreaded reply above full quote below this will probably never 
be implemented. Furthermore some email clients allow the user to strip off everything below 
the signature marker. So people using such a client will have to turn off this feature just to be 
able to read the quoted/forwarded message. 
 
You should forward messages as attachment if you don&apos;t want to have the footer below the 
forwarded messages. 
 
As for replies, I don&apos;t think we will ever implement this because quoting the full replied-to 
message below the reply is regarded as impolite by most non-Outlook users. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146112</commentid>
    <comment_count>7</comment_count>
    <who name="David">dpnsw</who>
    <bug_when>2003-07-16 13:42:39 +0000</bug_when>
    <thetext>I would like to point out it is not just Outlook users that make use of such a feature.  
  
Many times in business you want the most recent comments at the top of the mail and  
everything else in reverse sequence below. This enables email to be read more quickly as you  
immediately get the most recent comments without having to scroll through an entire message  
to find them inline or goto the bottom. You also get all of the comments (if there aren&apos;t very  
many) on the same screen as all the email header information such as Date, TIme, Subject  
and CC&apos;s. I can&apos;t tell you the number of times I have been reading a mail and when I have  
come across a cerain point glanced up to see who was on in the CC list. If the guy who wrote  
it has CCed his boss or HORROR my boss, his comments have a different meaning to if he  
has just sent it to me alone.  
  
Indeed this is how outlook works and possibly as a result it is how most corporate email  
communication is structured. As the vast majority of my e-mail and I suspect many of kmail  
users is in this same format such a feature is not dreaded but actually useful.  
  
Got to admitt I was very suprissed to have someone say that reply above quote is rude.  
Maybe 10 years ago this might have had some traction but now it is a business reality in most  
sectors of buisness (IT being a possible exception). Times have changed and people use the  
different forms of email for different reasons and there is a lot to like about reply above quote  
(see above).   
  
I like kde because I can configure it to work the way I want without someone dictating to me  
what I should and shouldn&apos;t do. This request is simply an extension of that.   
  
I&apos;m quite happy for someone to say they aren&apos;t interested in implementing this because they  
don&apos;t have a use for it so it isn&apos;t going to get done. Don&apos;t know if it is so good for someone to  
tell me that they way all of my business associates and I email is rude. Maybe the hoped for  
change in behaviour is a bit too late now and we should just accept that different people work  
in different ways. When you write a letter (snail mail) do you put the date and your address in  
the top right hand corner with the correct punctuation just like they tought you in school 25  
years ago (if you are that old). If you didn&apos;t write a letter in this way guess what..... it was rude.  
Nowadays it doesn&apos;t seem to matter. Maybe the same thing has happened to email.  
  
If people are worried about loosing the body of the email beacuse the reply and the signature  
are at the top of the email and someones bot will delete it then simply change the signature  
separator. I think this is currently configurable in kmail anyway.  
  
I would really like to be able to do reply above quote even if it was activated in a very obscure  
way and judging from the above comments I am not the only one who would like to be able to  
do this in kmail.   
  
Looking forward to your response.  
 
Also please not that I am the one that originally requested this feature (David Price) and am 
not the same David that made an entry a day or two ago </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146117</commentid>
    <comment_count>8</comment_count>
    <who name="Dave M">dave</who>
    <bug_when>2003-07-16 14:10:56 +0000</bug_when>
    <thetext>Agreed.  This is not something that is commonly thought of as poor etiquette 
anymore.  Personally, my reasons for this are the same as the other David&apos;s, 
for the most part.  I work for a big company that sends a lot of email back and 
forth.  Now, if I start in-lining my responses Ingo feels is &quot;proper&quot; a lot of 
people are going to be so confused, they&apos;d likely just spontaneously combust, 
heh.  This is not the age of the old BBS and 2400 baud connection, we&apos;re 
talking about 100Mbit LANs and broadband internet conenctions.  We don&apos;t need 
to worry over every character of text in a reply anymore.  I&apos;m not asking for 
it be made this way only, or even by default, a checkbox or something (__Place 
signature at top of response) that I have to turn on would be great (and 
appreciated).  As with the other David, heh, I also understand if people just 
don&apos;t want to do it, but I don&apos;t think the fear of being rude should stop 
anyone.

Thanks,

Dave</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146194</commentid>
    <comment_count>9</comment_count>
    <who name="Ingo Klöcker">kloecker</who>
    <bug_when>2003-07-16 19:13:38 +0000</bug_when>
    <thetext>The signature separator is a quasi-standard which all email clients (maybe except Outlook) 
agree on. So changing it would destroy it&apos;s purpose (which is to separate the message body 
from the footer). 
 
IMO the proper way to do full quotes is to attach the replied-to message and not to quote it 
inline in the message below the reply. At least that&apos;s how it&apos;s done in snail mail. One 
advantage of this is that the recipient can look at the reply and the replied-to message at the 
same time (in two windows). </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180566</commentid>
    <comment_count>10</comment_count>
    <who name="Matej Cepl">matej</who>
    <bug_when>2003-11-26 19:07:29 +0000</bug_when>
    <thetext>I know that top-replying is the most hated thing on the face of the Earth, when done in email lists, but it is really usefull (and common) in replies to a personal address. Therefore, I vote for it (of course, when it is optional and hopefully automatically switched off for Reply-to-List).

Matej</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190372</commentid>
    <comment_count>11</comment_count>
    <who name="Jkb">summoner7</who>
    <bug_when>2004-01-01 18:55:52 +0000</bug_when>
    <thetext>Is it possible to add a toggle option in the configuration that says &quot;Put Signature at Top&quot; or &quot;Put Signature at Bottom&quot;?  Then, if people (me included) want their signature placed along with their comments, they can do it, and users who think its rude can keep theirs at the bottom or use forwarded messages as attachments.  Keep the &quot;polite&quot; way as a default, but I would like to have the option to do it.  Even if you guys don&apos;t implement this feature, I still think you&apos;re doing a heck of a job, so keep up the good work!

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190386</commentid>
    <comment_count>12</comment_count>
    <who name="Josh Mitts">joshm</who>
    <bug_when>2004-01-01 19:30:35 +0000</bug_when>
    <thetext>First of all, kudos to you guys for creating an awesome e-mail client that makes Evolution look like Outlook on Windows ;).

I wholeheartedly agree with this request. KMail must allow users to add the signature to the top of the mail. I am a former Outlook user switching to Linux, and find it strange that I can&apos;t reply at the top easily (without cutting and pasting my sig).

As previous comments have indicated, adding a configurable option solves the problem for both worlds. Users that have used Outlook or Outlook Express on Windows expect this functionality, and KMail should at least give the user the ability to make this choice.

Keep up the great work! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190393</commentid>
    <comment_count>13</comment_count>
    <who name="Casey Allen Shobe">cshobe</who>
    <bug_when>2004-01-01 19:47:33 +0000</bug_when>
    <thetext>Subject: Re:  Signature file to be added at top of reply or forwarded mail

Thursday 01 January 2004 13:30
&gt; First of all, kudos to you guys for creating an awesome e-mail client that
&gt; makes Evolution look like Outlook on Windows ;).

Evolution was developed more recently than KMail, and is intended to look and 
feel like Outlook, as that is the audience they want to capture.

&gt; I wholeheartedly agree with this request. KMail must allow users to add the
&gt; signature to the top of the mail. I am a former Outlook user switching to
&gt; Linux, and find it strange that I can&apos;t reply at the top easily (without
&gt; cutting and pasting my sig).

Welcome to the world of Microsoft innovations.  Outlook breaks the precedent 
set my every mail client that came before (unless, maybe, Lotus Notes came 
first and had that functionality even back then), by breaking the default 
methods used upon Reply (non-inline quoting, signature at top, etc.).  The 
traditional method is much better, as it keeps E-mail legible and short.  
With the Outlook method, you end up with a few dozen entire messages quoted 
below your own, and it&apos;s impossible to tell what part of the previous E-mail 
you&apos;re repyling to without reading the entire quoted email first.

Maybe it would be good for KMail to have this option, but it would be very bad 
for anybody to actually use it.

&gt; As previous comments have indicated, adding a configurable option solves
&gt; the problem for both worlds. Users that have used Outlook or Outlook
&gt; Express on Windows expect this functionality, and KMail should at least
&gt; give the user the ability to make this choice.

Outlook users expect a lot of stupid functionality that no other mail client 
has ever implemented or is likely to *ever* implement, as well.

Whether KMail will implement this option or not, I cannot predict.  But I 
thought I&apos;d voice my opinion, anyways.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190401</commentid>
    <comment_count>14</comment_count>
    <who name="Matej Cepl">mcepl</who>
    <bug_when>2004-01-01 20:12:35 +0000</bug_when>
    <thetext>&gt; Maybe it would be good for KMail to have this option, but it would be very
&gt; bad for anybody to actually use it.

&lt;/flame&gt;

Could you please cool down for a second and re-read comments #7, 8, and 10 (which is mine :-) and try to reply to _them_, please?

Thank you.

Matej</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190418</commentid>
    <comment_count>15</comment_count>
    <who name="Jkb">summoner7</who>
    <bug_when>2004-01-01 21:02:00 +0000</bug_when>
    <thetext>Maybe the toggle could be worded as &quot;Polite Signature Mode&quot; vs. &quot;Impolite Signature Mode&quot;? ;)  I don&apos;t mind this at all if the functionality is added, since I presently have to copy and paste my signature to where I want it, and after a while, it gets old.

Seriously though, I don&apos;t feel that I&apos;m being impolite when I leave the original message there on a reply or forward.  It gives the recipient the context to which I&apos;m replying.  I admit it can be a pain in the butt if you get 10 years worth of history, but that&apos;s when I go in and trim off all but the last few relevant messages before replying again.

I suppose you could make the case to keep an arguably useful feature out of KMail based on net-etiquitte, but if we&apos;ve resorted to that, can we make KMail also expand all instances of &quot;How R U?&quot; and &quot;C U L8R&quot; to their intelligent equivalents?  IMO, I think the place for these net-etiquitte problems to be addressed should be in a politely worded message to Miss Manners.  She&apos;ll fix things! ;)

Have a good one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190425</commentid>
    <comment_count>16</comment_count>
    <who name="Matej Cepl">mcepl</who>
    <bug_when>2004-01-01 21:06:40 +0000</bug_when>
    <thetext>&gt; Maybe the toggle could be worded as &quot;Polite Signature Mode&quot; vs. &quot;Impolite
&gt; Signature Mode&quot;? ;)

Don&apos;t even think, that you would get ever agreement on which is which :-).

Matej</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202094</commentid>
    <comment_count>17</comment_count>
    <who name="David P James">davidpjames</who>
    <bug_when>2004-02-05 20:42:19 +0000</bug_when>
    <thetext>Ingo&apos;s comment in #9 would appear to solve this &quot;problem&quot; [created by Outlook, but let&apos;s not go there...].

You&apos;d have two options for replying - inline (as present with sig below) and attach original (with the sig above the attachment, naturally). For all intents and purposes it would *look* the same as Outlook and would probably appear that way to Outlook users but to every other sane client out there only your message would be immediately visible. Not only that, there&apos;s a good chance that as an attachment it wouldn&apos;t come back again and again ad nauseum. The only other thing that kmail would have to do is assign a name of &quot;----- Original Message -----&quot; to the attachment and all should be good.

Of course reply-list should go inline regardless of setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233687</commentid>
    <comment_count>18</comment_count>
    <who name="Stephan Kulow">coolo</who>
    <bug_when>2004-05-17 20:41:47 +0000</bug_when>
    <thetext>Replaced dpnsw@optushome.com.au with dave@landlordhat.com due to bounces by reporter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233717</commentid>
    <comment_count>19</comment_count>
    <who name="Dave M">dave</who>
    <bug_when>2004-05-17 20:46:24 +0000</bug_when>
    <thetext>FYI - The David who reported this is not me (I am dave@landlordhat.com), but I don&apos;t mind being the reporter, haha.  :)

--Dave M</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286375</commentid>
    <comment_count>20</comment_count>
    <who name="Tom Albers">toma</who>
    <bug_when>2004-11-16 21:37:04 +0000</bug_when>
    <thetext>*** Bug 89664 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302075</commentid>
    <comment_count>21</comment_count>
    <who name="Bill Lewis">bill</who>
    <bug_when>2005-01-11 23:54:50 +0000</bug_when>
    <thetext>Let me start by saying kudos to the Kmail development team - please keep up the great work!

As for this issue/wishlist, I was greatly hoping this was added in the recent KDE 3.3.2 release.

I use KDE and KMail for my work (and personal) computing.  I am all for adhering to standards (incidentally is this one), however, I believe this has become more an issue of semantics/culture.

I am a consultant/developer for numerous small and medium businesses, many of which have taken the initiative to consider Linux as a viable option for workstations over the rising costs of Windows/MSOffice.  I have already converted many servers to Linux, the workstations seem to be the next obvious evolutional step for some.  I truly believe that the great advances made by software such as OpenOffice, Mozilla, KDE/KMail, et al. have made this become more of a reality today for the business community than past years.

The number one thing I recommend to my clients that are looking to move in this direction is to start by using OpenOffice and other Open Source software such as Firefox and Thunderbird on there Windows PC - to become comfortable with the different applications they will use daily.  The first question I always get when users switch to Thunderbird is - &quot;How do I fix my reply text and signature so they are not at the bottom of the message?&quot;  Every time, every client that switches.

The main reason is speed - plain and simple, it takes too long (and is annoying) to scoll to the bottom of the message to reply, or read a reply.  I often hear &quot;Time is Money&quot; and believe it or not, this simple feature is one that could be a &quot;show stopper&quot;, because the business culture prefers (and now demands) the other.  Thankfully, Thunderbird has this feature built-in so that the reply and signature can be postioned to the top of the reply so this doesn&apos;t become an issue.

However, I believe (and prefer) that KMail together with Kontact is a more complete package.  Ironically, isn&apos;t the birth of Kontact nothing more than an answer to the &quot;Outlook-Style&quot; of combining things like email, tasks, schedules, et al., which I think is a welcome addition and makes some barriers-for-entry easier to overcome.

Unfortuantely, when I forget to move my signature, or reposition my cursor prior to replying, I am often faced with client&apos;s compaining about the messages I send them being difficult to read.

I, as well as what appears to be many others, feel that adding this simple feature would be a welcome addition to KMail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319593</commentid>
    <comment_count>22</comment_count>
    <who name="Dave M">dave</who>
    <bug_when>2005-03-01 05:02:42 +0000</bug_when>
    <thetext>Has anything changed on the official stance for this?  Any hope?  As previously mentioned, sometimes it comes down to culture and consistancy.  Do I adhear to &quot;correctness&quot; or write emails my boss (or family or whoever) can understand?  That&apos;s why I think it would be good as an option...

Thanks,

Dave M</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319603</commentid>
    <comment_count>23</comment_count>
    <who name="Keith J Kruepke">keith.j</who>
    <bug_when>2005-03-01 06:38:11 +0000</bug_when>
    <thetext>I would just like to add that I have the same concerns and generally follow the email conventions that our most of our company and customers use.  I know that there are people out there who need the signature at the very bottom of the message while others (like me) need it above the quoted text.  I would like to see this configurable along with the signature.  I would also like to see &quot;Insert Signature&quot; on the menu along with &quot;Append Signature&quot;, so the signature could go where the cursor is currently locate.  (I would not expect the append option to put the signature above the quoted text after the fact, which would require Kmail to track the boundary of the quoted text.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335026</commentid>
    <comment_count>24</comment_count>
    <who name="Carsten Burghardt">burghardt</who>
    <bug_when>2005-04-16 15:31:08 +0000</bug_when>
    <thetext>*** Bug 103956 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355897</commentid>
    <comment_count>25</comment_count>
    <who name="Christian Pageau">cpageau</who>
    <bug_when>2005-07-06 18:04:11 +0000</bug_when>
    <thetext>I think it&apos;s a little bit ridiculus that 4 years later asking this option it&apos;s not yet available. It&apos;s not complicated to add choice tu put Signature at top of reply , most of e-mail software have this and everybody is free to choose how use e-mail. I really appriciate Kmail because have more functionality versus Mozilla Thunderbird but at least thunderbird allow to put signature at top. I have to do a cut and paste for each reply or forward, what a lot of waste of time!

Thanks you very much for your help, I think it will be very appriciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355915</commentid>
    <comment_count>26</comment_count>
    <who name="Jan de Visser">jdevisser</who>
    <bug_when>2005-07-06 19:16:15 +0000</bug_when>
    <thetext>&gt; It&apos;s not complicated to add choice tu (sic) put Signature at top of reply

So where&apos;s your patch?

Point being: This is free software. It&apos;s written by people that &quot;have an itch to scratch&quot;. The itch of the people maintaining kmail is not the ability to put the signature up top, therefore I can assure you that just whining about it is not going to bring you this option. Submitting a patch will.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355932</commentid>
    <comment_count>27</comment_count>
    <who name="Christian Pageau">cpageau</who>
    <bug_when>2005-07-06 20:07:52 +0000</bug_when>
    <thetext>First, sorry of my english, I&apos;m a french speaker. I know that whining is not the solution. Unfortunatly I can&apos;t submit patch because I&apos;m not a programmer. I said that not complicated but I&apos;ve to be more specific, that easy to do by someone that already know how source code is working. I&apos;m just a little bit disapointed that nobody working on project want to work on that since 4 years and a half.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355992</commentid>
    <comment_count>28</comment_count>
    <who name="Edwin Schepers">yez</who>
    <bug_when>2005-07-06 23:36:21 +0000</bug_when>
    <thetext>Don&apos;t think noone is trying to implement such features. I once made a patch, but didn&apos;t have the time to fully test it and finalize the patch. From what I remember, things got tricky when changing identity. In that case, the signature changes also.
For me, I have now more important things to program. Maybe some time in the future...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355993</commentid>
    <comment_count>29</comment_count>
      <attachid>11699</attachid>
    <who name="Edwin Schepers">yez</who>
    <bug_when>2005-07-06 23:37:46 +0000</bug_when>
    <thetext>Created attachment 11699
old unfinished patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369783</commentid>
    <comment_count>30</comment_count>
    <who name="Andreas Gungl">a.gungl</who>
    <bug_when>2005-08-30 14:23:16 +0000</bug_when>
    <thetext>*** Bug 111764 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411806</commentid>
    <comment_count>31</comment_count>
    <who name="Heath Holcomb">liquidcable</who>
    <bug_when>2006-02-05 18:12:11 +0000</bug_when>
    <thetext>Funny, I thought this was KDE not Gnome.  
Users are not idiots, we just want this option (of were the signature is placed in a replay).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411807</commentid>
    <comment_count>32</comment_count>
    <who name="Juha Tuomala">tuju</who>
    <bug_when>2006-02-05 18:20:29 +0000</bug_when>
    <thetext>Top posting sucks. :)
http://www.google.com/search?hl=en&amp;ie=ISO-8859-1&amp;q=top+posting&amp;btnG=Google+Search</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431050</commentid>
    <comment_count>33</comment_count>
    <who name="Heath Holcomb">liquidcable</who>
    <bug_when>2006-04-14 22:50:08 +0000</bug_when>
    <thetext>Nice Juha.

Anyway, as of KDE 3.5.2 (Kmail 1.9.1) this feature has not been added.

I&apos;ll open a new freature/bug request, unless someone can tell me if this request is still alive.  If this tread is dead, than I&apos;ll assume that it is being ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431064</commentid>
    <comment_count>34</comment_count>
    <who name="David P James">davidpjames</who>
    <bug_when>2006-04-14 23:47:57 +0000</bug_when>
    <thetext>This is not, despite the appearances, a thread. At any rate, if you open a new wishlist bug it&apos;ll simply end up being duped back against this one, just as bug 111764 was and the other similar bugs have been. Nor will opening a new bug make it any more &quot;alive&quot; than this one.

On a side note, I&apos;ve seen a couple of comments in this bug and others requesting this in the case of forwards. Huh? If you forward a message properly, i.e. as an attachment, the signature gets placed ahead of the attachment (and therefore the forwarded message). I don&apos;t even know why KMail offers inline forwarding...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431095</commentid>
    <comment_count>35</comment_count>
    <who name="Matej Cepl">mcepl</who>
    <bug_when>2006-04-15 03:43:15 +0000</bug_when>
    <thetext>to the comment #34:
because some unnamed MUAs (beginning with O :-)) have pretty nasty way how to view attached messages -- just bunch of icons and you have to click on each one of them. Is it still true for the last versions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431097</commentid>
    <comment_count>36</comment_count>
    <who name="Keith J Kruepke">keith.j</who>
    <bug_when>2006-04-15 04:01:40 +0000</bug_when>
    <thetext>Just what wee need...another person telling us that anyone who uses email a different way than him is doing it wrong...  Thanks, David, that is very helpful!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431842</commentid>
    <comment_count>37</comment_count>
    <who name="Magnus Holmgren">holmgren</who>
    <bug_when>2006-04-18 11:22:32 +0000</bug_when>
    <thetext>Oh, it&apos;s a thread alright. The mails sent out by the bugtracker has In-Reply-To fields in them.

Anyway, while there may be legitimate uses for Outlook-style top-posting, I feel the greatest dangers are these:

1) Users tend to hit reply and just leave the fullquote out of sight below without thinking. This leads to a huge pile of text building up, very often for no reason, as all recipients already have the preceding conversation in their mailboxes. This wastes storage space and bandwidth, but more importantly (space and bandwidth are cheap), it takes bloody ages to space through my list mail!

2) When you need to reply inline to make your reasoning clear, it&apos;s near impossible if you need more than one level of quoted text. Further, if the next person fails to decide not to top-post, you get a real mess.

Therefore I believe that a) top-posting should definitely not be the default, and b) it should only be available as a special Reply or Reply to All command.

Besides, why is the signature that important? Does it contain an utterly meaningless disclaimer?

What about a &quot;Forward Thread&quot; feature, which creates a reply with all ancestors attached? That ought to be the best way to introduce a new person into a discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435819</commentid>
    <comment_count>38</comment_count>
    <who name="trevor">sales</who>
    <bug_when>2006-05-03 00:52:21 +0000</bug_when>
    <thetext>I hope to bring some conclusive light to this wish.

It&apos;s not about semantics. It&apos;s about user preference and frequency of annoyance. To whit:

1. The user preference argument: 

The conventions of Usenet and proper threading/quoting are GREAT for US but LOUSY for &quot;real world&quot;. By far and away, the dominant convention of business and everyday interaction is to place replies and signatures ABOVE preceeding conversation, period. 

This exists as stated POLICY in many organizations and this is set by public relations or general counsel or some other heavy hitter that does not discuss, but dictates such things.

So no ammount of pontification will resolve this: we cannot expect the world to change for one email client (no matter how fantastic it obviously is :) 

2. The frequency argument:

This annoyance happens every single day with every single email reply. That&apos;s what turn a small thing into the big deal it&apos;s been for years.

Therefore, as Kmail moves more into the user realm (as opposed to the developer realm) this request will never, ever end. It will never go away. And as other clients provide for this annoyance, users will start to say &quot;I like Kmail BUT&quot;.

Attaching quoted text is an even worse solution. It is the worst solution. With this, users are forced to track threads between documents. It&apos;s not practical at all.

Developers of Kmail! Please reconsider your position in this matter! </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439038</commentid>
    <comment_count>39</comment_count>
    <who name="">thematrix9000</who>
    <bug_when>2006-05-15 20:23:21 +0000</bug_when>
    <thetext>I have used KMail for over 1 year, but I need to have a signature at the top for legal and support reasons for my company. Until this feature is implemented, I will need to use a different mail program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476600</commentid>
    <comment_count>40</comment_count>
    <who name="Daniel H. Neilson">kde</who>
    <bug_when>2006-10-13 15:32:43 +0000</bug_when>
    <thetext>There is a simple workaround for those who still want this feature. You can add your signature to the &apos;Reply to sender&apos; phrase on the &apos;Phrases&apos; tab of the &apos;Composer&apos; section of the kmail config.

For example, you could set the phrase to 

--%LYour name%LYour title%Lyou@yourcompany.com%L%LOn %D, you wrote:%L

which approximates the desired behavior. To my knowledge, there is no placeholder for your e-mail address, thus this does have the limitation that you cannot automatically vary your signature with your personality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477363</commentid>
    <comment_count>41</comment_count>
    <who name="Aaron Kunkle">aaronkunkle</who>
    <bug_when>2006-10-16 19:28:04 +0000</bug_when>
    <thetext>These days I think you&apos;ll find that the majority of the world people reply to an email by top posting so that the most recent context of the conversion is directly below their reply. Whether you&apos;re talking about the business world or a casual personal email, most people don&apos;t care (or even know) about the &quot;netiquette&quot; rules of yesteryear.  We&apos;re not talking about usenet here... it&apos;s email.  Saying that the most common way of using email is &quot;rude&quot; only serves to make you sound dated and arrogant.

So, yes, we need this feature. A simple checkbox somewhere (next the signature setup for your identity?) to choose between signature-at-top or signature-at-bottom will solve this problem and we can move on to more important things... like answering emails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482385</commentid>
    <comment_count>42</comment_count>
    <who name="Pradeepto K. Bhattacharya">pradeepto</who>
    <bug_when>2006-11-02 11:52:46 +0000</bug_when>
    <thetext>This wish has been implemented in work/kdepim-3.5.5+ branch - which basically is KDE PIM 3.5.5 + loads of fixes and new features.

So please take time to test the following new features -
 * Append Signature ( Edit Menu item in Composer Window )
 * Prepend Signature ( Edit Menu item in Composer Window )
 * Insert Signature at cursor position ( Edit Menu item in Composer Window )

The more this is tested more are the chances of seeing this feature in the future releases ( read as 3.5.6/7/8 ).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514039</commentid>
    <comment_count>43</comment_count>
    <who name="Bram Schoenmakers">me</who>
    <bug_when>2007-03-09 19:03:37 +0000</bug_when>
    <thetext>272 votes and no one on the CC list cared to test it and give feedback? What a shame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547874</commentid>
    <comment_count>44</comment_count>
    <who name="Maciej Pilichowski">bluedzins</who>
    <bug_when>2007-09-30 09:26:13 +0000</bug_when>
    <thetext>I don&apos;t think adding special features for this is a good solution, but rather adding option in Settings. For me current placement of sig in reply is ok, but in forwarding not -- the mail after sending looks like I wrote all the text, which is not true. And I don&apos;t want to change placement each time I forward mail -- I would like to change it once and for good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552531</commentid>
    <comment_count>45</comment_count>
      <attachid>21955</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-10-30 23:14:01 +0000</bug_when>
    <thetext>Created attachment 21955
kmail-tofu.patch

I&apos;m still surprised that the only attempt to add this tiny option that would
improve kmail for a world of people was in the kdepim-3.5.5+ branch, which now
appears dead.  However with the work that they did I was able to construct a
patch that adds the desired feature and more.  Now, you can prepend or append
(append by default) your signature to all emails, switching signatures doesn&apos;t
affect placement _even after text is written_, the -- prepend is optional,
everything is clean and consistent in the UI and there are only an additional
two options.  I hope a developer will read this bug over (though I&apos;m also
creating a new one) as there are many well thought out reasons as to why this
won&apos;t signal the downfall of the internet.  I also wrote more in a gentoo forum
post and a gentoo bug that was promptly wontfixed:

http://forums.gentoo.org/viewtopic-p-4438034.html

http://bugs.gentoo.org/show_bug.cgi?id=197535</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552535</commentid>
    <comment_count>46</comment_count>
    <who name="Keith J Kruepke">keith.j</who>
    <bug_when>2007-10-30 23:29:39 +0000</bug_when>
    <thetext>This feature exists in KMail as distributed with Kubuntu 7.10 (Gutsy Gibbon). I am not sure if that change was specifically folded into the Kubuntu package for KMail, or if it is part of the general release of KMail.

Version details, as reported by KMail:

- KMail 1.9.6 (enterprise 0.20070907.709405)
- KDE 3.5.8

Does anyone else have this option now on their systems?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552541</commentid>
    <comment_count>47</comment_count>
    <who name="Thomas McGuire">mcguire</who>
    <bug_when>2007-10-30 23:40:44 +0000</bug_when>
    <thetext>Right, the feature is in the enterprise branch already, though not yet in trunk. So the feature only needs porting to trunk.


The enterprise branch will probably be merged back to the 3.5 branch eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552542</commentid>
    <comment_count>48</comment_count>
    <who name="Thomas McGuire">mcguire</who>
    <bug_when>2007-10-30 23:43:23 +0000</bug_when>
    <thetext>Oh, and maybe the new patch has improvements over what is in the enterprise branch, so those would need to be merged into trunk and enterprise branch as well.

A patch for trunk doing all the merging would be very welcome (It could only be applied after the KDE 4.0 feature freeze is over, but at least it will not get lost like patches for the 3.5 branch do)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552545</commentid>
    <comment_count>49</comment_count>
    <who name="Thomas McGuire">mcguire</who>
    <bug_when>2007-10-30 23:46:33 +0000</bug_when>
    <thetext>*** Bug 151585 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552563</commentid>
    <comment_count>50</comment_count>
    <who name="Kiran Reddy">lnxreddy</who>
    <bug_when>2007-10-31 04:44:04 +0000</bug_when>
    <thetext>I could acheive this by using templates that are available in kmail.

Just need to put %CURSOR on first like under the reply and reply-all and forward templates.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552568</commentid>
    <comment_count>51</comment_count>
      <attachid>21958</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-10-31 07:14:21 +0000</bug_when>
    <thetext>Created attachment 21958
enterprise-tofu.patch

molded kmail tofu patch to patch against the enterprise branch (rev 729661) and
fit in with small changes, updated the clear spaces function to hopefully
(untested) work around a signature that&apos;s placed anywhere in the email, and
discovered a bug in the prepend -- to sig option that I haven&apos;t corrected yet.

As for the branch...we&apos;re talking about
http://websvn.kde.org/branches/kdepim/enterprise/kdepim/ right?  Sorry, you&apos;re
going to have to bear with me as I&apos;m very new to coding/svn/etc.  Furthermore,
should I roll a patch for KDE 4.0?  And if so, what svn branch should I take
that from?  Thank you for your time and quick response, Thomas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552802</commentid>
    <comment_count>52</comment_count>
      <attachid>21966</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-11-01 06:14:40 +0000</bug_when>
    <thetext>Created attachment 21966
kmail-tofu.patch

corrects the prepend -- option bug in the last patch; the fix required more
changes than I wanted to make (libkpimidentities/identity.{h,cpp}, mainly
changed to signatureText and withSeparator), but it looks pretty clean and
doesn&apos;t appear to interrupt anything.  Tested without crashes and with desired
results thus far.  

Note on signatureText() -&gt; called without anything will return the exact same
data as before, but now can have true or false passed referring to the --
config option.

To re-clarify, this patches against kdepim 3.5.8, enterprise trunk patch up
next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552803</commentid>
    <comment_count>53</comment_count>
      <attachid>21967</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-11-01 06:17:16 +0000</bug_when>
    <thetext>Created attachment 21967
enterprise-tofu.patch

see last post.	Patches against same SVN revision as the obsolete version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552927</commentid>
    <comment_count>54</comment_count>
      <attachid>21974</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-11-01 19:17:53 +0000</bug_when>
    <thetext>Created attachment 21974
kmail-tofu.patch

oops, small logic and reference errors.  I must have been half asleep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552928</commentid>
    <comment_count>55</comment_count>
      <attachid>21975</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-11-01 19:18:28 +0000</bug_when>
    <thetext>Created attachment 21975
enterprise-tofu.patch

see above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554084</commentid>
    <comment_count>56</comment_count>
      <attachid>22013</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-11-07 23:42:20 +0000</bug_when>
    <thetext>Created attachment 22013
trunk-tofu.patch

Ok, I finally modified my patch to patch against trunk.  Let me know if there
are any problems and I&apos;ll get them fixed up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555095</commentid>
    <comment_count>57</comment_count>
      <attachid>22048</attachid>
    <who name="Scott">firebrnr</who>
    <bug_when>2007-11-13 18:09:24 +0000</bug_when>
    <thetext>Created attachment 22048
trunk-tofu.patch

Finally a new patch update!  Tested against svn revision 736182.  I fixed a few
extra bugs on the way:
1) clean spaces didn&apos;t delete original text, just inserted new text
2) clean spaces required two undos to get to previous text (now only one)
3) clean spaces didn&apos;t respect sig text for the profile initially used in a
compose window

At this point my biggest concern is implementation; with prepending rather than
appending we don&apos;t know where the signature is anymore, so we have to guess; if
the user edits the signature in the email or writes a new one above it (what if
they have a really simple signature, like their name, and don&apos;t add the -- ?),
we&apos;ll guess wrong (mainly when switching identities) and it will be perceived
as an interface problem.

I think this is a generally good implementation and the wrong guess cases
should be very rare, but I&apos;m going to continue to think about it and do some
experimentation.

The best option may be to add %SIGNATURE as a template option and that I&apos;m
going to look into, but not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567756</commentid>
    <comment_count>58</comment_count>
    <who name="Thomas McGuire">mcguire</who>
    <bug_when>2008-01-02 19:21:45 +0000</bug_when>
    <thetext>*** Bug 93953 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583997</commentid>
    <comment_count>59</comment_count>
    <who name="Thomas McGuire">mcguire</who>
    <bug_when>2008-03-02 22:54:07 +0000</bug_when>
    <thetext>SVN commit 781456 by tmcguire:

Finally port the following:

- Make it possible to manually insert the signature at the start
  or at the cursor position
- Make it possible to automatically prepend instead of appending
  the signature
- Make it possible to disable the signature separator

Based on patch by Scott &lt;firebrnr at gmail dot com&gt;, many thanks!

FEATURE: 16480



 M  +25 -0     configuredialog.cpp  
 M  +2 -0      configuredialog_p.h  
 M  +9 -1      kmail.kcfg  
 M  +4 -1      kmcomposerui.rc  
 M  +21 -7     kmcomposewin.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&amp;revision=781456
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587284</commentid>
    <comment_count>60</comment_count>
    <who name="Jkb">summoner7</who>
    <bug_when>2008-03-16 05:29:20 +0000</bug_when>
    <thetext>It works beautifully!  Thanks for adding this feature!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11699</attachid>
            <date>2005-07-06 23:37:46 +0000</date>
            <delta_ts>2005-07-06 23:37:46 +0000</delta_ts>
            <desc>old unfinished patch</desc>
            <filename>16480.patch</filename>
            <type>text/plain</type>
            <size>4321</size>
            <attacher name="Edwin Schepers">yez</attacher>
            
              <data encoding="base64">SW5kZXg6IGNvbmZpZ3VyZWRpYWxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2Rl
L2tkZXBpbS9rbWFpbC9jb25maWd1cmVkaWFsb2cuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjUwMApkaWZmIC11IC0zIC1wIC1yMS41MDAgY29uZmlndXJlZGlhbG9nLmNwcAotLS0gY29uZmln
dXJlZGlhbG9nLmNwcAkxNiBOb3YgMjAwNCAyMTowODozOCAtMDAwMAkxLjUwMAorKysgY29uZmln
dXJlZGlhbG9nLmNwcAk1IERlYyAyMDA0IDE1OjE4OjQwIC0wMDAwCkBAIC0yMjY1LDYgKzIyNjUs
MTMgQEAgQ29tcG9zZXJQYWdlR2VuZXJhbFRhYjo6Q29tcG9zZXJQYWdlR2VuZQogICBjb25uZWN0
KCBtQXV0b0FwcFNpZ25GaWxlQ2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAg
ICAgICAgICAgdGhpcywgU0xPVCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOwogCisgIG1T
aWduYXR1cmVBdEJlZ2lubmluZ0NoZWNrID0gbmV3IFFDaGVja0JveCgKKyAgICAgICAgICAgR2xv
YmFsU2V0dGluZ3M6OnNlbGYoKS0+c2lnbmF0dXJlQXRCZWdpbm5pbmdJdGVtKCktPmxhYmVsKCks
CisgICAgICAgICAgIHRoaXMgKTsKKyAgdmxheS0+YWRkV2lkZ2V0KCBtU2lnbmF0dXJlQXRCZWdp
bm5pbmdDaGVjayApOworICBjb25uZWN0KCBtU2lnbmF0dXJlQXRCZWdpbm5pbmdDaGVjaywgU0lH
TkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAgICB0aGlzLCBTTE9UKCBzbG90RW1p
dENoYW5nZWQoIHZvaWQgKSApICk7CisKICAgbVNtYXJ0UXVvdGVDaGVjayA9IG5ldyBRQ2hlY2tC
b3goCiAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNtYXJ0UXVvdGVJdGVtKCkt
PmxhYmVsKCksCiAgICAgICAgICAgIHRoaXMsICJrY2ZnX1NtYXJ0UXVvdGUiICk7CkBAIC0yNDA2
LDYgKzI0MTMsOCBAQCB2b2lkIENvbXBvc2VyUGFnZTo6R2VuZXJhbFRhYjo6aW5zdGFsbFByCiB2
b2lkIENvbXBvc2VyUGFnZTo6R2VuZXJhbFRhYjo6c2F2ZSgpIHsKICAgR2xvYmFsU2V0dGluZ3M6
OnNldEF1dG9UZXh0U2lnbmF0dXJlKCAKICAgICAgICAgIG1BdXRvQXBwU2lnbkZpbGVDaGVjay0+
aXNDaGVja2VkKCkgPyAiYXV0byIgOiAibWFudWFsIiApOworICBHbG9iYWxTZXR0aW5nczo6c2V0
U2lnbmF0dXJlQXRCZWdpbm5pbmcoIAorICAgICAgICAgbVNpZ25hdHVyZUF0QmVnaW5uaW5nQ2hl
Y2stPmlzQ2hlY2tlZCgpID8gInRydWUiIDogImZhbHNlIiApOwogfQogCiBRU3RyaW5nIENvbXBv
c2VyUGFnZTo6UGhyYXNlc1RhYjo6aGVscEFuY2hvcigpIGNvbnN0IHsKSW5kZXg6IGNvbmZpZ3Vy
ZWRpYWxvZ19wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZXBpbS9rbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwMQpkaWZmIC11IC0z
IC1wIC1yMS4xMDEgY29uZmlndXJlZGlhbG9nX3AuaAotLS0gY29uZmlndXJlZGlhbG9nX3AuaAkx
NiBOb3YgMjAwNCAyMTowODozOSAtMDAwMAkxLjEwMQorKysgY29uZmlndXJlZGlhbG9nX3AuaAk1
IERlYyAyMDA0IDE1OjE4OjQyIC0wMDAwCkBAIC01MzIsNiArNTMyLDcgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgIFFDaGVja0JveCAgICAgKm1BdXRvQXBwU2lnbkZpbGVDaGVjazsKKyAgUUNo
ZWNrQm94ICAgICAqbVNpZ25hdHVyZUF0QmVnaW5uaW5nQ2hlY2s7CiAgIFFDaGVja0JveCAgICAg
Km1TbWFydFF1b3RlQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1BdXRvUmVxdWVzdE1ETkNoZWNr
OwogICBRQ2hlY2tCb3ggICAgICptV29yZFdyYXBDaGVjazsKSW5kZXg6IGttYWlsLmtjZmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZXBpbS9rbWFpbC9rbWFpbC5rY2ZnLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLXUgLTMgLXAgLXIxLjI3IGttYWlsLmtjZmcKLS0t
IGttYWlsLmtjZmcJOCBOb3YgMjAwNCAxMzozNDo1MiAtMDAwMAkxLjI3CisrKyBrbWFpbC5rY2Zn
CTUgRGVjIDIwMDQgMTU6MTg6NDIgLTAwMDAKQEAgLTIxMCw2ICsyMTAsMTAgQEAKICAgICAgICAg
PGxhYmVsPkEmYW1wO3V0b21hdGljYWxseSBhcHBlbmQgc2lnbmF0dXJlPC9sYWJlbD4KICAgICAg
ICAgPGRlZmF1bHQ+YXV0bzwvZGVmYXVsdD4KICAgICAgIDwvZW50cnk+CisgICAgICA8ZW50cnkg
bmFtZT0iU2lnbmF0dXJlQXRCZWdpbm5pbmciIHR5cGU9IkJvb2wiIGtleT0ic2lnbmF0dXJlLWF0
LWJlZ2lubmluZyI+CisgICAgICAgIDxsYWJlbD5BZGQgcyZhbXA7aWduYXR1cmUgYXQgYmVnaW5u
aW5nPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+ZmFsc2U8L2RlZmF1bHQ+CisgICAgICA8L2Vu
dHJ5PgogICAgICAgPGVudHJ5IG5hbWU9IlN0aWNreUlkZW50aXR5IiB0eXBlPSJCb29sIiBrZXk9
InN0aWNreS1pZGVudGl0eSI+CiAgICAgICAgIDx3aGF0c3RoaXM+UmVtZW1iZXIgdGhpcyBpZGVu
dGl0eSwgc28gdGhhdCBpdCB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIGNvbXBvc2VyIHdpbmRvd3Mg
YXMgd2VsbC4KICAgICAgICAgPC93aGF0c3RoaXM+CkluZGV4OiBrbWNvbXBvc2V3aW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVwaW0va21haWwva21jb21wb3Nld2luLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44OTEKZGlmZiAtdSAtMyAtcCAtcjEuODkxIGttY29t
cG9zZXdpbi5jcHAKLS0tIGttY29tcG9zZXdpbi5jcHAJMjMgTm92IDIwMDQgMTI6NDY6MjAgLTAw
MDAJMS44OTEKKysrIGttY29tcG9zZXdpbi5jcHAJNSBEZWMgMjAwNCAxNToxODo1MyAtMDAwMApA
QCAtMzI2Miw3ICszMjYyLDEyIEBAIHZvaWQgS01Db21wb3NlV2luOjpzbG90QXBwZW5kU2lnbmF0
dXJlKCkKICAgaWYoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgKQogICB7CiAgICAgbUVkaXRvci0+
c3luYygpOwotICAgIG1FZGl0b3ItPmFwcGVuZChtT2xkU2lnVGV4dCk7CisgICAgaWYgKCBHbG9i
YWxTZXR0aW5nczo6c2lnbmF0dXJlQXRCZWdpbm5pbmcoKSA9PSB0cnVlICkgeworICAgICAgbUVk
aXRvci0+c2V0Q3Vyc29yUG9zaXRpb24oIDAsIDAgKTsKKyAgICAgIG1FZGl0b3ItPmluc2VydCht
T2xkU2lnVGV4dCArICJcbiIpOworICAgIH0KKyAgICBlbHNlCisgICAgICBtRWRpdG9yLT5hcHBl
bmQobU9sZFNpZ1RleHQpOwogICAgIG1FZGl0b3ItPnVwZGF0ZSgpOwogICAgIG1FZGl0b3ItPnNl
dE1vZGlmaWVkKG1vZCk7CiAgICAgbUVkaXRvci0+c2V0Q29udGVudHNQb3MoIDAsIDAgKTsKQEAg
LTM1NDMsNiArMzU0OCw4IEBAIHZvaWQgS01Db21wb3NlV2luOjpzbG90SWRlbnRpdHlDaGFuZ2Vk
KCAKICAgewogICAgIGlmKCBlZHRUZXh0LmVuZHNXaXRoKCBtT2xkU2lnVGV4dCApICkKICAgICAg
IGVkdFRleHQudHJ1bmNhdGUoIGVkdFRleHQubGVuZ3RoKCkgLSBtT2xkU2lnVGV4dC5sZW5ndGgo
KSApOworICAgIGVsc2UgaWYgKCBlZHRUZXh0LnN0YXJ0c1dpdGgoIG1PbGRTaWdUZXh0ICkgKQor
ICAgICAgZWR0VGV4dC5yZW1vdmUoIDAsIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CiAgICAgZWxz
ZQogICAgICAgYXBwZW5kTmV3U2lnID0gZmFsc2U7CiAgIH0KQEAgLTM1NTEsOCArMzU1OCwxMyBA
QCB2b2lkIEtNQ29tcG9zZVdpbjo6c2xvdElkZW50aXR5Q2hhbmdlZCggCiAgIGlmKCBhcHBlbmRO
ZXdTaWcgKQogICB7CiAgICAgaWYoICghbU9sZFNpZ1RleHQuaXNFbXB0eSgpKSAmJgotICAgICAg
ICAgICAgICAgICAgIChHbG9iYWxTZXR0aW5nczo6YXV0b1RleHRTaWduYXR1cmUoKT09ImF1dG8i
KSApCi0gICAgICBlZHRUZXh0LmFwcGVuZCggbU9sZFNpZ1RleHQgKTsKKyAgICAgICAgICAgICAg
ICAgICAoR2xvYmFsU2V0dGluZ3M6OmF1dG9UZXh0U2lnbmF0dXJlKCk9PSJhdXRvIikgKSB7Cisg
ICAgICBpZiAoIEdsb2JhbFNldHRpbmdzOjpzaWduYXR1cmVBdEJlZ2lubmluZygpID09IHRydWUg
KSB7CisgICAgICAgIGVkdFRleHQuaW5zZXJ0KCAwLCBtT2xkU2lnVGV4dCArICJcbiIpOworICAg
ICAgfQorICAgICAgZWxzZQorICAgICAgICBlZHRUZXh0LmFwcGVuZCggbU9sZFNpZ1RleHQgKTsK
KyAgICB9CiAgICAgbUVkaXRvci0+c2V0VGV4dCggZWR0VGV4dCApOwogICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21955</attachid>
            <date>2007-10-30 23:14:01 +0000</date>
            <delta_ts>2007-11-01 06:14:40 +0000</delta_ts>
            <desc>kmail-tofu.patch</desc>
            <filename>kmail-tofu.patch</filename>
            <type>text/plain</type>
            <size>14262</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkK
KysrIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAK
QEAgLTI1NTcsNiArMjU1NywyNCBAQAogICBjb25uZWN0KCBtQXV0b0FwcFNpZ25GaWxlQ2hlY2ss
IFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAgICAgICAgICAgdGhpcywgU0xPVCggc2xv
dEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOwogCisgIG1Ub3BRdW90ZUNoZWNrID0KKyAgICBuZXcg
UUNoZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlSXRlbSgp
LT5sYWJlbCgpLCB0aGlzICk7CisgIG1Ub3BRdW90ZUNoZWNrLT5zZXRFbmFibGVkKCBmYWxzZSAp
OworICB2bGF5LT5hZGRXaWRnZXQoIG1Ub3BRdW90ZUNoZWNrKTsKKyAgY29ubmVjdCggbVRvcFF1
b3RlQ2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKKyAgICAgICAgICAgdGhpcywg
U0xPVCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOworICBjb25uZWN0KCBtQXV0b0FwcFNp
Z25GaWxlQ2hlY2ssIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwKKyAgICAgICAgICAgbVRvcFF1b3Rl
Q2hlY2ssIFNMT1Qoc2V0RW5hYmxlZChib29sKSkgKTsKKworICBtRGFzaERhc2hDaGVjayA9Cisg
ICAgbmV3IFFDaGVja0JveCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1
cmVJdGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldEVuYWJsZWQo
IGZhbHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbURhc2hEYXNoQ2hlY2spOworICBjb25uZWN0
KCBtRGFzaERhc2hDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAg
ICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNvbm5lY3QoIG1B
dXRvQXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAgICAgICAgICBt
RGFzaERhc2hDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOworCiAgIG1TbWFydFF1b3Rl
Q2hlY2sgPSBuZXcgUUNoZWNrQm94KAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5zbWFydFF1b3RlSXRlbSgpLT5sYWJlbCgpLAogICAgICAgICAgICB0aGlzLCAia2NmZ19TbWFy
dFF1b3RlIiApOwpAQCAtMjY3NCw2ICsyNjg5LDggQEAKIAogICBtQXV0b0FwcFNpZ25GaWxlQ2hl
Y2stPnNldENoZWNrZWQoCiAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9U
ZXh0U2lnbmF0dXJlKCk9PSJhdXRvIiApOworICBtVG9wUXVvdGVDaGVjay0+c2V0Q2hlY2tlZCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7CisgIG1EYXNoRGFz
aENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNpZ25h
dHVyZSgpICk7CiAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnNtYXJ0UXVvdGUoKSApOwogICBtQXV0b1JlcXVlc3RNRE5DaGVjay0+c2V0Q2hl
Y2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cmVxdWVzdE1ETigpICk7CiAgIG1Xb3JkV3Jh
cENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT53b3JkV3JhcCgpICk7
CkBAIC0yNjk0LDYgKzI3MTEsMTIgQEAKICAgICBib29sIHN0YXRlID0gY29tcG9zZXIucmVhZEJv
b2xFbnRyeSgic2lnbmF0dXJlIik7CiAgICAgbUF1dG9BcHBTaWduRmlsZUNoZWNrLT5zZXRDaGVj
a2VkKCBzdGF0ZSApOwogICB9CisgIGlmICggY29tcG9zZXIuaGFzS2V5KCAicHJlcGVuZC1zaWdu
YXR1cmUiICkgKQorICAgIG1Ub3BRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBjb21wb3Nlci5yZWFk
Qm9vbEVudHJ5KCAicHJlcGVuZC1zaWduYXR1cmUiICkgKTsKKworICBpZiAoIGNvbXBvc2VyLmhh
c0tleSggImRhc2gtZGFzaC1zaWduYXR1cmUiICkgKQorICAgIG1EYXNoRGFzaENoZWNrLT5zZXRD
aGVja2VkKCBjb21wb3Nlci5yZWFkQm9vbEVudHJ5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSAp
OworCiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAic21hcnQtcXVvdGUiICkgKQogICAgIG1TbWFy
dFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJzbWFydC1x
dW90ZSIgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInJlcXVlc3QtbWRuIiApICkKQEAg
LTI3MTUsNiArMjczOCw4IEBACiB2b2lkIENvbXBvc2VyUGFnZTo6R2VuZXJhbFRhYjo6c2F2ZSgp
IHsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0QXV0b1RleHRTaWduYXR1cmUoCiAgICAg
ICAgICBtQXV0b0FwcFNpZ25GaWxlQ2hlY2stPmlzQ2hlY2tlZCgpID8gImF1dG8iIDogIm1hbnVh
bCIgKTsKKyAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0UHJlcGVuZFNpZ25hdHVyZSggbVRv
cFF1b3RlQ2hlY2stPmlzQ2hlY2tlZCgpKTsKKyAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0
RGFzaERhc2hTaWduYXR1cmUoIG1EYXNoRGFzaENoZWNrLT5pc0NoZWNrZWQoKSk7CiAgIEdsb2Jh
bFNldHRpbmdzOjpzZWxmKCktPnNldFNtYXJ0UXVvdGUoIG1TbWFydFF1b3RlQ2hlY2stPmlzQ2hl
Y2tlZCgpICk7CiAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldFJlcXVlc3RNRE4oIG1BdXRv
UmVxdWVzdE1ETkNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5zZXRXb3JkV3JhcCggbVdvcmRXcmFwQ2hlY2stPmlzQ2hlY2tlZCgpICk7Ci0tLSBrbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oCTIwMDYvMTEvMDIgMTA6MDY6MjcJNjAxMTUwCkBAIC02MDQsNiAr
NjA0LDggQEAKIAogcHJpdmF0ZToKICAgUUNoZWNrQm94ICAgICAqbUF1dG9BcHBTaWduRmlsZUNo
ZWNrOworICBRQ2hlY2tCb3ggICAgICptVG9wUXVvdGVDaGVjazsKKyAgUUNoZWNrQm94ICAgICAq
bURhc2hEYXNoQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1TbWFydFF1b3RlQ2hlY2s7CiAgIFFD
aGVja0JveCAgICAgKm1BdXRvUmVxdWVzdE1ETkNoZWNrOwogICBRQ2hlY2tCb3gJKm1TaG93UmVj
ZW50QWRkcmVzc2VzSW5Db21wb3NlcjsKLS0tIGttYWlsL2ttYWlsLmtjZmcJMjAwNi8xMS8wMiAx
MDowMzoyMQk2MDExNDkKKysrIGttYWlsL2ttYWlsLmtjZmcJMjAwNi8xMS8wMiAxMDowNjoyNwk2
MDExNTAKQEAgLTI1Myw3ICsyNTMsNyBAQAogICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVs
dD4KICAgICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iQXV0b1RleHRTaWduYXR1cmUi
IHR5cGU9IlN0cmluZyIga2V5PSJzaWduYXR1cmUiPgotICAgICAgICA8bGFiZWw+QSZhbXA7dXRv
bWF0aWNhbGx5IGFwcGVuZCBzaWduYXR1cmU8L2xhYmVsPgorICAgICAgICA8bGFiZWw+QSZhbXA7
dXRvbWF0aWNhbGx5IGluc2VydCBzaWduYXR1cmU8L2xhYmVsPgogICAgICAgICA8ZGVmYXVsdD5h
dXRvPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KICAgICAgIDxlbnRyeSBuYW1lPSJTdGlja3lJ
ZGVudGl0eSIgdHlwZT0iQm9vbCIga2V5PSJzdGlja3ktaWRlbnRpdHkiPgpAQCAtMzUwLDYgKzM1
MCwxNyBAQAogICAgICAgICA8d2hhdHN0aGlzPkEgYmFja3VwIGNvcHkgb2YgdGhlIHRleHQgaW4g
dGhlIGNvbXBvc2VyIHdpbmRvdyBjYW4gYmUgY3JlYXRlZCByZWd1bGFybHkuIFRoZSBpbnRlcnZh
bCB1c2VkIHRvIGNyZWF0ZSB0aGUgYmFja3VwcyBpcyBzZXQgaGVyZS4gWW91IGNhbiBkaXNhYmxl
IGF1dG9zYXZpbmcgYnkgc2V0dGluZyBpdCB0byB0aGUgdmFsdWUgMC48L3doYXRzdGhpcz4KICAg
ICAgICAgPGRlZmF1bHQ+MjwvZGVmYXVsdD4KICAgICAgIDwvZW50cnk+CisKKyAgICAgIDxlbnRy
eSBuYW1lPSJQcmVwZW5kU2lnbmF0dXJlIiB0eXBlPSJCb29sIiBrZXk9InByZXBlbmQtc2lnbmF0
dXJlIj4KKyAgICAgICAgPGxhYmVsPkluc2VydCBzaWduYXR1cmUgYWJvdmUgcXVvdGVkIHRleHQ8
L2xhYmVsPgorICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KKyAgICAgIDwvZW50cnk+
CisKKyAgICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5
PSJkYXNoLWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9y
ICgtLSkgdG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVs
dD4KKyAgICAgIDwvZW50cnk+CisKICAgICAgIDxlbnRyeSBuYW1lPSJSZXBseVByZWZpeGVzIiB0
eXBlPSJTdHJpbmdMaXN0IiBrZXk9InJlcGx5LXByZWZpeGVzIj4KICAgICAgICAgPGRlZmF1bHQ+
UmVcXHMqOixSZVxcW1xcZCtcXF06LFJlXFxkKzo8L2RlZmF1bHQ+CiAgICAgICA8L2VudHJ5Pgot
LS0ga21haWwva21jb21wb3NlcnVpLnJjCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBr
bWFpbC9rbWNvbXBvc2VydWkucmMJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTYzLDYg
KzYzLDkgQEAKICAgPE1lbnUgbmFtZT0iYXR0YWNoIiA+CiAgICA8dGV4dD4mYW1wO0F0dGFjaDwv
dGV4dD4KICAgIDxBY3Rpb24gbmFtZT0iYXBwZW5kX3NpZ25hdHVyZSIgLz4KKyAgIDxBY3Rpb24g
bmFtZT0icHJlcGVuZF9zaWduYXR1cmUiIC8+CisgICA8QWN0aW9uIG5hbWU9Imluc2VydF9zaWdu
YXR1cmVfYXRfY3Vyc29yX3Bvc2l0aW9uIiAvPgorICAgPFNlcGFyYXRvci8+CiAgICA8QWN0aW9u
IG5hbWU9ImF0dGFjaF9wdWJsaWNfa2V5IiAvPgogICAgPEFjdGlvbiBuYW1lPSJhdHRhY2hfbXlf
cHVibGljX2tleSIgLz4KICAgIDxTZXBhcmF0b3IvPgotLS0ga21haWwva21jb21wb3Nld2luLmNw
cAkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwva21jb21wb3Nld2luLmNwcAky
MDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMTMzMSw2ICsxMzMxLDE0IEBACiAgICh2b2lk
KSBuZXcgS0FjdGlvbiAoaTE4bigiQXBwZW5kIFMmaWduYXR1cmUiKSwgMCwgdGhpcywKICAgICAg
ICAgICAgICAgICAgICAgICBTTE9UKHNsb3RBcHBlbmRTaWduYXR1cmUoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAiYXBwZW5kX3NpZ25hdHVyZSIpOworICAo
dm9pZCkgbmV3IEtBY3Rpb24gKGkxOG4oIlByZXBlbmQgUyZpZ25hdHVyZSIpLCAwLCB0aGlzLAor
ICAgICAgICAgICAgICAgICAgICAgIFNMT1Qoc2xvdFByZXBlbmRTaWduYXR1cmUoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAicHJlcGVuZF9zaWduYXR1cmUi
KTsKKyAgKHZvaWQpIG5ldyBLQWN0aW9uIChpMThuKCJJbnNlcnQgU2lnbmF0dXJlIEF0IEMmdXJz
b3IgUG9zaXRpb24iKSwgImVkaXQiLCAwLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgIFNM
T1Qoc2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkpLAorICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbkNvbGxlY3Rpb24oKSwgImluc2VydF9zaWduYXR1cmVfYXRfY3Vyc29yX3Bvc2l0aW9u
Iik7CisKKwogICBtQXR0YWNoUEsgID0gbmV3IEtBY3Rpb24gKGkxOG4oIkF0dGFjaCAmUHVibGlj
IEtleS4uLiIpLCAwLCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChzbG90
SW5zZXJ0UHVibGljS2V5KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQ29s
bGVjdGlvbigpLCAiYXR0YWNoX3B1YmxpY19rZXkiKTsKQEAgLTIwMjIsNyArMjAzMCwxMyBAQAog
ICAgIC8vIE5vdCB1c2VyIGZyaWVuZHkgaWYgdGhpcyBtb2RhbCBmaWxlc2VsZXRvciBvcGVucyBi
ZWZvcmUgdGhlCiAgICAgLy8gY29tcG9zZXIuCiAgICAgLy8KLSAgICBRVGltZXI6OnNpbmdsZVNo
b3QoIDIwMCwgdGhpcywgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgLy9RVGlt
ZXI6OnNpbmdsZVNob3QoIDIwMCwgdGhpcywgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7
CisgICAgICBpZiAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSAp
IHsKKyAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KCAwLCB0aGlzLCBTTE9UKHNsb3RQcmVwZW5k
U2lnbmF0dXJlKCkpICk7CisgICAgICB9IGVsc2UgeworICAgICAgICBRVGltZXI6OnNpbmdsZVNo
b3QoIDAsIHRoaXMsIFNMT1Qoc2xvdEFwcGVuZFNpZ25hdHVyZSgpKSApOworICAgICAgfQorCiAg
IH0KICAgc2V0TW9kaWZpZWQoIGlzTW9kaWZpZWQgKTsKIApAQCAtNDE0Niw2ICs0MTYwLDI0IEBA
CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHZvaWQgS01Db21wb3NlV2luOjpzbG90QXBwZW5kU2ln
bmF0dXJlKCkKIHsKKyAgICBpbnNlcnRTaWduYXR1cmUoKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCit2b2lkIEtNQ29tcG9zZVdpbjo6c2xvdFByZXBlbmRTaWduYXR1cmUoKQoreworICAg
IGluc2VydFNpZ25hdHVyZSggZmFsc2UgKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2
b2lkIEtNQ29tcG9zZVdpbjo6c2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkKK3sKKyAgICBp
bnNlcnRTaWduYXR1cmUoIGZhbHNlLCBtRWRpdG9yLT5jdXJyZW50TGluZSgpICk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBvc2VXaW46Omluc2VydFNpZ25hdHVyZSgg
Ym9vbCBhcHBlbmQsIGludCBwb3MgKQorewogICBib29sIG1vZCA9IG1FZGl0b3ItPmlzTW9kaWZp
ZWQoKTsKIAogICBjb25zdCBLUElNOjpJZGVudGl0eSAmIGlkZW50ID0KQEAgLTQxNTAsMTAgKzQx
ODAsMTggQEAKIAogICBjb25zdCBLUElNOjpJZGVudGl0eSAmIGlkZW50ID0KICAgICBrbWtlcm5l
bC0+aWRlbnRpdHlNYW5hZ2VyKCktPmlkZW50aXR5Rm9yVW9pZE9yRGVmYXVsdCggbUlkZW50aXR5
LT5jdXJyZW50SWRlbnRpdHkoKSApOwogICBtT2xkU2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRl
eHQoKTsKKworICBpZiAoICFHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNpZ25hdHVy
ZSgpICYmICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgKQorICAgIG1PbGRTaWdUZXh0ID0gbU9sZFNp
Z1RleHQucmVtb3ZlKCAwLCA0ICk7CiAgIGlmKCAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkKICAg
ewotICAgIG1FZGl0b3ItPmFwcGVuZChtT2xkU2lnVGV4dCk7CisgICAgaWYgKCBhcHBlbmQgKSB7
CisgICAgICBtRWRpdG9yLT5hcHBlbmQobU9sZFNpZ1RleHQpOworICAgIH0gZWxzZSB7CisgICAg
ICBtRWRpdG9yLT5pbnNlcnRBdChtT2xkU2lnVGV4dCwgcG9zLCAwKTsKKyAgICB9CisKICAgICBt
RWRpdG9yLT5zZXRNb2RpZmllZChtb2QpOwogICAgIC8vIG1FZGl0b3ItPnNldENvbnRlbnRzUG9z
KCAwLCAwICk7CiAgICAgaWYgKCAgbVByZXNlcnZlVXNlckN1cnNvclBvc2l0aW9uICkgewpAQCAt
NDE1NiwxMyArNDIwMCwzMCBAQAogCiAgICAgbUVkaXRvci0+c2V0TW9kaWZpZWQobW9kKTsKICAg
ICAvLyBtRWRpdG9yLT5zZXRDb250ZW50c1BvcyggMCwgMCApOwotICAgIGlmICggIG1QcmVzZXJ2
ZVVzZXJDdXJzb3JQb3NpdGlvbiApIHsKLSAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9u
RnJvbVN0YXJ0KCAodW5zaWduZWQgaW50KSBtTXNnLT5nZXRDdXJzb3JQb3MoKSApOwotICAgICAg
Ly8gT25seSBrZWVwIHRoZSBjdXJzb3IgZnJvbSB0aGUgbU1zZyAqb25jZSogYmFzZWQgb24gdGhl
Ci0gICAgICAvLyBwcmVzZXJ2ZS1jdXJzb3ItcG9zaXRpb24gc2V0dGluZzsgdGhpcyBoYW5kbGVz
IHRoZSBjYXNlIHdoZXJlCi0gICAgICAvLyB0aGUgbWVzc2FnZSBjb21lcyBmcm9tIGEgdGVtcGxh
dGUgd2l0aCBhIHNwZWNpZmljIGN1cnNvcgotICAgICAgLy8gcG9zaXRpb24gc2V0IGFuZCB0aGUg
c2lnbmF0dXJlIGlzIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuCi0gICAgICBtUHJlc2VydmVVc2Vy
Q3Vyc29yUG9zaXRpb24gPSBmYWxzZTsKLSAgICB9CisKKyAgICAvLyBpZiB0aGUgY3Vyc29yIGlz
IGV4cGxpY2l0bHkgc2V0IGluIGEgdGVtcGxhdGUsIHNldCB0aGUgY3Vyc29yIHBvc2l0aW9uCisg
ICAgLy8gdG8gdGhlIHRlbXBsYXRlIHBvc2l0aW9uLCBvZmZzZXR0aW5nIGZvciB0aGUgcHJlcGVu
ZGVkIHNpZ25hdHVyZSBsZW5ndGgKKyAgICAvLyBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2Ugc2V0
IGl0IHRvIGFib3ZlIHRoZSBzaWcgZm9yIHtwcmUsYXB9cGVuZC9pbnNlcnQKKyAgICBpZiAoICBt
UHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24gKSB7CisgICAgICBpZiAoIGFwcGVuZCAmJiBwb3Mg
PT0gMCApCisgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uRnJvbVN0YXJ0KCAodW5z
aWduZWQgaW50KSBtTXNnLT5nZXRDdXJzb3JQb3MoKSApOworICAgICAgZWxzZQorICAgICAgICBt
RWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbkZyb21TdGFydCggKHVuc2lnbmVkIGludCkgbU1zZy0+
Z2V0Q3Vyc29yUG9zKCkgKyBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOworICAgICAgLy8gT25seSBr
ZWVwIHRoZSBjdXJzb3IgZnJvbSB0aGUgbU1zZyAqb25jZSogYmFzZWQgb24gdGhlCisgICAgICAv
LyBwcmVzZXJ2ZS1jdXJzb3ItcG9zaXRpb24gc2V0dGluZzsgdGhpcyBoYW5kbGVzIHRoZSBjYXNl
IHdoZXJlCisgICAgICAvLyB0aGUgbWVzc2FnZSBjb21lcyBmcm9tIGEgdGVtcGxhdGUgd2l0aCBh
IHNwZWNpZmljIGN1cnNvcgorICAgICAgLy8gcG9zaXRpb24gc2V0IGFuZCB0aGUgc2lnbmF0dXJl
IGlzIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICBtUHJlc2VydmVVc2VyQ3Vyc29yUG9z
aXRpb24gPSBmYWxzZTsKKyAgICB9IGVsc2UgeyBpZiAoIGFwcGVuZCApIHsKKyAgICAgICAgICBR
U3RyaW5nIHRtcE1zZ1RleHQgPSBtRWRpdG9yLT50ZXh0KCk7CisgICAgICAgICAgbUVkaXRvci0+
c2V0Q3Vyc29yUG9zaXRpb25Gcm9tU3RhcnQoIHRtcE1zZ1RleHQubGVuZ3RoKCkgLSBtT2xkU2ln
VGV4dC5sZW5ndGgoKSApOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyBpZiAoIHBvcyAhPSAw
ICkKKyAgICAgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uKCBwb3MsIDAgKTsKKyAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbiggMCAs
IDAgKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1FZGl0b3ItPnN5bmMoKTsKICAgfQogfQot
LS0ga21haWwva21jb21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysg
a21haWwva21jb21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtNDUw
MCwxNSArNDU1Myw1NiBAQAogICB3aGlsZSAoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgJiYgbU9s
ZFNpZ1RleHRbbU9sZFNpZ1RleHQubGVuZ3RoKCktMV0uaXNTcGFjZSgpICkKICAgICBtT2xkU2ln
VGV4dC50cnVuY2F0ZSggbU9sZFNpZ1RleHQubGVuZ3RoKCkgLSAxICk7CiAKLSAgaWYoIGVkdFRl
eHQuZW5kc1dpdGgoIG1PbGRTaWdUZXh0ICkgKQotICAgIGVkdFRleHQudHJ1bmNhdGUoIGVkdFRl
eHQubGVuZ3RoKCkgLSBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOworICBtTmV3U2lnVGV4dCA9IGlk
ZW50LnNpZ25hdHVyZVRleHQoKTsKKyAgaWYgKCAhR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFz
aERhc2hTaWduYXR1cmUoKSAmJiAhbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkKKyAgICBtTmV3U2ln
VGV4dCA9IG1OZXdTaWdUZXh0LnJlbW92ZSggMCwgNCApOworICAvLyBpZiB0aGUgdXNlciBoYXMg
YXV0byBzaWduYXR1cmVzIGVuYWJsZWQgYW5kIGEgbmV3IHNpZywgcmVwbGFjZSB0aGUKKyAgLy8g
Y3VycmVudCBzaWcgb24gaWRlbnRpdHkgY2hhbmdlIGlmIHRoZXJlJ3MgYSBzaWcgc2V0LCBvdGhl
cndpc2UgcHJlcGVuZAorICAvLyB0aGUgbmV3IHNpZyBpZiB0aGV5IHdhbnQgcHJlcGVuZGVkLCBv
ciBhcHBlbmQgb3RoZXJ3aXNlIGFuZCBmaW5hbGx5IAorICAvLyBkZWxldGUgdGhlIHNpZyBpZiB0
aGV5IGRvbid0IGhhdmUgYXV0byBzaWduYXR1cmVzIGVuYWJsZWQgb3IgaWYKKyAgLy8gdGhlIG5l
dyBzaWduYXR1cmUgaXMgZW1wdHkgYW5kIG9sZCBzaWcgaXNuJ3QgZW1wdHkKKyAgaWYgKCAoIEds
b2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9UZXh0U2lnbmF0dXJlKCkgPT0gImF1dG8iICkgJiYK
KyAgICAgICAhbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAgIGlmICggKCBlZHRUZXh0LmZp
bmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSAhPSAtMSApICYmICFtT2xkU2lnVGV4dC5pc0VtcHR5
KCkgKSB7CisgICAgICBlZHRUZXh0ID0gZWR0VGV4dC5yZXBsYWNlKCBlZHRUZXh0LmZpbmQoIG1P
bGRTaWdUZXh0LCAwLCB0cnVlKSwKKyAgICAgICAgbU9sZFNpZ1RleHQubGVuZ3RoKCksIG1OZXdT
aWdUZXh0ICk7CisgICAgfSBlbHNlIHsgaWYgKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVw
ZW5kU2lnbmF0dXJlKCkgKSB7CisgICAgICAgICAgLy8gaWYgd2UgaGF2ZSB0cmFja2luZyBpbmZv
IGFuZCBJIGNhbiBmaW5kIGl0IGluIHRoZSB0ZXh0LCBwbGFjZSB0aGUKKyAgICAgICAgICAvLyBz
aWcgdGhlcmUsIG90aGVyd2lzZSBwcmVwZW5kIGl0ICh3aXRoIFxuXG4gaWYgdGhleSd2ZSBhbHJl
YWR5IHR5cGVkKQorICAgICAgICAgIGlmICggIW1UcmFja1NpZy5pc051bGwoKSAmJiAoIGVkdFRl
eHQuZmluZCggbVRyYWNrU2lnLCAwLCB0cnVlKSAhPSAtMSApICkgeworICAgICAgICAgICAgZWR0
VGV4dC5pbnNlcnQoIGVkdFRleHQuZmluZCggbVRyYWNrU2lnLCAwLCB0cnVlKSAsIG1OZXdTaWdU
ZXh0ICk7CisgICAgICAgICAgICBtVHJhY2tTaWcgPSBRU3RyaW5nOjpudWxsOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsgaWYgKCBtVHJhY2tTaWcgPT0gIiEhIUFQUEVORCEhISIgKQor
ICAgICAgICAgICAgICBlZHRUZXh0LmFwcGVuZCggbU5ld1NpZ1RleHQgKTsKKyAgICAgICAgICAg
IGVsc2UgeyBpZiAoICFlZHRUZXh0WzFdLmlzU3BhY2UoKSApCisgICAgICAgICAgICAgICAgZWR0
VGV4dC5wcmVwZW5kKCBtTmV3U2lnVGV4dCArIFFTdHJpbmc6OmZyb21MYXRpbjEoICJcblxuIiAp
ICk7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlZHRUZXh0LnByZXBlbmQo
IG1OZXdTaWdUZXh0ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfSBlbHNl
IHsKKyAgICAgICAgZWR0VGV4dC5hcHBlbmQoIG1OZXdTaWdUZXh0ICk7CisgICAgICB9CisgICAg
fQorICB9IGVsc2UgaWYgKCAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkgeworICAgIC8vIGlmIHN3
aXRjaGluZyB0byBhbiBpZGVudCB3aXRoIG5vIHNpZywgdHJhY2sgaXRzIHBvc2l0aW9uIGZvciBs
YXRlciBpbiBjYXNlCisgICAgLy8gdGhlIHVzZXIgc3dpdGNoZXMgdG8gb25lIHdpdGggYSBzaWcg
Zm9yIGludGVsbGlnZW50IHBsYWNlbWVudAorICAgIC8vIGNhdmVhdDogdGhpcyBpcyBiYXNlZCBv
biB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSB1c2VyIHdvbid0IGNoYW5nZQorICAgIC8vIHRoZSAy
MCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBzaWduYXR1cmUgKHNlZW1zIHJlYXNvbmFibGUgaW4gcmVw
bHkvZndkKQorICAgIGlmICggbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAgICAgLy8gb29w
cywgdGhlcmUncyBhY3R1YWxseSBub3RoaW5nIGFmdGVyIHRoZSBzaWduYXR1cmUsIGp1c3QgYXBw
ZW5kIGxhdGVyCisgICAgICBpZiAoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUp
ICsgbU9sZFNpZ1RleHQubGVuZ3RoKCkgPT0gZWR0VGV4dC5sZW5ndGgoKSApCisgICAgICAgIG1U
cmFja1NpZyA9ICIhISFBUFBFTkQhISEiOworICAgICAgZWxzZQorICAgICAgICBtVHJhY2tTaWcg
PSBlZHRUZXh0Lm1pZCggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSkgKworICAg
ICAgICAgIG1PbGRTaWdUZXh0Lmxlbmd0aCgpLCAyMCApOworICAgIH0KKyAgICBlZHRUZXh0ID0g
ZWR0VGV4dC5yZW1vdmUoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUpLAorICAg
ICAgbU9sZFNpZ1RleHQubGVuZ3RoKCkgKTsKKyAgfQorICBtT2xkU2lnVGV4dCA9IG1OZXdTaWdU
ZXh0OwogCi0gIC8vIG5vdyBhcHBlbmQgdGhlIG5ldyBzaWcKLSAgbU9sZFNpZ1RleHQgPSBpZGVu
dC5zaWduYXR1cmVUZXh0KCk7Ci0gIGlmKCAoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgKSAmJgot
ICAgICAgKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpID09ICJh
dXRvIiApICkgewotICAgIGVkdFRleHQuYXBwZW5kKCBtT2xkU2lnVGV4dCApOwotICB9CiAgIG1F
ZGl0b3ItPnNldFRleHQoIGVkdFRleHQgKTsKIAogICAvLyBkaXNhYmxlIGNlcnRhaW4gYWN0aW9u
cyBpZiB0aGVyZSBpcyBubyBQR1AgdXNlciBpZGVudGl0eSBzZXQKLS0tIGttYWlsL2ttY29tcG9z
ZXdpbi5oCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrbWFpbC9rbWNvbXBvc2V3aW4u
aAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMzY5LDYgKzM2OSwxNiBAQAogICB2b2lk
IHNsb3RBcHBlbmRTaWduYXR1cmUoKTsKIAogICAvKioKKyAgICogUHJlcGVuZCBzaWduYXR1cmUg
ZmlsZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IGluIHRoZSBlZGl0b3IuCisgICAqLwor
ICB2b2lkIHNsb3RQcmVwZW5kU2lnbmF0dXJlKCk7CisKKyAgLyoqCisgICAqIEluc2VydCBzaWdu
YXR1cmUgZmlsZSBhdCB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSB0ZXh0IGluIHRoZSBlZGl0
b3IuCisgICAqLworICB2b2lkIHNsb3RJbnNlcnRTaWduYXR1cmVBdEN1cnNvcigpOworCisgIC8q
KgogICAgKiBBdHRhY2ggc2VuZGVyJ3MgcHVibGljIGtleS4KICAgICovCiAgIHZvaWQgc2xvdElu
c2VydE15UHVibGljS2V5KCk7CkBAIC02NjMsNiArNjczLDEyIEBACiAgICAqLwogICB2b2lkIHNl
dFRyYW5zcG9ydCggY29uc3QgUVN0cmluZyAmIHRyYW5zcG9ydCApOwogCisgIC8qKgorICAgKiBI
ZWxwZXIgdG8gaW5zZXJ0IHRoZSBzaWduYXR1cmUgb2YgdGhlIGN1cnJlbnQgaWRlbnR5IGF0IHRo
ZQorICAgKiBiZWdpbm5pbmcgb3IgZW5kIG9mIHRoZSBlZGl0b3IuCisgICAqLworICB2b2lkIGlu
c2VydFNpZ25hdHVyZSggYm9vbCBhcHBlbmQgPSB0cnVlLCBpbnQgcG9zID0gMCApOworCiBwcml2
YXRlIHNsb3RzOgogICAgLyoqCiAgICAgKiBDb21wcmVzcyBhbiBhdHRhY2hlbW50IHdpdGggdGhl
IGdpdmVuIGluZGV4CkBAIC03NTcsNiArNzczLDkgQEAKICAgUU1hcDxLSU86OkpvYiosIEtVUkw+
IG1BdHRhY2hKb2JzOwogICBLVVJMOjpMaXN0IG1BdHRhY2hGaWxlc1BlbmRpbmc7CiAgIGludCBt
QXR0YWNoRmlsZXNTZW5kOworCisgIFFTdHJpbmcgbVRyYWNrU2lnOworICBRU3RyaW5nIG1OZXdT
aWdUZXh0OwogCiBwcml2YXRlOgogICAvLyBoZWxwZXIgbWV0aG9kIGZvciBzbG90SW5zZXJ0KE15
KVB1YmxpY0tleSgpCi0tLSBsaWJrcGltaWRlbnRpdGllcy9pZGVudGl0eS5oICAgICAgICAyMDA2
LzExLzAyIDEwOjAzOjIxICAgICA2MDExNDkKKysrIGxpYmtwaW1pZGVudGl0aWVzL2lkZW50aXR5
LmggICAgICAgIDIwMDYvMTEvMDIgMTA6MDY6MjcgICAgIDYwMTE1MApAQCAtMjI3LDYgKzIyNyw3
IEBACiAKICAgdm9pZCBzZXRTaWduYXR1cmUoIGNvbnN0IFNpZ25hdHVyZSAmIHNpZyApIHsgbVNp
Z25hdHVyZSA9IHNpZzsgfQogICBTaWduYXR1cmUgJiBzaWduYXR1cmUoKSAvKiBfbm90XyBjb25z
dCEgKi8geyByZXR1cm4gbVNpZ25hdHVyZTsgfQorICBjb25zdCBTaWduYXR1cmUgJiBzaWduYXR1
cmUoKSBjb25zdCB7IHJldHVybiBtU2lnbmF0dXJlOyB9CiAKIHByb3RlY3RlZDoKICAgLyoqIEBy
ZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIGlzIHJlYWQgZnJvbSB0aGUgb3V0cHV0IG9mIGEg
Y29tbWFuZCAqLwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21958</attachid>
            <date>2007-10-31 07:14:21 +0000</date>
            <delta_ts>2007-11-01 06:17:17 +0000</delta_ts>
            <desc>enterprise-tofu.patch</desc>
            <filename>enterprise-tofu.patch</filename>
            <type>text/plain</type>
            <size>10421</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkK
KysrIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAK
QEAgLTI1ODYsOSArMjU4NiwyMSBAQAogCiAgIG1Ub3BRdW90ZUNoZWNrID0KICAgICBuZXcgUUNo
ZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlSXRlbSgpLT5s
YWJlbCgpLCB0aGlzICk7CisgIG1Ub3BRdW90ZUNoZWNrLT5zZXRFbmFibGVkKCBmYWxzZSApOwog
ICB2bGF5LT5hZGRXaWRnZXQoIG1Ub3BRdW90ZUNoZWNrKTsKICAgY29ubmVjdCggbVRvcFF1b3Rl
Q2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAgICAgICAgICAgdGhpcywgU0xP
VCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOworICBjb25uZWN0KCBtQXV0b0FwcFNpZ25G
aWxlQ2hlY2ssIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwKKyAgICAgICAgICAgbVRvcFF1b3RlQ2hl
Y2ssIFNMT1Qoc2V0RW5hYmxlZChib29sKSkgKTsKKworICBtRGFzaERhc2hDaGVjayA9CisgICAg
bmV3IFFDaGVja0JveCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmVJ
dGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldEVuYWJsZWQoIGZh
bHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbURhc2hEYXNoQ2hlY2spOworICBjb25uZWN0KCBt
RGFzaERhc2hDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAgICB0
aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNvbm5lY3QoIG1BdXRv
QXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAgICAgICAgICBtRGFz
aERhc2hDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOwogCiAgIG1TbWFydFF1b3RlQ2hl
Y2sgPSBuZXcgUUNoZWNrQm94KAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5z
bWFydFF1b3RlSXRlbSgpLT5sYWJlbCgpLApAQCAtMjcwOCw2ICsyNzIxLDcgQEAKICAgbUF1dG9B
cHBTaWduRmlsZUNoZWNrLT5zZXRDaGVja2VkKAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6
c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpPT0iYXV0byIgKTsKICAgbVRvcFF1b3RlQ2hlY2st
PnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSAp
OworICBtRGFzaERhc2hDaGVjay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
ZGFzaERhc2hTaWduYXR1cmUoKSApOwogICBtU21hcnRRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBH
bG9iYWxTZXR0aW5nczo6c2VsZigpLT5zbWFydFF1b3RlKCkgKTsKICAgbUF1dG9SZXF1ZXN0TURO
Q2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnJlcXVlc3RNRE4oKSAp
OwogICBtV29yZFdyYXBDaGVjay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
d29yZFdyYXAoKSApOwpAQCAtMjczMCw2ICsyNzQ0LDggQEAKICAgfQogICBpZiAoIGNvbXBvc2Vy
Lmhhc0tleSggInByZXBlbmQtc2lnbmF0dXJlIiApICkKICAgICBtVG9wUXVvdGVDaGVjay0+c2V0
Q2hlY2tlZCggY29tcG9zZXIucmVhZEJvb2xFbnRyeSggInByZXBlbmQtc2lnbmF0dXJlIiApICk7
CisgIGlmICggY29tcG9zZXIuaGFzS2V5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSApCisgICAg
bURhc2hEYXNoQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJkYXNo
LWRhc2gtc2lnbmF0dXJlIiApICk7CiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAic21hcnQtcXVv
dGUiICkgKQogICAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRC
b29sRW50cnkoICJzbWFydC1xdW90ZSIgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInJl
cXVlc3QtbWRuIiApICkKQEAgLTI3NTIsNiArMjc2OCw3IEBACiAgIEdsb2JhbFNldHRpbmdzOjpz
ZWxmKCktPnNldEF1dG9UZXh0U2lnbmF0dXJlKAogICAgICAgICAgbUF1dG9BcHBTaWduRmlsZUNo
ZWNrLT5pc0NoZWNrZWQoKSA/ICJhdXRvIiA6ICJtYW51YWwiICk7CiAgIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnNldFByZXBlbmRTaWduYXR1cmUoIG1Ub3BRdW90ZUNoZWNrLT5pc0NoZWNrZWQo
KSk7CisgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldERhc2hEYXNoU2lnbmF0dXJlKCBtRGFz
aERhc2hDaGVjay0+aXNDaGVja2VkKCkpOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5zZXRT
bWFydFF1b3RlKCBtU21hcnRRdW90ZUNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0
aW5nczo6c2VsZigpLT5zZXRSZXF1ZXN0TUROKCBtQXV0b1JlcXVlc3RNRE5DaGVjay0+aXNDaGVj
a2VkKCkgKTsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0V29yZFdyYXAoIG1Xb3JkV3Jh
cENoZWNrLT5pc0NoZWNrZWQoKSApOwotLS0ga21haWwvY29uZmlndXJlZGlhbG9nX3AuaAkyMDA2
LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwvY29uZmlndXJlZGlhbG9nX3AuaAkyMDA2
LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtNjA4LDYgKzYwOCw3IEBACiBwcml2YXRlOgogICBR
Q2hlY2tCb3ggICAgICptQXV0b0FwcFNpZ25GaWxlQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1U
b3BRdW90ZUNoZWNrOworICBRQ2hlY2tCb3ggICAgICptRGFzaERhc2hDaGVjazsKICAgUUNoZWNr
Qm94ICAgICAqbVNtYXJ0UXVvdGVDaGVjazsKICAgUUNoZWNrQm94ICAgICAqbUF1dG9SZXF1ZXN0
TUROQ2hlY2s7CiAgIFFDaGVja0JveAkqbVNob3dSZWNlbnRBZGRyZXNzZXNJbkNvbXBvc2VyOwot
LS0ga21haWwva21haWwua2NmZwkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwv
a21haWwua2NmZwkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMzg5LDYgKzM4OSwxMCBA
QAogICAgICAgICA8bGFiZWw+SW5zZXJ0IHNpZ25hdHVyZSBhYm92ZSBxdW90ZWQgdGV4dDwvbGFi
ZWw+CiAgICAgICAgIDxkZWZhdWx0PmZhbHNlPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KKyAg
ICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5PSJkYXNo
LWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9yICgtLSkg
dG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVsdD4KKyAg
ICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iUmVwbHlQcmVmaXhlcyIgdHlwZT0iU3Ry
aW5nTGlzdCIga2V5PSJyZXBseS1wcmVmaXhlcyI+CiAgICAgICAgIDxkZWZhdWx0PlJlXFxzKjos
UmVcXFtcXGQrXFxdOixSZVxcZCs6PC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KLS0tIGttYWls
L2ttY29tcG9zZXdpbi5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkKKysrIGttYWlsL2tt
Y29tcG9zZXdpbi5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTQzMjYsNiArNDMy
Niw5IEBACgogICBtT2xkU2lnVGV4dCA9IEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRT
aWduYXR1cmUoKT8gaWRlbnQuc2lnbmF0dXJlKCkucmF3VGV4dCgpIDogaWRlbnQuc2lnbmF0dXJl
VGV4dCgpOwogCisgIC8vICEhQlJPS0VOISEgdGhpcyB3aWxsIGRlbGV0ZSAtLSBpZiB0aGV5IHB1
dCBpdCBpbiB0aGVpciBpZGVudCBzaWcKKyAgaWYgKCAhR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
ZGFzaERhc2hTaWduYXR1cmUoKSAmJiAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkKKyAgICBtT2xk
U2lnVGV4dCA9IG1PbGRTaWdUZXh0LnJlbW92ZSggMCwgNCApOwogICAgaWYoICFtT2xkU2lnVGV4
dC5pc0VtcHR5KCkgKQogICAgewogICAgICAgbUVkaXRvci0+c3luYygpOwpAQCAtNDMzNiwxMSAr
NDMzOSwyOSBAQAogICAgIH0KICAgICBtRWRpdG9yLT51cGRhdGUoKTsKICAgICBtRWRpdG9yLT5z
ZXRNb2RpZmllZChtb2QpOwotICAgIC8vIGZvciBhcHBlbmQgYW5kIHByZXBlbmQsIG1vdmUgdGhl
IGN1cnNvciB0byAwLDAsIGZvciBpbnNlcnRBdCwKLSAgICAvLyBrZWVwIGl0IGluIHRoZSBzYW1l
IHJvdywgYnV0IG1vdmUgdG8gZmlyc3QgY29sdW1uCi0gICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9z
aXRpb24oIHBvcywgMCApOwotICAgIGlmICggIWFwcGVuZCAmJiBwb3MgPT0gMCApCi0gICAgICBt
RWRpdG9yLT5zZXRDb250ZW50c1BvcyggMCwgMCApOworICAgIC8vIGlmIHRoZSBjdXJzb3IgaXMg
ZXhwbGljaXRseSBzZXQgaW4gYSB0ZW1wbGF0ZSwgc2V0IHRoZSBjdXJzb3IgcG9zaXRpb24KKyAg
ICAvLyB0byB0aGUgdGVtcGxhdGUgcG9zaXRpb24sIG9mZnNldHRpbmcgZm9yIHRoZSBwcmVwZW5k
ZWQgc2lnbmF0dXJlIGxlbmd0aAorICAgIC8vIGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSBzZXQg
aXQgdG8gYWJvdmUgdGhlIHNpZyBmb3Ige3ByZSxhcH1wZW5kL2luc2VydAorICAgIGlmICggIG1Q
cmVzZXJ2ZVVzZXJDdXJzb3JQb3NpdGlvbiApIHsKKyAgICAgIGlmICggYXBwZW5kICYmIHBvcyA9
PSAwICkKKyAgICAgICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb25Gcm9tU3RhcnQoICh1bnNp
Z25lZCBpbnQpIG1Nc2ctPmdldEN1cnNvclBvcygpICk7CisgICAgICBlbHNlCisgICAgICAgIG1F
ZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uRnJvbVN0YXJ0KCAodW5zaWduZWQgaW50KSBtTXNnLT5n
ZXRDdXJzb3JQb3MoKSArIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CisgICAgICAvLyBPbmx5IGtl
ZXAgdGhlIGN1cnNvciBmcm9tIHRoZSBtTXNnICpvbmNlKiBiYXNlZCBvbiB0aGUKKyAgICAgIC8v
IHByZXNlcnZlLWN1cnNvci1wb3NpdGlvbiBzZXR0aW5nOyB0aGlzIGhhbmRsZXMgdGhlIGNhc2Ug
d2hlcmUKKyAgICAgIC8vIHRoZSBtZXNzYWdlIGNvbWVzIGZyb20gYSB0ZW1wbGF0ZSB3aXRoIGEg
c3BlY2lmaWMgY3Vyc29yCisgICAgICAvLyBwb3NpdGlvbiBzZXQgYW5kIHRoZSBzaWduYXR1cmUg
aXMgYXBwZW5kZWQgYXV0b21hdGljYWxseS4KKyAgICAgIG1QcmVzZXJ2ZVVzZXJDdXJzb3JQb3Np
dGlvbiA9IGZhbHNlOworICAgIH0gZWxzZSB7IGlmICggYXBwZW5kICkgeworICAgICAgICAgIFFT
dHJpbmcgdG1wTXNnVGV4dCA9IG1FZGl0b3ItPnRleHQoKTsKKyAgICAgICAgICBtRWRpdG9yLT5z
ZXRDdXJzb3JQb3NpdGlvbkZyb21TdGFydCggdG1wTXNnVGV4dC5sZW5ndGgoKSAtIG1PbGRTaWdU
ZXh0Lmxlbmd0aCgpICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IGlmICggcG9zICE9IDAg
KQorICAgICAgICAgICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb24oIHBvcywgMCApOworICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uKCAwICwg
MCApOworICAgICAgICB9CisgICAgfQogICB9CiAKIH0KLS0tIGttYWlsL2ttY29tcG9zZXdpbi5j
cHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkKKysrIGttYWlsL2ttY29tcG9zZXdpbi5jcHAJ
MjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTQzNzMsMzQgKzQzOTQsMzggQEAKIAogICAv
LyBSZW1vdmUgdGhlIHNpZ25hdHVyZSBmb3Igbm93LgogICBRU3RyaW5nIHNpZzsKKyAgUVN0cmlu
ZyBwcmVzaWc7CiAgIGJvb2wgcmVzdG9yZSA9IGZhbHNlOwogICBjb25zdCBLUElNOjpJZGVudGl0
eSAmIGlkZW50ID0KICAgICBrbWtlcm5lbC0+aWRlbnRpdHlNYW5hZ2VyKCktPmlkZW50aXR5Rm9y
VW9pZCggbUlkICk7CiAgIGlmICggIWlkZW50LmlzTnVsbCgpICkgewogICAgIHNpZyA9IGlkZW50
LnNpZ25hdHVyZVRleHQoKTsKLSAgICBpZiggIXNpZy5pc0VtcHR5KCkgKSB7Ci0gICAgICBpZigg
cy5lbmRzV2l0aCggc2lnICkgKSB7Ci0gICAgICAgIHMudHJ1bmNhdGUoIHMubGVuZ3RoKCkgLSBz
aWcubGVuZ3RoKCkgKTsKKyAgICAgIGlmKCAhc2lnLmlzRW1wdHkoKSAmJiBzLmZpbmQoc2lnLCAw
LCB0cnVlKSAhPSAtMSApIHsKKyAgICAgICAgcHJlc2lnID0gcy5sZWZ0KCBzLmZpbmQoc2lnLCAw
LCB0cnVlKSApOworICAgICAgICBzLnJlbW92ZSggcy5maW5kKHNpZywgMCwgdHJ1ZSkgLSBzaWcu
bGVuZ3RoKCkgKTsKICAgICAgICAgcmVzdG9yZSA9IHRydWU7CiAgICAgICB9CiAgICAgfQogICB9
CiAKICAgLy8gU3F1ZWV6ZSB0YWJzIGFuZCBzcGFjZXMKICAgUVJlZ0V4cCBzcXVlZXplKCAiW1x0
IF0rIiApOwogICBzLnJlcGxhY2UoIHNxdWVlemUsIFFDaGFyKCAnICcgKSApOworICBpZiggIXBy
ZXNpZy5pc0VtcHR5KCkgKSBwcmVzaWcucmVwbGFjZSggc3F1ZWV6ZSwgUUNoYXIoICcgJyApICk7
CiAKICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UKICAgUVJlZ0V4cCB0cmFpbGluZygg
IlxccyskIiApOwogICBzLnJlcGxhY2UoIHRyYWlsaW5nLCBRQ2hhciggJ1xuJyApICk7CisgIGlm
KCAhcHJlc2lnLmlzRW1wdHkoKSApIHByZXNpZy5yZXBsYWNlKCB0cmFpbGluZywgUUNoYXIoICdc
bicgKSApOwogCiAgIC8vIFNpbmdsZSBzcGFjZSBsaW5lcwogICBRUmVnRXhwIHNpbmdsZVNwYWNl
KCAiW1xuXXsyLH0iICk7CiAgIHMucmVwbGFjZSggc2luZ2xlU3BhY2UsIFFDaGFyKCAnXG4nICkg
KTsKKyAgaWYoICFwcmVzaWcuaXNFbXB0eSgpICkgcHJlc2lnLnJlcGxhY2UoIHNpbmdsZVNwYWNl
LCBRQ2hhciggJ1xuJyApICk7CiAKICAgLy8gUmVzdG9yZSB0aGUgc2lnbmF0dXJlCiAgIGlmICgg
cmVzdG9yZSApCi0gICAgcy5hcHBlbmQoIHNpZyApOworICAgIHMuaW5zZXJ0KCBwcmVzaWcubGVu
Z3RoKCksIHNpZyApOwogCiAgIC8vIFB1dCB0aGUgbmV3IHRleHQgaW4gcGxhY2UuCiAgIC8vIFRo
ZSBsaW5lcyBiZWxvdyBkbyBub3QgY2xlYXIgdGhlIHVuZG8gaGlzdG9yeSwgYnV0IHVuZm9ydHVh
dGVseSBjYXVzZQpAQCAtNDY5OSwxNSArNDcyMyw1NiBAQAogICB3aGlsZSAoICFtT2xkU2lnVGV4
dC5pc0VtcHR5KCkgJiYgbU9sZFNpZ1RleHRbbU9sZFNpZ1RleHQubGVuZ3RoKCktMV0uaXNTcGFj
ZSgpICkKICAgICBtT2xkU2lnVGV4dC50cnVuY2F0ZSggbU9sZFNpZ1RleHQubGVuZ3RoKCkgLSAx
ICk7CiAKLSAgaWYoIGVkdFRleHQuZW5kc1dpdGgoIG1PbGRTaWdUZXh0ICkgKQotICAgIGVkdFRl
eHQudHJ1bmNhdGUoIGVkdFRleHQubGVuZ3RoKCkgLSBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOwor
ICBtTmV3U2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRleHQoKTsKKyAgaWYgKCAhR2xvYmFsU2V0
dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmUoKSAmJiAhbU5ld1NpZ1RleHQuaXNFbXB0
eSgpICkKKyAgICBtTmV3U2lnVGV4dCA9IG1OZXdTaWdUZXh0LnJlbW92ZSggMCwgNCApOworICAv
LyBpZiB0aGUgdXNlciBoYXMgYXV0byBzaWduYXR1cmVzIGVuYWJsZWQgYW5kIGEgbmV3IHNpZywg
cmVwbGFjZSB0aGUKKyAgLy8gY3VycmVudCBzaWcgb24gaWRlbnRpdHkgY2hhbmdlIGlmIHRoZXJl
J3MgYSBzaWcgc2V0LCBvdGhlcndpc2UgcHJlcGVuZAorICAvLyB0aGUgbmV3IHNpZyBpZiB0aGV5
IHdhbnQgcHJlcGVuZGVkLCBvciBhcHBlbmQgb3RoZXJ3aXNlIGFuZCBmaW5hbGx5IAorICAvLyBk
ZWxldGUgdGhlIHNpZyBpZiB0aGV5IGRvbid0IGhhdmUgYXV0byBzaWduYXR1cmVzIGVuYWJsZWQg
b3IgaWYKKyAgLy8gdGhlIG5ldyBzaWduYXR1cmUgaXMgZW1wdHkgYW5kIG9sZCBzaWcgaXNuJ3Qg
ZW1wdHkKKyAgaWYgKCAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9UZXh0U2lnbmF0dXJl
KCkgPT0gImF1dG8iICkgJiYKKyAgICAgICAhbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAg
IGlmICggKCBlZHRUZXh0LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSAhPSAtMSApICYmICFt
T2xkU2lnVGV4dC5pc0VtcHR5KCkgKSB7CisgICAgICBlZHRUZXh0ID0gZWR0VGV4dC5yZXBsYWNl
KCBlZHRUZXh0LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSwKKyAgICAgICAgbU9sZFNpZ1Rl
eHQubGVuZ3RoKCksIG1OZXdTaWdUZXh0ICk7CisgICAgfSBlbHNlIHsgaWYgKCBHbG9iYWxTZXR0
aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlKCkgKSB7CisgICAgICAgICAgLy8gaWYgd2Ug
aGF2ZSB0cmFja2luZyBpbmZvIGFuZCBJIGNhbiBmaW5kIGl0IGluIHRoZSB0ZXh0LCBwbGFjZSB0
aGUKKyAgICAgICAgICAvLyBzaWcgdGhlcmUsIG90aGVyd2lzZSBwcmVwZW5kIGl0ICh3aXRoIFxu
XG4gaWYgdGhleSd2ZSBhbHJlYWR5IHR5cGVkKQorICAgICAgICAgIGlmICggIW1UcmFja1NpZy5p
c051bGwoKSAmJiAoIGVkdFRleHQuZmluZCggbVRyYWNrU2lnLCAwLCB0cnVlKSAhPSAtMSApICkg
eworICAgICAgICAgICAgZWR0VGV4dC5pbnNlcnQoIGVkdFRleHQuZmluZCggbVRyYWNrU2lnLCAw
LCB0cnVlKSAsIG1OZXdTaWdUZXh0ICk7CisgICAgICAgICAgICBtVHJhY2tTaWcgPSBRU3RyaW5n
OjpudWxsOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsgaWYgKCBtVHJhY2tTaWcgPT0g
IiEhIUFQUEVORCEhISIgKQorICAgICAgICAgICAgICBlZHRUZXh0LmFwcGVuZCggbU5ld1NpZ1Rl
eHQgKTsKKyAgICAgICAgICAgIGVsc2UgeyBpZiAoICFlZHRUZXh0WzFdLmlzU3BhY2UoKSApCisg
ICAgICAgICAgICAgICAgZWR0VGV4dC5wcmVwZW5kKCBtTmV3U2lnVGV4dCArIFFTdHJpbmc6OmZy
b21MYXRpbjEoICJcblxuIiApICk7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBlZHRUZXh0LnByZXBlbmQoIG1OZXdTaWdUZXh0ICk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWR0VGV4dC5hcHBlbmQoIG1OZXdTaWdUZXh0
ICk7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgaWYgKCAhbU9sZFNpZ1RleHQuaXNFbXB0eSgp
ICkgeworICAgIC8vIGlmIHN3aXRjaGluZyB0byBhbiBpZGVudCB3aXRoIG5vIHNpZywgdHJhY2sg
aXRzIHBvc2l0aW9uIGZvciBsYXRlciBpbiBjYXNlCisgICAgLy8gdGhlIHVzZXIgc3dpdGNoZXMg
dG8gb25lIHdpdGggYSBzaWcgZm9yIGludGVsbGlnZW50IHBsYWNlbWVudAorICAgIC8vIGNhdmVh
dDogdGhpcyBpcyBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSB1c2VyIHdvbid0IGNo
YW5nZQorICAgIC8vIHRoZSAyMCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBzaWduYXR1cmUgKHNlZW1z
IHJlYXNvbmFibGUgaW4gcmVwbHkvZndkKQorICAgIGlmICggbU5ld1NpZ1RleHQuaXNFbXB0eSgp
ICkgeworICAgICAgLy8gb29wcywgdGhlcmUncyBhY3R1YWxseSBub3RoaW5nIGFmdGVyIHRoZSBz
aWduYXR1cmUsIGp1c3QgYXBwZW5kIGxhdGVyCisgICAgICBpZiAoIGVkdFRleHQuZmluZCggbU9s
ZFNpZ1RleHQsIDAsIHRydWUpICsgbU9sZFNpZ1RleHQubGVuZ3RoKCkgPT0gZWR0VGV4dC5sZW5n
dGgoKSApCisgICAgICAgIG1UcmFja1NpZyA9ICIhISFBUFBFTkQhISEiOworICAgICAgZWxzZQor
ICAgICAgICBtVHJhY2tTaWcgPSBlZHRUZXh0Lm1pZCggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4
dCwgMCwgdHJ1ZSkgKworICAgICAgICAgIG1PbGRTaWdUZXh0Lmxlbmd0aCgpLCAyMCApOworICAg
IH0KKyAgICBlZHRUZXh0ID0gZWR0VGV4dC5yZW1vdmUoIGVkdFRleHQuZmluZCggbU9sZFNpZ1Rl
eHQsIDAsIHRydWUpLAorICAgICAgbU9sZFNpZ1RleHQubGVuZ3RoKCkgKTsKKyAgfQorICBtT2xk
U2lnVGV4dCA9IG1OZXdTaWdUZXh0OwogCi0gIC8vIG5vdyBhcHBlbmQgdGhlIG5ldyBzaWcKLSAg
bU9sZFNpZ1RleHQgPSBpZGVudC5zaWduYXR1cmVUZXh0KCk7Ci0gIGlmKCAoICFtT2xkU2lnVGV4
dC5pc0VtcHR5KCkgKSAmJgotICAgICAgKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5hdXRvVGV4
dFNpZ25hdHVyZSgpID09ICJhdXRvIiApICkgewotICAgIGVkdFRleHQuYXBwZW5kKCBtT2xkU2ln
VGV4dCApOwotICB9CiAgIG1FZGl0b3ItPnNldFRleHQoIGVkdFRleHQgKTsKIAogICAvLyBkaXNh
YmxlIGNlcnRhaW4gYWN0aW9ucyBpZiB0aGVyZSBpcyBubyBQR1AgdXNlciBpZGVudGl0eSBzZXQK
LS0tIGttYWlsL2ttY29tcG9zZXdpbi5oCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBr
bWFpbC9rbWNvbXBvc2V3aW4uaAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtNzkxLDYg
Kzc5MSw5IEBACiAgIFFNYXA8S0lPOjpKb2IqLCBLVVJMPiBtQXR0YWNoSm9iczsKICAgS1VSTDo6
TGlzdCBtQXR0YWNoRmlsZXNQZW5kaW5nOwogICBpbnQgbUF0dGFjaEZpbGVzU2VuZDsKKworICBR
U3RyaW5nIG1UcmFja1NpZzsKKyAgUVN0cmluZyBtTmV3U2lnVGV4dDsKIAogcHJpdmF0ZToKICAg
Ly8gaGVscGVyIG1ldGhvZCBmb3Igc2xvdEluc2VydChNeSlQdWJsaWNLZXkoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21966</attachid>
            <date>2007-11-01 06:14:40 +0000</date>
            <delta_ts>2007-11-01 19:17:53 +0000</delta_ts>
            <desc>kmail-tofu.patch</desc>
            <filename>kmail-tofu.patch</filename>
            <type>text/plain</type>
            <size>17896</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkK
KysrIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAK
QEAgLTI1NTcsNiArMjU1NywyNCBAQAogICBjb25uZWN0KCBtQXV0b0FwcFNpZ25GaWxlQ2hlY2ss
IFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAgICAgICAgICAgdGhpcywgU0xPVCggc2xv
dEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOwogCisgIG1Ub3BRdW90ZUNoZWNrID0KKyAgICBuZXcg
UUNoZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlSXRlbSgp
LT5sYWJlbCgpLCB0aGlzICk7CisgIG1Ub3BRdW90ZUNoZWNrLT5zZXRFbmFibGVkKCBmYWxzZSAp
OworICB2bGF5LT5hZGRXaWRnZXQoIG1Ub3BRdW90ZUNoZWNrKTsKKyAgY29ubmVjdCggbVRvcFF1
b3RlQ2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKKyAgICAgICAgICAgdGhpcywg
U0xPVCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOworICBjb25uZWN0KCBtQXV0b0FwcFNp
Z25GaWxlQ2hlY2ssIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwKKyAgICAgICAgICAgbVRvcFF1b3Rl
Q2hlY2ssIFNMT1Qoc2V0RW5hYmxlZChib29sKSkgKTsKKworICBtRGFzaERhc2hDaGVjayA9Cisg
ICAgbmV3IFFDaGVja0JveCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1
cmVJdGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldEVuYWJsZWQo
IGZhbHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbURhc2hEYXNoQ2hlY2spOworICBjb25uZWN0
KCBtRGFzaERhc2hDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAg
ICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNvbm5lY3QoIG1B
dXRvQXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAgICAgICAgICBt
RGFzaERhc2hDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOworCiAgIG1TbWFydFF1b3Rl
Q2hlY2sgPSBuZXcgUUNoZWNrQm94KAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5zbWFydFF1b3RlSXRlbSgpLT5sYWJlbCgpLAogICAgICAgICAgICB0aGlzLCAia2NmZ19TbWFy
dFF1b3RlIiApOwpAQCAtMjY3NCw2ICsyNjg5LDggQEAKIAogICBtQXV0b0FwcFNpZ25GaWxlQ2hl
Y2stPnNldENoZWNrZWQoCiAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9U
ZXh0U2lnbmF0dXJlKCk9PSJhdXRvIiApOworICBtVG9wUXVvdGVDaGVjay0+c2V0Q2hlY2tlZCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7CisgIG1EYXNoRGFz
aENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNpZ25h
dHVyZSgpICk7CiAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnNtYXJ0UXVvdGUoKSApOwogICBtQXV0b1JlcXVlc3RNRE5DaGVjay0+c2V0Q2hl
Y2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cmVxdWVzdE1ETigpICk7CiAgIG1Xb3JkV3Jh
cENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT53b3JkV3JhcCgpICk7
CkBAIC0yNjk0LDYgKzI3MTEsMTIgQEAKICAgICBib29sIHN0YXRlID0gY29tcG9zZXIucmVhZEJv
b2xFbnRyeSgic2lnbmF0dXJlIik7CiAgICAgbUF1dG9BcHBTaWduRmlsZUNoZWNrLT5zZXRDaGVj
a2VkKCBzdGF0ZSApOwogICB9CisgIGlmICggY29tcG9zZXIuaGFzS2V5KCAicHJlcGVuZC1zaWdu
YXR1cmUiICkgKQorICAgIG1Ub3BRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBjb21wb3Nlci5yZWFk
Qm9vbEVudHJ5KCAicHJlcGVuZC1zaWduYXR1cmUiICkgKTsKKworICBpZiAoIGNvbXBvc2VyLmhh
c0tleSggImRhc2gtZGFzaC1zaWduYXR1cmUiICkgKQorICAgIG1EYXNoRGFzaENoZWNrLT5zZXRD
aGVja2VkKCBjb21wb3Nlci5yZWFkQm9vbEVudHJ5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSAp
OworCiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAic21hcnQtcXVvdGUiICkgKQogICAgIG1TbWFy
dFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJzbWFydC1x
dW90ZSIgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInJlcXVlc3QtbWRuIiApICkKQEAg
LTI3MTUsNiArMjczOCw4IEBACiB2b2lkIENvbXBvc2VyUGFnZTo6R2VuZXJhbFRhYjo6c2F2ZSgp
IHsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0QXV0b1RleHRTaWduYXR1cmUoCiAgICAg
ICAgICBtQXV0b0FwcFNpZ25GaWxlQ2hlY2stPmlzQ2hlY2tlZCgpID8gImF1dG8iIDogIm1hbnVh
bCIgKTsKKyAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0UHJlcGVuZFNpZ25hdHVyZSggbVRv
cFF1b3RlQ2hlY2stPmlzQ2hlY2tlZCgpKTsKKyAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0
RGFzaERhc2hTaWduYXR1cmUoIG1EYXNoRGFzaENoZWNrLT5pc0NoZWNrZWQoKSk7CiAgIEdsb2Jh
bFNldHRpbmdzOjpzZWxmKCktPnNldFNtYXJ0UXVvdGUoIG1TbWFydFF1b3RlQ2hlY2stPmlzQ2hl
Y2tlZCgpICk7CiAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldFJlcXVlc3RNRE4oIG1BdXRv
UmVxdWVzdE1ETkNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5zZXRXb3JkV3JhcCggbVdvcmRXcmFwQ2hlY2stPmlzQ2hlY2tlZCgpICk7Ci0tLSBrbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oCTIwMDYvMTEvMDIgMTA6MDY6MjcJNjAxMTUwCkBAIC02MDQsNiAr
NjA0LDggQEAKIAogcHJpdmF0ZToKICAgUUNoZWNrQm94ICAgICAqbUF1dG9BcHBTaWduRmlsZUNo
ZWNrOworICBRQ2hlY2tCb3ggICAgICptVG9wUXVvdGVDaGVjazsKKyAgUUNoZWNrQm94ICAgICAq
bURhc2hEYXNoQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1TbWFydFF1b3RlQ2hlY2s7CiAgIFFD
aGVja0JveCAgICAgKm1BdXRvUmVxdWVzdE1ETkNoZWNrOwogICBRQ2hlY2tCb3gJKm1TaG93UmVj
ZW50QWRkcmVzc2VzSW5Db21wb3NlcjsKLS0tIGttYWlsL2ttYWlsLmtjZmcJMjAwNi8xMS8wMiAx
MDowMzoyMQk2MDExNDkKKysrIGttYWlsL2ttYWlsLmtjZmcJMjAwNi8xMS8wMiAxMDowNjoyNwk2
MDExNTAKQEAgLTI1Myw3ICsyNTMsNyBAQAogICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVs
dD4KICAgICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iQXV0b1RleHRTaWduYXR1cmUi
IHR5cGU9IlN0cmluZyIga2V5PSJzaWduYXR1cmUiPgotICAgICAgICA8bGFiZWw+QSZhbXA7dXRv
bWF0aWNhbGx5IGFwcGVuZCBzaWduYXR1cmU8L2xhYmVsPgorICAgICAgICA8bGFiZWw+QSZhbXA7
dXRvbWF0aWNhbGx5IGluc2VydCBzaWduYXR1cmU8L2xhYmVsPgogICAgICAgICA8ZGVmYXVsdD5h
dXRvPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KICAgICAgIDxlbnRyeSBuYW1lPSJTdGlja3lJ
ZGVudGl0eSIgdHlwZT0iQm9vbCIga2V5PSJzdGlja3ktaWRlbnRpdHkiPgpAQCAtMzUwLDYgKzM1
MCwxNyBAQAogICAgICAgICA8d2hhdHN0aGlzPkEgYmFja3VwIGNvcHkgb2YgdGhlIHRleHQgaW4g
dGhlIGNvbXBvc2VyIHdpbmRvdyBjYW4gYmUgY3JlYXRlZCByZWd1bGFybHkuIFRoZSBpbnRlcnZh
bCB1c2VkIHRvIGNyZWF0ZSB0aGUgYmFja3VwcyBpcyBzZXQgaGVyZS4gWW91IGNhbiBkaXNhYmxl
IGF1dG9zYXZpbmcgYnkgc2V0dGluZyBpdCB0byB0aGUgdmFsdWUgMC48L3doYXRzdGhpcz4KICAg
ICAgICAgPGRlZmF1bHQ+MjwvZGVmYXVsdD4KICAgICAgIDwvZW50cnk+CisKKyAgICAgIDxlbnRy
eSBuYW1lPSJQcmVwZW5kU2lnbmF0dXJlIiB0eXBlPSJCb29sIiBrZXk9InByZXBlbmQtc2lnbmF0
dXJlIj4KKyAgICAgICAgPGxhYmVsPkluc2VydCBzaWduYXR1cmUgYWJvdmUgcXVvdGVkIHRleHQ8
L2xhYmVsPgorICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KKyAgICAgIDwvZW50cnk+
CisKKyAgICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5
PSJkYXNoLWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9y
ICgtLSkgdG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVs
dD4KKyAgICAgIDwvZW50cnk+CisKICAgICAgIDxlbnRyeSBuYW1lPSJSZXBseVByZWZpeGVzIiB0
eXBlPSJTdHJpbmdMaXN0IiBrZXk9InJlcGx5LXByZWZpeGVzIj4KICAgICAgICAgPGRlZmF1bHQ+
UmVcXHMqOixSZVxcW1xcZCtcXF06LFJlXFxkKzo8L2RlZmF1bHQ+CiAgICAgICA8L2VudHJ5Pgot
LS0ga21haWwva21jb21wb3NlcnVpLnJjCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBr
bWFpbC9rbWNvbXBvc2VydWkucmMJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTYzLDYg
KzYzLDkgQEAKICAgPE1lbnUgbmFtZT0iYXR0YWNoIiA+CiAgICA8dGV4dD4mYW1wO0F0dGFjaDwv
dGV4dD4KICAgIDxBY3Rpb24gbmFtZT0iYXBwZW5kX3NpZ25hdHVyZSIgLz4KKyAgIDxBY3Rpb24g
bmFtZT0icHJlcGVuZF9zaWduYXR1cmUiIC8+CisgICA8QWN0aW9uIG5hbWU9Imluc2VydF9zaWdu
YXR1cmVfYXRfY3Vyc29yX3Bvc2l0aW9uIiAvPgorICAgPFNlcGFyYXRvci8+CiAgICA8QWN0aW9u
IG5hbWU9ImF0dGFjaF9wdWJsaWNfa2V5IiAvPgogICAgPEFjdGlvbiBuYW1lPSJhdHRhY2hfbXlf
cHVibGljX2tleSIgLz4KICAgIDxTZXBhcmF0b3IvPgotLS0ga21haWwva21jb21wb3Nld2luLmNw
cAkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwva21jb21wb3Nld2luLmNwcAky
MDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMTMzMSw2ICsxMzMxLDE0IEBACiAgICh2b2lk
KSBuZXcgS0FjdGlvbiAoaTE4bigiQXBwZW5kIFMmaWduYXR1cmUiKSwgMCwgdGhpcywKICAgICAg
ICAgICAgICAgICAgICAgICBTTE9UKHNsb3RBcHBlbmRTaWduYXR1cmUoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAiYXBwZW5kX3NpZ25hdHVyZSIpOworICAo
dm9pZCkgbmV3IEtBY3Rpb24gKGkxOG4oIlByZXBlbmQgUyZpZ25hdHVyZSIpLCAwLCB0aGlzLAor
ICAgICAgICAgICAgICAgICAgICAgIFNMT1Qoc2xvdFByZXBlbmRTaWduYXR1cmUoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAicHJlcGVuZF9zaWduYXR1cmUi
KTsKKyAgKHZvaWQpIG5ldyBLQWN0aW9uIChpMThuKCJJbnNlcnQgU2lnbmF0dXJlIEF0IEMmdXJz
b3IgUG9zaXRpb24iKSwgImVkaXQiLCAwLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgIFNM
T1Qoc2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkpLAorICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbkNvbGxlY3Rpb24oKSwgImluc2VydF9zaWduYXR1cmVfYXRfY3Vyc29yX3Bvc2l0aW9u
Iik7CisKKwogICBtQXR0YWNoUEsgID0gbmV3IEtBY3Rpb24gKGkxOG4oIkF0dGFjaCAmUHVibGlj
IEtleS4uLiIpLCAwLCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChzbG90
SW5zZXJ0UHVibGljS2V5KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQ29s
bGVjdGlvbigpLCAiYXR0YWNoX3B1YmxpY19rZXkiKTsKQEAgLTIwMjIsNyArMjAzMCwxMyBAQAog
ICAgIC8vIE5vdCB1c2VyIGZyaWVuZHkgaWYgdGhpcyBtb2RhbCBmaWxlc2VsZXRvciBvcGVucyBi
ZWZvcmUgdGhlCiAgICAgLy8gY29tcG9zZXIuCiAgICAgLy8KLSAgICBRVGltZXI6OnNpbmdsZVNo
b3QoIDIwMCwgdGhpcywgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgLy9RVGlt
ZXI6OnNpbmdsZVNob3QoIDIwMCwgdGhpcywgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7
CisgICAgICBpZiAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSAp
IHsKKyAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KCAwLCB0aGlzLCBTTE9UKHNsb3RQcmVwZW5k
U2lnbmF0dXJlKCkpICk7CisgICAgICB9IGVsc2UgeworICAgICAgICBRVGltZXI6OnNpbmdsZVNo
b3QoIDAsIHRoaXMsIFNMT1Qoc2xvdEFwcGVuZFNpZ25hdHVyZSgpKSApOworICAgICAgfQorCiAg
IH0KICAgc2V0TW9kaWZpZWQoIGlzTW9kaWZpZWQgKTsKIApAQCAtNDE0Niw2ICs0MTYwLDI0IEBA
CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHZvaWQgS01Db21wb3NlV2luOjpzbG90QXBwZW5kU2ln
bmF0dXJlKCkKIHsKKyAgICBpbnNlcnRTaWduYXR1cmUoKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCit2b2lkIEtNQ29tcG9zZVdpbjo6c2xvdFByZXBlbmRTaWduYXR1cmUoKQoreworICAg
IGluc2VydFNpZ25hdHVyZSggZmFsc2UgKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2
b2lkIEtNQ29tcG9zZVdpbjo6c2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkKK3sKKyAgICBp
bnNlcnRTaWduYXR1cmUoIGZhbHNlLCBtRWRpdG9yLT5jdXJyZW50TGluZSgpICk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBvc2VXaW46Omluc2VydFNpZ25hdHVyZSgg
Ym9vbCBhcHBlbmQsIGludCBwb3MgKQorewogICBib29sIG1vZCA9IG1FZGl0b3ItPmlzTW9kaWZp
ZWQoKTsKIAogICBjb25zdCBLUElNOjpJZGVudGl0eSAmIGlkZW50ID0KQEAgLTQxNTAsMTAgKzQx
ODAsMTUgQEAKIAogICBjb25zdCBLUElNOjpJZGVudGl0eSAmIGlkZW50ID0KICAgICBrbWtlcm5l
bC0+aWRlbnRpdHlNYW5hZ2VyKCktPmlkZW50aXR5Rm9yVW9pZE9yRGVmYXVsdCggbUlkZW50aXR5
LT5jdXJyZW50SWRlbnRpdHkoKSApOwotICBtT2xkU2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRl
eHQoKTsKKyAgbU9sZFNpZ1RleHQgPSBpZGVudC5zaWduYXR1cmVUZXh0KCBHbG9iYWxTZXR0aW5n
czo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlKCkgKTsKICAgaWYoICFtT2xkU2lnVGV4dC5pc0Vt
cHR5KCkgKQogICB7Ci0gICAgbUVkaXRvci0+YXBwZW5kKG1PbGRTaWdUZXh0KTsKKyAgICBpZiAo
IGFwcGVuZCApIHsKKyAgICAgIG1FZGl0b3ItPmFwcGVuZChtT2xkU2lnVGV4dCk7CisgICAgfSBl
bHNlIHsKKyAgICAgIG1FZGl0b3ItPmluc2VydEF0KG1PbGRTaWdUZXh0LCBwb3MsIDApOworICAg
IH0KKwogICAgIG1FZGl0b3ItPnNldE1vZGlmaWVkKG1vZCk7CiAgICAgLy8gbUVkaXRvci0+c2V0
Q29udGVudHNQb3MoIDAsIDAgKTsKICAgICBpZiAoICBtUHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRp
b24gKSB7CkBAIC00MTU2LDEzICs0MjAwLDMwIEBACiAKICAgICBtRWRpdG9yLT5zZXRNb2RpZmll
ZChtb2QpOwogICAgIC8vIG1FZGl0b3ItPnNldENvbnRlbnRzUG9zKCAwLCAwICk7Ci0gICAgaWYg
KCAgbVByZXNlcnZlVXNlckN1cnNvclBvc2l0aW9uICkgewotICAgICAgbUVkaXRvci0+c2V0Q3Vy
c29yUG9zaXRpb25Gcm9tU3RhcnQoICh1bnNpZ25lZCBpbnQpIG1Nc2ctPmdldEN1cnNvclBvcygp
ICk7Ci0gICAgICAvLyBPbmx5IGtlZXAgdGhlIGN1cnNvciBmcm9tIHRoZSBtTXNnICpvbmNlKiBi
YXNlZCBvbiB0aGUKLSAgICAgIC8vIHByZXNlcnZlLWN1cnNvci1wb3NpdGlvbiBzZXR0aW5nOyB0
aGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUKLSAgICAgIC8vIHRoZSBtZXNzYWdlIGNvbWVzIGZy
b20gYSB0ZW1wbGF0ZSB3aXRoIGEgc3BlY2lmaWMgY3Vyc29yCi0gICAgICAvLyBwb3NpdGlvbiBz
ZXQgYW5kIHRoZSBzaWduYXR1cmUgaXMgYXBwZW5kZWQgYXV0b21hdGljYWxseS4KLSAgICAgIG1Q
cmVzZXJ2ZVVzZXJDdXJzb3JQb3NpdGlvbiA9IGZhbHNlOwotICAgIH0KKworICAgIC8vIGlmIHRo
ZSBjdXJzb3IgaXMgZXhwbGljaXRseSBzZXQgaW4gYSB0ZW1wbGF0ZSwgc2V0IHRoZSBjdXJzb3Ig
cG9zaXRpb24KKyAgICAvLyB0byB0aGUgdGVtcGxhdGUgcG9zaXRpb24sIG9mZnNldHRpbmcgZm9y
IHRoZSBwcmVwZW5kZWQgc2lnbmF0dXJlIGxlbmd0aAorICAgIC8vIGlmIGFwcGxpY2FibGUsIG90
aGVyd2lzZSBzZXQgaXQgdG8gYWJvdmUgdGhlIHNpZyBmb3Ige3ByZSxhcH1wZW5kL2luc2VydAor
ICAgIGlmICggIG1QcmVzZXJ2ZVVzZXJDdXJzb3JQb3NpdGlvbiApIHsKKyAgICAgIGlmICggYXBw
ZW5kICYmIHBvcyA9PSAwICkKKyAgICAgICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb25Gcm9t
U3RhcnQoICh1bnNpZ25lZCBpbnQpIG1Nc2ctPmdldEN1cnNvclBvcygpICk7CisgICAgICBlbHNl
CisgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uRnJvbVN0YXJ0KCAodW5zaWduZWQg
aW50KSBtTXNnLT5nZXRDdXJzb3JQb3MoKSArIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CisgICAg
ICAvLyBPbmx5IGtlZXAgdGhlIGN1cnNvciBmcm9tIHRoZSBtTXNnICpvbmNlKiBiYXNlZCBvbiB0
aGUKKyAgICAgIC8vIHByZXNlcnZlLWN1cnNvci1wb3NpdGlvbiBzZXR0aW5nOyB0aGlzIGhhbmRs
ZXMgdGhlIGNhc2Ugd2hlcmUKKyAgICAgIC8vIHRoZSBtZXNzYWdlIGNvbWVzIGZyb20gYSB0ZW1w
bGF0ZSB3aXRoIGEgc3BlY2lmaWMgY3Vyc29yCisgICAgICAvLyBwb3NpdGlvbiBzZXQgYW5kIHRo
ZSBzaWduYXR1cmUgaXMgYXBwZW5kZWQgYXV0b21hdGljYWxseS4KKyAgICAgIG1QcmVzZXJ2ZVVz
ZXJDdXJzb3JQb3NpdGlvbiA9IGZhbHNlOworICAgIH0gZWxzZSB7IGlmICggYXBwZW5kICkgewor
ICAgICAgICAgIFFTdHJpbmcgdG1wTXNnVGV4dCA9IG1FZGl0b3ItPnRleHQoKTsKKyAgICAgICAg
ICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbkZyb21TdGFydCggdG1wTXNnVGV4dC5sZW5ndGgo
KSAtIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IGlm
ICggcG9zICE9IDAgKQorICAgICAgICAgICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb24oIHBv
cywgMCApOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBv
c2l0aW9uKCAwICwgMCApOworICAgICAgICB9CisgICAgfQorCiAgICAgbUVkaXRvci0+c3luYygp
OwogICB9CiB9Ci0tLSBrbWFpbC9rbWNvbXBvc2V3aW4uY3BwCTIwMDYvMTEvMDIgMTA6MDM6MjEJ
NjAxMTQ5CisrKyBrbWFpbC9rbWNvbXBvc2V3aW4uY3BwCTIwMDYvMTEvMDIgMTA6MDY6MjcJNjAx
MTUwCkBAIC00MTk4LDM0ICs0MjY5LDM3IEBACiAKICAgLy8gUmVtb3ZlIHRoZSBzaWduYXR1cmUg
Zm9yIG5vdy4KICAgUVN0cmluZyBzaWc7CisgIFFTdHJpbmcgcHJlc2lnOwogICBib29sIHJlc3Rv
cmUgPSBmYWxzZTsKICAgY29uc3QgS1BJTTo6SWRlbnRpdHkgJiBpZGVudCA9CiAgICAga21rZXJu
ZWwtPmlkZW50aXR5TWFuYWdlcigpLT5pZGVudGl0eUZvclVvaWQoIG1JZCApOwogICBpZiAoICFp
ZGVudC5pc051bGwoKSApIHsKLSAgICBzaWcgPSBpZGVudC5zaWduYXR1cmVUZXh0KCk7Ci0gICAg
aWYoICFzaWcuaXNFbXB0eSgpICkgewotICAgICAgaWYoIHMuZW5kc1dpdGgoIHNpZyApICkgewot
ICAgICAgICBzLnRydW5jYXRlKCBzLmxlbmd0aCgpIC0gc2lnLmxlbmd0aCgpICk7CisgICAgc2ln
ID0gaWRlbnQuc2lnbmF0dXJlVGV4dCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNp
Z25hdHVyZSgpICk7CisgICAgICBpZiggIXNpZy5pc0VtcHR5KCkgJiYgcy5maW5kKHNpZywgMCwg
dHJ1ZSkgIT0gLTEgKSB7CisgICAgICAgIHByZXNpZyA9IHMubGVmdCggcy5maW5kKHNpZywgMCwg
dHJ1ZSkgKTsKKyAgICAgICAgcy5yZW1vdmUoIHMuZmluZChzaWcsIDAsIHRydWUpIC0gc2lnLmxl
bmd0aCgpICk7CiAgICAgICAgIHJlc3RvcmUgPSB0cnVlOwogICAgICAgfQotICAgIH0KICAgfQog
CiAgIC8vIFNxdWVlemUgdGFicyBhbmQgc3BhY2VzCiAgIFFSZWdFeHAgc3F1ZWV6ZSggIltcdCBd
KyIgKTsKICAgcy5yZXBsYWNlKCBzcXVlZXplLCBRQ2hhciggJyAnICkgKTsKKyAgaWYoICFwcmVz
aWcuaXNFbXB0eSgpICkgcHJlc2lnLnJlcGxhY2UoIHNxdWVlemUsIFFDaGFyKCAnICcgKSApOwog
CiAgIC8vIFJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgIFFSZWdFeHAgdHJhaWxpbmcoICJc
XHMrJCIgKTsKICAgcy5yZXBsYWNlKCB0cmFpbGluZywgUUNoYXIoICdcbicgKSApOworICBpZigg
IXByZXNpZy5pc0VtcHR5KCkgKSBwcmVzaWcucmVwbGFjZSggdHJhaWxpbmcsIFFDaGFyKCAnXG4n
ICkgKTsKIAogICAvLyBTaW5nbGUgc3BhY2UgbGluZXMKICAgUVJlZ0V4cCBzaW5nbGVTcGFjZSgg
Iltcbl17Mix9IiApOwogICBzLnJlcGxhY2UoIHNpbmdsZVNwYWNlLCBRQ2hhciggJ1xuJyApICk7
CisgIGlmKCAhcHJlc2lnLmlzRW1wdHkoKSApIHByZXNpZy5yZXBsYWNlKCBzaW5nbGVTcGFjZSwg
UUNoYXIoICdcbicgKSApOwogCiAgIC8vIFJlc3RvcmUgdGhlIHNpZ25hdHVyZQogICBpZiAoIHJl
c3RvcmUgKQotICAgIHMuYXBwZW5kKCBzaWcgKTsKKyAgICBzLmluc2VydCggcHJlc2lnLmxlbmd0
aCgpLCBzaWcgKTsKIAogICAvLyBQdXQgdGhlIG5ldyB0ZXh0IGluIHBsYWNlLgogICAvLyBUaGUg
bGluZXMgYmVsb3cgZG8gbm90IGNsZWFyIHRoZSB1bmRvIGhpc3RvcnksIGJ1dCB1bmZvcnR1YXRl
bHkgY2F1c2UKQEAgLTQ0ODksNyArNDUxMCw3IEBACiAgICAgICBpZGVudGl0eU1hbmFnZXIoKS0+
CiAgICAgICBpZGVudGl0eUZvclVvaWRPckRlZmF1bHQoIG1Nc2ctPmhlYWRlckZpZWxkKCAiWC1L
TWFpbC1JZGVudGl0eSIgKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBX
aGl0ZVNwYWNlKCkudG9VSW50KCkgKTsKLSAgICBtT2xkU2lnVGV4dCA9IGlkLnNpZ25hdHVyZVRl
eHQoKTsKKyAgICBtT2xkU2lnVGV4dCA9IGlkLnNpZ25hdHVyZVRleHQoIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSApOwogICB9CiAKICAgLy8gdHJ5IHRvIHRydW5j
YXRlIHRoZSBvbGQgc2lnCkBAIC00NTAwLDE1ICs0NTUyLDU0IEBACiAgIHdoaWxlICggIW1PbGRT
aWdUZXh0LmlzRW1wdHkoKSAmJiBtT2xkU2lnVGV4dFttT2xkU2lnVGV4dC5sZW5ndGgoKS0xXS5p
c1NwYWNlKCkgKQogICAgIG1PbGRTaWdUZXh0LnRydW5jYXRlKCBtT2xkU2lnVGV4dC5sZW5ndGgo
KSAtIDEgKTsKIAotICBpZiggZWR0VGV4dC5lbmRzV2l0aCggbU9sZFNpZ1RleHQgKSApCi0gICAg
ZWR0VGV4dC50cnVuY2F0ZSggZWR0VGV4dC5sZW5ndGgoKSAtIG1PbGRTaWdUZXh0Lmxlbmd0aCgp
ICk7CisgIG1OZXdTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJlVGV4dCggR2xvYmFsU2V0dGluZ3M6
OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7CisgIC8vIGlmIHRoZSB1c2VyIGhhcyBhdXRv
IHNpZ25hdHVyZXMgZW5hYmxlZCBhbmQgYSBuZXcgc2lnLCByZXBsYWNlIHRoZQorICAvLyBjdXJy
ZW50IHNpZyBvbiBpZGVudGl0eSBjaGFuZ2UgaWYgdGhlcmUncyBhIHNpZyBzZXQsIG90aGVyd2lz
ZSBwcmVwZW5kCisgIC8vIHRoZSBuZXcgc2lnIGlmIHRoZXkgd2FudCBwcmVwZW5kZWQsIG9yIGFw
cGVuZCBvdGhlcndpc2UgYW5kIGZpbmFsbHkgCisgIC8vIGRlbGV0ZSB0aGUgc2lnIGlmIHRoZXkg
ZG9uJ3QgaGF2ZSBhdXRvIHNpZ25hdHVyZXMgZW5hYmxlZCBvciBpZgorICAvLyB0aGUgbmV3IHNp
Z25hdHVyZSBpcyBlbXB0eSBhbmQgb2xkIHNpZyBpc24ndCBlbXB0eQorICBpZiAoICggR2xvYmFs
U2V0dGluZ3M6OnNlbGYoKS0+YXV0b1RleHRTaWduYXR1cmUoKSA9PSAiYXV0byIgKSAmJgorICAg
ICAgICFtTmV3U2lnVGV4dC5pc0VtcHR5KCkgKSB7CisgICAgaWYgKCAoIGVkdFRleHQuZmluZCgg
bU9sZFNpZ1RleHQsIDAsIHRydWUpICE9IC0xICkgJiYgIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSAp
IHsKKyAgICAgIGVkdFRleHQgPSBlZHRUZXh0LnJlcGxhY2UoIGVkdFRleHQuZmluZCggbU9sZFNp
Z1RleHQsIDAsIHRydWUpLAorICAgICAgICBtT2xkU2lnVGV4dC5sZW5ndGgoKSwgbU5ld1NpZ1Rl
eHQgKTsKKyAgICB9IGVsc2UgeyBpZiAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRT
aWduYXR1cmUoKSApIHsKKyAgICAgICAgICAvLyBpZiB3ZSBoYXZlIHRyYWNraW5nIGluZm8gYW5k
IEkgY2FuIGZpbmQgaXQgaW4gdGhlIHRleHQsIHBsYWNlIHRoZQorICAgICAgICAgIC8vIHNpZyB0
aGVyZSwgb3RoZXJ3aXNlIHByZXBlbmQgaXQgKHdpdGggXG5cbiBpZiB0aGV5J3ZlIGFscmVhZHkg
dHlwZWQpCisgICAgICAgICAgaWYgKCAhbVRyYWNrU2lnLmlzTnVsbCgpICYmICggZWR0VGV4dC5m
aW5kKCBtVHJhY2tTaWcsIDAsIHRydWUpICE9IC0xICkgKSB7CisgICAgICAgICAgICBlZHRUZXh0
Lmluc2VydCggZWR0VGV4dC5maW5kKCBtVHJhY2tTaWcsIDAsIHRydWUpICwgbU5ld1NpZ1RleHQg
KTsKKyAgICAgICAgICAgIG1UcmFja1NpZyA9IFFTdHJpbmc6Om51bGw7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeyBpZiAoIG1UcmFja1NpZyA9PSAiISEhQVBQRU5EISEhIiApCisgICAg
ICAgICAgICAgIGVkdFRleHQuYXBwZW5kKCBtTmV3U2lnVGV4dCApOworICAgICAgICAgICAgZWxz
ZSB7IGlmICggIWVkdFRleHRbMV0uaXNTcGFjZSgpICkKKyAgICAgICAgICAgICAgICBlZHRUZXh0
LnByZXBlbmQoIG1OZXdTaWdUZXh0ICsgUVN0cmluZzo6ZnJvbUxhdGluMSggIlxuXG4iICkgKTsK
KyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVkdFRleHQucHJlcGVuZCggbU5l
d1NpZ1RleHQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9IGVsc2Ugewor
ICAgICAgICBlZHRUZXh0LmFwcGVuZCggbU5ld1NpZ1RleHQgKTsKKyAgICAgIH0KKyAgICB9Cisg
IH0gZWxzZSBpZiAoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgKSB7CisgICAgLy8gaWYgc3dpdGNo
aW5nIHRvIGFuIGlkZW50IHdpdGggbm8gc2lnLCB0cmFjayBpdHMgcG9zaXRpb24gZm9yIGxhdGVy
IGluIGNhc2UKKyAgICAvLyB0aGUgdXNlciBzd2l0Y2hlcyB0byBvbmUgd2l0aCBhIHNpZyBmb3Ig
aW50ZWxsaWdlbnQgcGxhY2VtZW50CisgICAgLy8gY2F2ZWF0OiB0aGlzIGlzIGJhc2VkIG9uIHRo
ZSBhc3N1bXB0aW9uIHRoYXQgdGhlIHVzZXIgd29uJ3QgY2hhbmdlCisgICAgLy8gdGhlIDIwIGNo
YXJhY3RlcnMgYWZ0ZXIgdGhlIHNpZ25hdHVyZSAoc2VlbXMgcmVhc29uYWJsZSBpbiByZXBseS9m
d2QpCisgICAgaWYgKCBtTmV3U2lnVGV4dC5pc0VtcHR5KCkgKSB7CisgICAgICAvLyBvb3BzLCB0
aGVyZSdzIGFjdHVhbGx5IG5vdGhpbmcgYWZ0ZXIgdGhlIHNpZ25hdHVyZSwganVzdCBhcHBlbmQg
bGF0ZXIKKyAgICAgIGlmICggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSkgKyBt
T2xkU2lnVGV4dC5sZW5ndGgoKSA9PSBlZHRUZXh0Lmxlbmd0aCgpICkKKyAgICAgICAgbVRyYWNr
U2lnID0gIiEhIUFQUEVORCEhISI7CisgICAgICBlbHNlCisgICAgICAgIG1UcmFja1NpZyA9IGVk
dFRleHQubWlkKCBlZHRUZXh0LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSArCisgICAgICAg
ICAgbU9sZFNpZ1RleHQubGVuZ3RoKCksIDIwICk7CisgICAgfQorICAgIGVkdFRleHQgPSBlZHRU
ZXh0LnJlbW92ZSggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSksCisgICAgICBt
T2xkU2lnVGV4dC5sZW5ndGgoKSApOworICB9CisgIG1PbGRTaWdUZXh0ID0gbU5ld1NpZ1RleHQ7
CiAKLSAgLy8gbm93IGFwcGVuZCB0aGUgbmV3IHNpZwotICBtT2xkU2lnVGV4dCA9IGlkZW50LnNp
Z25hdHVyZVRleHQoKTsKLSAgaWYoICggIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSApICYmCi0gICAg
ICAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9UZXh0U2lnbmF0dXJlKCkgPT0gImF1dG8i
ICkgKSB7Ci0gICAgZWR0VGV4dC5hcHBlbmQoIG1PbGRTaWdUZXh0ICk7Ci0gIH0KICAgbUVkaXRv
ci0+c2V0VGV4dCggZWR0VGV4dCApOwogCiAgIC8vIGRpc2FibGUgY2VydGFpbiBhY3Rpb25zIGlm
IHRoZXJlIGlzIG5vIFBHUCB1c2VyIGlkZW50aXR5IHNldAotLS0ga21haWwva21jb21wb3Nld2lu
LmgJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkKKysrIGttYWlsL2ttY29tcG9zZXdpbi5oCTIw
MDYvMTEvMDIgMTA6MDY6MjcJNjAxMTUwCkBAIC0zNjksNiArMzY5LDE2IEBACiAgIHZvaWQgc2xv
dEFwcGVuZFNpZ25hdHVyZSgpOwogIAogICAvKioKKyAgICogUHJlcGVuZCBzaWduYXR1cmUgZmls
ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IGluIHRoZSBlZGl0b3IuCisgICAqLworICB2
b2lkIHNsb3RQcmVwZW5kU2lnbmF0dXJlKCk7CisKKyAgLyoqCisgICAqIEluc2VydCBzaWduYXR1
cmUgZmlsZSBhdCB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSB0ZXh0IGluIHRoZSBlZGl0b3Iu
CisgICAqLworICB2b2lkIHNsb3RJbnNlcnRTaWduYXR1cmVBdEN1cnNvcigpOworCisgIC8qKgog
ICAgKiBBdHRhY2ggc2VuZGVyJ3MgcHVibGljIGtleS4KICAgICovCiAgIHZvaWQgc2xvdEluc2Vy
dE15UHVibGljS2V5KCk7CkBAIC02NjMsNiArNjczLDEyIEBACiAgICAqLwogICB2b2lkIHNldFRy
YW5zcG9ydCggY29uc3QgUVN0cmluZyAmIHRyYW5zcG9ydCApOwogCisgIC8qKgorICAgKiBIZWxw
ZXIgdG8gaW5zZXJ0IHRoZSBzaWduYXR1cmUgb2YgdGhlIGN1cnJlbnQgaWRlbnR5IGF0IHRoZQor
ICAgKiBiZWdpbm5pbmcgb3IgZW5kIG9mIHRoZSBlZGl0b3IuCisgICAqLworICB2b2lkIGluc2Vy
dFNpZ25hdHVyZSggYm9vbCBhcHBlbmQgPSB0cnVlLCBpbnQgcG9zID0gMCApOworCiBwcml2YXRl
IHNsb3RzOgogICAgLyoqCiAgICAgKiBDb21wcmVzcyBhbiBhdHRhY2hlbW50IHdpdGggdGhlIGdp
dmVuIGluZGV4CkBAIC03NTcsNiArNzczLDkgQEAKICAgUU1hcDxLSU86OkpvYiosIEtVUkw+IG1B
dHRhY2hKb2JzOwogICBLVVJMOjpMaXN0IG1BdHRhY2hGaWxlc1BlbmRpbmc7CiAgIGludCBtQXR0
YWNoRmlsZXNTZW5kOworCisgIFFTdHJpbmcgbVRyYWNrU2lnOworICBRU3RyaW5nIG1OZXdTaWdU
ZXh0OwogCiBwcml2YXRlOgogICAvLyBoZWxwZXIgbWV0aG9kIGZvciBzbG90SW5zZXJ0KE15KVB1
YmxpY0tleSgpCi0tLSBsaWJrcGltaWRlbnRpdGllcy9pZGVudGl0eS5oICAgICAgICAyMDA2LzEx
LzAyIDEwOjAzOjIxICAgICA2MDExNDkKKysrIGxpYmtwaW1pZGVudGl0aWVzL2lkZW50aXR5Lmgg
ICAgICAgIDIwMDYvMTEvMDIgMTA6MDY6MjcgICAgIDYwMTE1MApAQCAtNTUsNyArNTUsNyBAQAog
CiAgIC8qKiBAcmV0dXJuIHRoZSBzaWduYXR1cmUgdGV4dCB3aXRoIGEgIi0tICIgc2VwYXJhdG9y
IGFkZGVkLCBpZgogICAgICAgbmVjZXNzYXJ5LiAqLwotICBRU3RyaW5nIHdpdGhTZXBhcmF0b3Io
IGJvb2wgKiBvaz0wICkgY29uc3Q7CisgIFFTdHJpbmcgd2l0aFNlcGFyYXRvciggYm9vbCBub2Rh
c2ggPSBmYWxzZSwgYm9vbCAqIG9rPTAgKSBjb25zdDsKIAogICAvKiogU2V0IHRoZSBzaWduYXR1
cmUgdGV4dCBhbmQgbWFyayB0aGlzIHNpZ25hdHVyZSBhcyBiZWluZyBvZgogICAgICAgImlubGlu
ZSB0ZXh0IiB0eXBlLiAqLwpAQCAtMjI3LDYgKzIyNyw3IEBACiAKICAgdm9pZCBzZXRTaWduYXR1
cmUoIGNvbnN0IFNpZ25hdHVyZSAmIHNpZyApIHsgbVNpZ25hdHVyZSA9IHNpZzsgfQogICBTaWdu
YXR1cmUgJiBzaWduYXR1cmUoKSAvKiBfbm90XyBjb25zdCEgKi8geyByZXR1cm4gbVNpZ25hdHVy
ZTsgfQorICBjb25zdCBTaWduYXR1cmUgJiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtU2ln
bmF0dXJlOyB9CiAKIHByb3RlY3RlZDoKICAgLyoqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0
dXJlIGlzIHJlYWQgZnJvbSB0aGUgb3V0cHV0IG9mIGEgY29tbWFuZCAqLwpAQCAtMjUzLDcgKzI1
NCw3IEBACiAgICAgY29ycmVjdC4gU28gdXNlIHRoaXMgbWV0aG9kIHRvIHJlY3RyZWl2ZSB0aGUg
Y29udGVudHMgb2YgdGhlCiAgICAgc2lnbmF0dXJlIGZpbGUuIElmIEBwIHByb21wdCBpcyBmYWxz
ZSwgbm8gZXJyb3JzIHdpbGwgYmUgZGlzcGxheWVkCiAgICAgKHVzZWZ1bCBmb3IgcmV0cmllcyku
ICovCi0gIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCggYm9vbCAqIG9rPTApIGNvbnN0OworICBRU3Ry
aW5nIHNpZ25hdHVyZVRleHQoIGJvb2wgbm9kYXNoID0gZmFsc2UsIGJvb2wgKiBvaz0wKSBjb25z
dDsKIAogICAvKiogVGhlIHRyYW5zcG9ydCB0aGF0IGlzIHNldCBmb3IgdGhpcyBpZGVudGl0eS4g
VXNlZCB0byBsaW5rIGEKICAgICAgIHRyYW5zcG9ydCB3aXRoIGFuIGlkZW50aXR5LiAqLwotLS0g
bGlia3BpbWlkZW50aXRpZXMvaWRlbnRpdHkuY3BwICAgICAgICAyMDA2LzExLzAyIDEwOjAzOjIx
ICAgICA2MDExNDkKKysrIGxpYmtwaW1pZGVudGl0aWVzL2lkZW50aXR5LmNwcCAgICAgICAgMjAw
Ni8xMS8wMiAxMDowNjoyNyAgICAgNjAxMTUwCkBAIC0xMzMsNyArMTMzLDcgQEAKICAgcmV0dXJu
IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoIGtGaWxlVG9TdHJpbmcoIG1VcmwsIGZhbHNlICkgKTsK
IH0KIAotUVN0cmluZyBTaWduYXR1cmU6OndpdGhTZXBhcmF0b3IoIGJvb2wgKiBvayApIGNvbnN0
CitRU3RyaW5nIFNpZ25hdHVyZTo6d2l0aFNlcGFyYXRvciggYm9vbCBub2Rhc2gsIGJvb2wgKiBv
ayApIGNvbnN0CiB7CiAgIGJvb2wgaW50ZXJuYWxPSyA9IGZhbHNlOwogICBRU3RyaW5nIHNpZ25h
dHVyZSA9IHJhd1RleHQoICZpbnRlcm5hbE9LICk7CkBAIC0xNDIsNiArMTQyLDcgQEAKICAgICBy
ZXR1cm4gUVN0cmluZzo6bnVsbDsKICAgfQogICBpZiAoIG9rICkgKm9rID0gdHJ1ZTsKKyAgaWYg
KCBub2Rhc2ggKSByZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgiXG4iKSArPSBzaWduYXR1cmU7
CiAgIGlmICggc2lnbmF0dXJlLmlzRW1wdHkoKSApIHJldHVybiBzaWduYXR1cmU7IC8vIGRvbid0
IGFkZCBhIHNlcGFyYXRvciBpbiB0aGlzIGNhc2UKICAgaWYgKCBzaWduYXR1cmUuc3RhcnRzV2l0
aCggUVN0cmluZzo6ZnJvbUxhdGluMSgiLS0gXG4iKSApICkKICAgICAvLyBhbHJlYWR5IGhhdmUg
c2lnbmF0dXJlIHNlcGFyYXRvciBhdCBzdGFydCBvZiBzaWc6CkBAIC02MDgsMTAgKzYwOSwxMCBA
QAogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVFTdHJpbmcgSWRlbnRpdHk6OnNpZ25hdHVy
ZVRleHQoIGJvb2wgKiBvayApIGNvbnN0CitRU3RyaW5nIElkZW50aXR5OjpzaWduYXR1cmVUZXh0
KCBib29sIG5vZGFzaCwgYm9vbCAqIG9rICkgY29uc3QKIHsKICAgYm9vbCBpbnRlcm5hbE9LID0g
ZmFsc2U7Ci0gIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCA9IG1TaWduYXR1cmUud2l0aFNlcGFyYXRv
ciggJmludGVybmFsT0sgKTsKKyAgUVN0cmluZyBzaWduYXR1cmVUZXh0ID0gbVNpZ25hdHVyZS53
aXRoU2VwYXJhdG9yKCBub2Rhc2gsICZpbnRlcm5hbE9LICk7CiAgIGlmICggaW50ZXJuYWxPSyAp
IHsKICAgICBpZiAoIG9rICkgKm9rPXRydWU7CiAgICAgcmV0dXJuIHNpZ25hdHVyZVRleHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21967</attachid>
            <date>2007-11-01 06:17:16 +0000</date>
            <delta_ts>2007-11-01 19:18:29 +0000</delta_ts>
            <desc>enterprise-tofu.patch</desc>
            <filename>enterprise-tofu.patch</filename>
            <type>text/plain</type>
            <size>12960</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkK
KysrIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAK
QEAgLTI1ODYsOSArMjU4NiwyMSBAQAogCiAgIG1Ub3BRdW90ZUNoZWNrID0KICAgICBuZXcgUUNo
ZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlSXRlbSgpLT5s
YWJlbCgpLCB0aGlzICk7CisgIG1Ub3BRdW90ZUNoZWNrLT5zZXRFbmFibGVkKCBmYWxzZSApOwog
ICB2bGF5LT5hZGRXaWRnZXQoIG1Ub3BRdW90ZUNoZWNrKTsKICAgY29ubmVjdCggbVRvcFF1b3Rl
Q2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAgICAgICAgICAgdGhpcywgU0xP
VCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOworICBjb25uZWN0KCBtQXV0b0FwcFNpZ25G
aWxlQ2hlY2ssIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwKKyAgICAgICAgICAgbVRvcFF1b3RlQ2hl
Y2ssIFNMT1Qoc2V0RW5hYmxlZChib29sKSkgKTsKKworICBtRGFzaERhc2hDaGVjayA9CisgICAg
bmV3IFFDaGVja0JveCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmVJ
dGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldEVuYWJsZWQoIGZh
bHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbURhc2hEYXNoQ2hlY2spOworICBjb25uZWN0KCBt
RGFzaERhc2hDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAgICB0
aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNvbm5lY3QoIG1BdXRv
QXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAgICAgICAgICBtRGFz
aERhc2hDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOwogCiAgIG1TbWFydFF1b3RlQ2hl
Y2sgPSBuZXcgUUNoZWNrQm94KAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5z
bWFydFF1b3RlSXRlbSgpLT5sYWJlbCgpLApAQCAtMjcwOCw2ICsyNzIxLDcgQEAKICAgbUF1dG9B
cHBTaWduRmlsZUNoZWNrLT5zZXRDaGVja2VkKAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6
c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpPT0iYXV0byIgKTsKICAgbVRvcFF1b3RlQ2hlY2st
PnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSAp
OworICBtRGFzaERhc2hDaGVjay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
ZGFzaERhc2hTaWduYXR1cmUoKSApOwogICBtU21hcnRRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBH
bG9iYWxTZXR0aW5nczo6c2VsZigpLT5zbWFydFF1b3RlKCkgKTsKICAgbUF1dG9SZXF1ZXN0TURO
Q2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnJlcXVlc3RNRE4oKSAp
OwogICBtV29yZFdyYXBDaGVjay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
d29yZFdyYXAoKSApOwpAQCAtMjczMCw2ICsyNzQ0LDggQEAKICAgfQogICBpZiAoIGNvbXBvc2Vy
Lmhhc0tleSggInByZXBlbmQtc2lnbmF0dXJlIiApICkKICAgICBtVG9wUXVvdGVDaGVjay0+c2V0
Q2hlY2tlZCggY29tcG9zZXIucmVhZEJvb2xFbnRyeSggInByZXBlbmQtc2lnbmF0dXJlIiApICk7
CisgIGlmICggY29tcG9zZXIuaGFzS2V5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSApCisgICAg
bURhc2hEYXNoQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJkYXNo
LWRhc2gtc2lnbmF0dXJlIiApICk7CiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAic21hcnQtcXVv
dGUiICkgKQogICAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRC
b29sRW50cnkoICJzbWFydC1xdW90ZSIgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInJl
cXVlc3QtbWRuIiApICkKQEAgLTI3NTIsNiArMjc2OCw3IEBACiAgIEdsb2JhbFNldHRpbmdzOjpz
ZWxmKCktPnNldEF1dG9UZXh0U2lnbmF0dXJlKAogICAgICAgICAgbUF1dG9BcHBTaWduRmlsZUNo
ZWNrLT5pc0NoZWNrZWQoKSA/ICJhdXRvIiA6ICJtYW51YWwiICk7CiAgIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnNldFByZXBlbmRTaWduYXR1cmUoIG1Ub3BRdW90ZUNoZWNrLT5pc0NoZWNrZWQo
KSk7CisgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldERhc2hEYXNoU2lnbmF0dXJlKCBtRGFz
aERhc2hDaGVjay0+aXNDaGVja2VkKCkpOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5zZXRT
bWFydFF1b3RlKCBtU21hcnRRdW90ZUNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0
aW5nczo6c2VsZigpLT5zZXRSZXF1ZXN0TUROKCBtQXV0b1JlcXVlc3RNRE5DaGVjay0+aXNDaGVj
a2VkKCkgKTsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0V29yZFdyYXAoIG1Xb3JkV3Jh
cENoZWNrLT5pc0NoZWNrZWQoKSApOwotLS0ga21haWwvY29uZmlndXJlZGlhbG9nX3AuaAkyMDA2
LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwvY29uZmlndXJlZGlhbG9nX3AuaAkyMDA2
LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtNjA4LDYgKzYwOCw3IEBACiBwcml2YXRlOgogICBR
Q2hlY2tCb3ggICAgICptQXV0b0FwcFNpZ25GaWxlQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1U
b3BRdW90ZUNoZWNrOworICBRQ2hlY2tCb3ggICAgICptRGFzaERhc2hDaGVjazsKICAgUUNoZWNr
Qm94ICAgICAqbVNtYXJ0UXVvdGVDaGVjazsKICAgUUNoZWNrQm94ICAgICAqbUF1dG9SZXF1ZXN0
TUROQ2hlY2s7CiAgIFFDaGVja0JveAkqbVNob3dSZWNlbnRBZGRyZXNzZXNJbkNvbXBvc2VyOwot
LS0ga21haWwva21haWwua2NmZwkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwv
a21haWwua2NmZwkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMzg5LDYgKzM4OSwxMCBA
QAogICAgICAgICA8bGFiZWw+SW5zZXJ0IHNpZ25hdHVyZSBhYm92ZSBxdW90ZWQgdGV4dDwvbGFi
ZWw+CiAgICAgICAgIDxkZWZhdWx0PmZhbHNlPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KKyAg
ICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5PSJkYXNo
LWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9yICgtLSkg
dG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVsdD4KKyAg
ICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iUmVwbHlQcmVmaXhlcyIgdHlwZT0iU3Ry
aW5nTGlzdCIga2V5PSJyZXBseS1wcmVmaXhlcyI+CiAgICAgICAgIDxkZWZhdWx0PlJlXFxzKjos
UmVcXFtcXGQrXFxdOixSZVxcZCs6PC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KLS0tIGttYWls
L2ttY29tcG9zZXdpbi5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkKKysrIGttYWlsL2tt
Y29tcG9zZXdpbi5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTQzMjQsOCArNDMy
NCw5IEBACiAgICAgIGtta2VybmVsLT5pZGVudGl0eU1hbmFnZXIoKS0+CiAgICAgIGlkZW50aXR5
Rm9yVW9pZE9yRGVmYXVsdCggbUlkZW50aXR5LT5jdXJyZW50SWRlbnRpdHkoKSApOwoKLSAgIG1P
bGRTaWdUZXh0ID0gR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpPyBp
ZGVudC5zaWduYXR1cmUoKS5yYXdUZXh0KCkgOiBpZGVudC5zaWduYXR1cmVUZXh0KCk7CisgICBt
T2xkU2lnVGV4dCA9IEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKT8K
KyAgICAgaWRlbnQuc2lnbmF0dXJlKCkucmF3VGV4dCgpIDogaWRlbnQuc2lnbmF0dXJlVGV4dCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7CiAKICAgIGlmKCAh
bU9sZFNpZ1RleHQuaXNFbXB0eSgpICkKICAgIHsKICAgICAgIG1FZGl0b3ItPnN5bmMoKTsKQEAg
LTQzMzYsMTEgKzQzMzYsMjkgQEAKICAgICB9CiAgICAgbUVkaXRvci0+dXBkYXRlKCk7CiAgICAg
bUVkaXRvci0+c2V0TW9kaWZpZWQobW9kKTsKLSAgICAvLyBmb3IgYXBwZW5kIGFuZCBwcmVwZW5k
LCBtb3ZlIHRoZSBjdXJzb3IgdG8gMCwwLCBmb3IgaW5zZXJ0QXQsCi0gICAgLy8ga2VlcCBpdCBp
biB0aGUgc2FtZSByb3csIGJ1dCBtb3ZlIHRvIGZpcnN0IGNvbHVtbgotICAgIG1FZGl0b3ItPnNl
dEN1cnNvclBvc2l0aW9uKCBwb3MsIDAgKTsKLSAgICBpZiAoICFhcHBlbmQgJiYgcG9zID09IDAg
KQotICAgICAgbUVkaXRvci0+c2V0Q29udGVudHNQb3MoIDAsIDAgKTsKKyAgICAvLyBpZiB0aGUg
Y3Vyc29yIGlzIGV4cGxpY2l0bHkgc2V0IGluIGEgdGVtcGxhdGUsIHNldCB0aGUgY3Vyc29yIHBv
c2l0aW9uCisgICAgLy8gdG8gdGhlIHRlbXBsYXRlIHBvc2l0aW9uLCBvZmZzZXR0aW5nIGZvciB0
aGUgcHJlcGVuZGVkIHNpZ25hdHVyZSBsZW5ndGgKKyAgICAvLyBpZiBhcHBsaWNhYmxlLCBvdGhl
cndpc2Ugc2V0IGl0IHRvIGFib3ZlIHRoZSBzaWcgZm9yIHtwcmUsYXB9cGVuZC9pbnNlcnQKKyAg
ICBpZiAoICBtUHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24gKSB7CisgICAgICBpZiAoIGFwcGVu
ZCAmJiBwb3MgPT0gMCApCisgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uRnJvbVN0
YXJ0KCAodW5zaWduZWQgaW50KSBtTXNnLT5nZXRDdXJzb3JQb3MoKSApOworICAgICAgZWxzZQor
ICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbkZyb21TdGFydCggKHVuc2lnbmVkIGlu
dCkgbU1zZy0+Z2V0Q3Vyc29yUG9zKCkgKyBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOworICAgICAg
Ly8gT25seSBrZWVwIHRoZSBjdXJzb3IgZnJvbSB0aGUgbU1zZyAqb25jZSogYmFzZWQgb24gdGhl
CisgICAgICAvLyBwcmVzZXJ2ZS1jdXJzb3ItcG9zaXRpb24gc2V0dGluZzsgdGhpcyBoYW5kbGVz
IHRoZSBjYXNlIHdoZXJlCisgICAgICAvLyB0aGUgbWVzc2FnZSBjb21lcyBmcm9tIGEgdGVtcGxh
dGUgd2l0aCBhIHNwZWNpZmljIGN1cnNvcgorICAgICAgLy8gcG9zaXRpb24gc2V0IGFuZCB0aGUg
c2lnbmF0dXJlIGlzIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICBtUHJlc2VydmVVc2Vy
Q3Vyc29yUG9zaXRpb24gPSBmYWxzZTsKKyAgICB9IGVsc2UgeyBpZiAoIGFwcGVuZCApIHsKKyAg
ICAgICAgICBRU3RyaW5nIHRtcE1zZ1RleHQgPSBtRWRpdG9yLT50ZXh0KCk7CisgICAgICAgICAg
bUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb25Gcm9tU3RhcnQoIHRtcE1zZ1RleHQubGVuZ3RoKCkg
LSBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyBpZiAo
IHBvcyAhPSAwICkKKyAgICAgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uKCBwb3Ms
IDAgKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3Np
dGlvbiggMCAsIDAgKTsKKyAgICAgICAgfQorICAgIH0KICAgfQogCiB9Ci0tLSBrbWFpbC9rbWNv
bXBvc2V3aW4uY3BwCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrbWFpbC9rbWNvbXBv
c2V3aW4uY3BwCTIwMDYvMTEvMDIgMTA6MDY6MjcJNjAxMTUwCkBAIC00MzczLDM0ICs0MzkxLDM3
IEBACiAKICAgLy8gUmVtb3ZlIHRoZSBzaWduYXR1cmUgZm9yIG5vdy4KICAgUVN0cmluZyBzaWc7
CisgIFFTdHJpbmcgcHJlc2lnOwogICBib29sIHJlc3RvcmUgPSBmYWxzZTsKICAgY29uc3QgS1BJ
TTo6SWRlbnRpdHkgJiBpZGVudCA9CiAgICAga21rZXJuZWwtPmlkZW50aXR5TWFuYWdlcigpLT5p
ZGVudGl0eUZvclVvaWQoIG1JZCApOwogICBpZiAoICFpZGVudC5pc051bGwoKSApIHsKLSAgICBz
aWcgPSBpZGVudC5zaWduYXR1cmVUZXh0KCk7Ci0gICAgaWYoICFzaWcuaXNFbXB0eSgpICkgewot
ICAgICAgaWYoIHMuZW5kc1dpdGgoIHNpZyApICkgewotICAgICAgICBzLnRydW5jYXRlKCBzLmxl
bmd0aCgpIC0gc2lnLmxlbmd0aCgpICk7CisgICAgc2lnID0gaWRlbnQuc2lnbmF0dXJlVGV4dCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7CisgICAgICBpZigg
IXNpZy5pc0VtcHR5KCkgJiYgcy5maW5kKHNpZywgMCwgdHJ1ZSkgIT0gLTEgKSB7CisgICAgICAg
IHByZXNpZyA9IHMubGVmdCggcy5maW5kKHNpZywgMCwgdHJ1ZSkgKTsKKyAgICAgICAgcy5yZW1v
dmUoIHMuZmluZChzaWcsIDAsIHRydWUpIC0gc2lnLmxlbmd0aCgpICk7CiAgICAgICAgIHJlc3Rv
cmUgPSB0cnVlOwogICAgICAgfQotICAgIH0KICAgfQogCiAgIC8vIFNxdWVlemUgdGFicyBhbmQg
c3BhY2VzCiAgIFFSZWdFeHAgc3F1ZWV6ZSggIltcdCBdKyIgKTsKICAgcy5yZXBsYWNlKCBzcXVl
ZXplLCBRQ2hhciggJyAnICkgKTsKKyAgaWYoICFwcmVzaWcuaXNFbXB0eSgpICkgcHJlc2lnLnJl
cGxhY2UoIHNxdWVlemUsIFFDaGFyKCAnICcgKSApOwogCiAgIC8vIFJlbW92ZSB0cmFpbGluZyB3
aGl0ZXNwYWNlCiAgIFFSZWdFeHAgdHJhaWxpbmcoICJcXHMrJCIgKTsKICAgcy5yZXBsYWNlKCB0
cmFpbGluZywgUUNoYXIoICdcbicgKSApOworICBpZiggIXByZXNpZy5pc0VtcHR5KCkgKSBwcmVz
aWcucmVwbGFjZSggdHJhaWxpbmcsIFFDaGFyKCAnXG4nICkgKTsKIAogICAvLyBTaW5nbGUgc3Bh
Y2UgbGluZXMKICAgUVJlZ0V4cCBzaW5nbGVTcGFjZSggIltcbl17Mix9IiApOwogICBzLnJlcGxh
Y2UoIHNpbmdsZVNwYWNlLCBRQ2hhciggJ1xuJyApICk7CisgIGlmKCAhcHJlc2lnLmlzRW1wdHko
KSApIHByZXNpZy5yZXBsYWNlKCBzaW5nbGVTcGFjZSwgUUNoYXIoICdcbicgKSApOwogCiAgIC8v
IFJlc3RvcmUgdGhlIHNpZ25hdHVyZQogICBpZiAoIHJlc3RvcmUgKQotICAgIHMuYXBwZW5kKCBz
aWcgKTsKKyAgICBzLmluc2VydCggcHJlc2lnLmxlbmd0aCgpLCBzaWcgKTsKIAogICAvLyBQdXQg
dGhlIG5ldyB0ZXh0IGluIHBsYWNlLgogICAvLyBUaGUgbGluZXMgYmVsb3cgZG8gbm90IGNsZWFy
IHRoZSB1bmRvIGhpc3RvcnksIGJ1dCB1bmZvcnR1YXRlbHkgY2F1c2UKQEAgLTQ2ODgsNyArNDcw
OCw3IEBACiAgICAgICBpZGVudGl0eU1hbmFnZXIoKS0+CiAgICAgICBpZGVudGl0eUZvclVvaWRP
ckRlZmF1bHQoIG1Nc2ctPmhlYWRlckZpZWxkKCAiWC1LTWFpbC1JZGVudGl0eSIgKS4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBXaGl0ZVNwYWNlKCkudG9VSW50KCkgKTsK
LSAgICBtT2xkU2lnVGV4dCA9IGlkLnNpZ25hdHVyZVRleHQoKTsKKyAgICBtT2xkU2lnVGV4dCA9
IGlkLnNpZ25hdHVyZVRleHQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1
cmUoKSApOwogICB9CiAKICAgLy8gdHJ5IHRvIHRydW5jYXRlIHRoZSBvbGQgc2lnCkBAIC00Njk5
LDE1ICs0NzE5LDU0IEBACiAgIHdoaWxlICggIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSAmJiBtT2xk
U2lnVGV4dFttT2xkU2lnVGV4dC5sZW5ndGgoKS0xXS5pc1NwYWNlKCkgKQogICAgIG1PbGRTaWdU
ZXh0LnRydW5jYXRlKCBtT2xkU2lnVGV4dC5sZW5ndGgoKSAtIDEgKTsKIAotICBpZiggZWR0VGV4
dC5lbmRzV2l0aCggbU9sZFNpZ1RleHQgKSApCi0gICAgZWR0VGV4dC50cnVuY2F0ZSggZWR0VGV4
dC5sZW5ndGgoKSAtIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CisgICAgbU5ld1NpZ1RleHQgPSBp
ZGVudC5zaWduYXR1cmVUZXh0KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0
dXJlKCkgKTsKKyAgLy8gaWYgdGhlIHVzZXIgaGFzIGF1dG8gc2lnbmF0dXJlcyBlbmFibGVkIGFu
ZCBhIG5ldyBzaWcsIHJlcGxhY2UgdGhlCisgIC8vIGN1cnJlbnQgc2lnIG9uIGlkZW50aXR5IGNo
YW5nZSBpZiB0aGVyZSdzIGEgc2lnIHNldCwgb3RoZXJ3aXNlIHByZXBlbmQKKyAgLy8gdGhlIG5l
dyBzaWcgaWYgdGhleSB3YW50IHByZXBlbmRlZCwgb3IgYXBwZW5kIG90aGVyd2lzZSBhbmQgZmlu
YWxseSAKKyAgLy8gZGVsZXRlIHRoZSBzaWcgaWYgdGhleSBkb24ndCBoYXZlIGF1dG8gc2lnbmF0
dXJlcyBlbmFibGVkIG9yIGlmCisgIC8vIHRoZSBuZXcgc2lnbmF0dXJlIGlzIGVtcHR5IGFuZCBv
bGQgc2lnIGlzbid0IGVtcHR5CisgIGlmICggKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5hdXRv
VGV4dFNpZ25hdHVyZSgpID09ICJhdXRvIiApICYmCisgICAgICAgIW1OZXdTaWdUZXh0LmlzRW1w
dHkoKSApIHsKKyAgICBpZiAoICggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSkg
IT0gLTEgKSAmJiAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkgeworICAgICAgZWR0VGV4dCA9IGVk
dFRleHQucmVwbGFjZSggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSksCisgICAg
ICAgIG1PbGRTaWdUZXh0Lmxlbmd0aCgpLCBtTmV3U2lnVGV4dCApOworICAgIH0gZWxzZSB7IGlm
ICggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICkgeworICAgICAg
ICAgIC8vIGlmIHdlIGhhdmUgdHJhY2tpbmcgaW5mbyBhbmQgSSBjYW4gZmluZCBpdCBpbiB0aGUg
dGV4dCwgcGxhY2UgdGhlCisgICAgICAgICAgLy8gc2lnIHRoZXJlLCBvdGhlcndpc2UgcHJlcGVu
ZCBpdCAod2l0aCBcblxuIGlmIHRoZXkndmUgYWxyZWFkeSB0eXBlZCkKKyAgICAgICAgICBpZiAo
ICFtVHJhY2tTaWcuaXNOdWxsKCkgJiYgKCBlZHRUZXh0LmZpbmQoIG1UcmFja1NpZywgMCwgdHJ1
ZSkgIT0gLTEgKSApIHsKKyAgICAgICAgICAgIGVkdFRleHQuaW5zZXJ0KCBlZHRUZXh0LmZpbmQo
IG1UcmFja1NpZywgMCwgdHJ1ZSkgLCBtTmV3U2lnVGV4dCApOworICAgICAgICAgICAgbVRyYWNr
U2lnID0gUVN0cmluZzo6bnVsbDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7IGlmICgg
bVRyYWNrU2lnID09ICIhISFBUFBFTkQhISEiICkKKyAgICAgICAgICAgICAgZWR0VGV4dC5hcHBl
bmQoIG1OZXdTaWdUZXh0ICk7CisgICAgICAgICAgICBlbHNlIHsgaWYgKCAhZWR0VGV4dFsxXS5p
c1NwYWNlKCkgKQorICAgICAgICAgICAgICAgIGVkdFRleHQucHJlcGVuZCggbU5ld1NpZ1RleHQg
KyBRU3RyaW5nOjpmcm9tTGF0aW4xKCAiXG5cbiIgKSApOworICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZWR0VGV4dC5wcmVwZW5kKCBtTmV3U2lnVGV4dCApOworICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGVkdFRleHQuYXBwZW5k
KCBtTmV3U2lnVGV4dCApOworICAgICAgfQorICAgIH0KKyAgfSBlbHNlIGlmICggIW1PbGRTaWdU
ZXh0LmlzRW1wdHkoKSApIHsKKyAgICAvLyBpZiBzd2l0Y2hpbmcgdG8gYW4gaWRlbnQgd2l0aCBu
byBzaWcsIHRyYWNrIGl0cyBwb3NpdGlvbiBmb3IgbGF0ZXIgaW4gY2FzZQorICAgIC8vIHRoZSB1
c2VyIHN3aXRjaGVzIHRvIG9uZSB3aXRoIGEgc2lnIGZvciBpbnRlbGxpZ2VudCBwbGFjZW1lbnQK
KyAgICAvLyBjYXZlYXQ6IHRoaXMgaXMgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUg
dXNlciB3b24ndCBjaGFuZ2UKKyAgICAvLyB0aGUgMjAgY2hhcmFjdGVycyBhZnRlciB0aGUgc2ln
bmF0dXJlIChzZWVtcyByZWFzb25hYmxlIGluIHJlcGx5L2Z3ZCkKKyAgICBpZiAoIG1OZXdTaWdU
ZXh0LmlzRW1wdHkoKSApIHsKKyAgICAgIC8vIG9vcHMsIHRoZXJlJ3MgYWN0dWFsbHkgbm90aGlu
ZyBhZnRlciB0aGUgc2lnbmF0dXJlLCBqdXN0IGFwcGVuZCBsYXRlcgorICAgICAgaWYgKCBlZHRU
ZXh0LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSArIG1PbGRTaWdUZXh0Lmxlbmd0aCgpID09
IGVkdFRleHQubGVuZ3RoKCkgKQorICAgICAgICBtVHJhY2tTaWcgPSAiISEhQVBQRU5EISEhIjsK
KyAgICAgIGVsc2UKKyAgICAgICAgbVRyYWNrU2lnID0gZWR0VGV4dC5taWQoIGVkdFRleHQuZmlu
ZCggbU9sZFNpZ1RleHQsIDAsIHRydWUpICsKKyAgICAgICAgICBtT2xkU2lnVGV4dC5sZW5ndGgo
KSwgMjAgKTsKKyAgICB9CisgICAgZWR0VGV4dCA9IGVkdFRleHQucmVtb3ZlKCBlZHRUZXh0LmZp
bmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSwKKyAgICAgIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7
CisgIH0KKyAgbU9sZFNpZ1RleHQgPSBtTmV3U2lnVGV4dDsKIAotICAvLyBub3cgYXBwZW5kIHRo
ZSBuZXcgc2lnCi0gIG1PbGRTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJlVGV4dCgpOwotICBpZigg
KCAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkgJiYKLSAgICAgICggR2xvYmFsU2V0dGluZ3M6OnNl
bGYoKS0+YXV0b1RleHRTaWduYXR1cmUoKSA9PSAiYXV0byIgKSApIHsKLSAgICBlZHRUZXh0LmFw
cGVuZCggbU9sZFNpZ1RleHQgKTsKLSAgfQogICBtRWRpdG9yLT5zZXRUZXh0KCBlZHRUZXh0ICk7
CiAKICAgLy8gZGlzYWJsZSBjZXJ0YWluIGFjdGlvbnMgaWYgdGhlcmUgaXMgbm8gUEdQIHVzZXIg
aWRlbnRpdHkgc2V0Ci0tLSBrbWFpbC9rbWNvbXBvc2V3aW4uaAkyMDA2LzExLzAyIDEwOjAzOjIx
CTYwMTE0OQorKysga21haWwva21jb21wb3Nld2luLmgJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDEx
NTAKQEAgLTc5MSw2ICs3OTEsOSBAQAogICBRTWFwPEtJTzo6Sm9iKiwgS1VSTD4gbUF0dGFjaEpv
YnM7CiAgIEtVUkw6Okxpc3QgbUF0dGFjaEZpbGVzUGVuZGluZzsKICAgaW50IG1BdHRhY2hGaWxl
c1NlbmQ7CisKKyAgUVN0cmluZyBtVHJhY2tTaWc7CisgIFFTdHJpbmcgbU5ld1NpZ1RleHQ7CiAK
IHByaXZhdGU6CiAgIC8vIGhlbHBlciBtZXRob2QgZm9yIHNsb3RJbnNlcnQoTXkpUHVibGljS2V5
KCkKLS0tIGxpYmtwaW1pZGVudGl0aWVzL2lkZW50aXR5LmggICAgICAgIDIwMDYvMTEvMDIgMTA6
MDM6MjEgICAgIDYwMTE0OQorKysgbGlia3BpbWlkZW50aXRpZXMvaWRlbnRpdHkuaCAgICAgICAg
MjAwNi8xMS8wMiAxMDowNjoyNyAgICAgNjAxMTUwCkBAIC01NSw3ICs1NSw3IEBACiAKICAgLyoq
IEByZXR1cm4gdGhlIHNpZ25hdHVyZSB0ZXh0IHdpdGggYSAiLS0gIiBzZXBhcmF0b3IgYWRkZWQs
IGlmCiAgICAgICBuZWNlc3NhcnkuICovCi0gIFFTdHJpbmcgd2l0aFNlcGFyYXRvciggYm9vbCAq
IG9rPTAgKSBjb25zdDsKKyAgUVN0cmluZyB3aXRoU2VwYXJhdG9yKCBib29sIG5vZGFzaCA9IGZh
bHNlLCBib29sICogb2s9MCApIGNvbnN0OwogCiAgIC8qKiBTZXQgdGhlIHNpZ25hdHVyZSB0ZXh0
IGFuZCBtYXJrIHRoaXMgc2lnbmF0dXJlIGFzIGJlaW5nIG9mCiAgICAgICAiaW5saW5lIHRleHQi
IHR5cGUuICovCkBAIC0yNTQsNyArMjU0LDcgQEAKICAgICBjb3JyZWN0LiBTbyB1c2UgdGhpcyBt
ZXRob2QgdG8gcmVjdHJlaXZlIHRoZSBjb250ZW50cyBvZiB0aGUKICAgICBzaWduYXR1cmUgZmls
ZS4gSWYgQHAgcHJvbXB0IGlzIGZhbHNlLCBubyBlcnJvcnMgd2lsbCBiZSBkaXNwbGF5ZWQKICAg
ICAodXNlZnVsIGZvciByZXRyaWVzKS4gKi8KLSAgUVN0cmluZyBzaWduYXR1cmVUZXh0KCBib29s
ICogb2s9MCkgY29uc3Q7CisgIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCggYm9vbCBub2Rhc2ggPSBm
YWxzZSwgYm9vbCAqIG9rPTApIGNvbnN0OwogCiAgIC8qKiBUaGUgdHJhbnNwb3J0IHRoYXQgaXMg
c2V0IGZvciB0aGlzIGlkZW50aXR5LiBVc2VkIHRvIGxpbmsgYQogICAgICAgdHJhbnNwb3J0IHdp
dGggYW4gaWRlbnRpdHkuICovCi0tLSBsaWJrcGltaWRlbnRpdGllcy9pZGVudGl0eS5jcHAgICAg
ICAgIDIwMDYvMTEvMDIgMTA6MDM6MjEgICAgIDYwMTE0OQorKysgbGlia3BpbWlkZW50aXRpZXMv
aWRlbnRpdHkuY3BwICAgICAgICAyMDA2LzExLzAyIDEwOjA2OjI3ICAgICA2MDExNTAKQEAgLTEz
Myw3ICsxMzMsNyBAQAogICByZXR1cm4gUVN0cmluZzo6ZnJvbUxvY2FsOEJpdCgga0ZpbGVUb1N0
cmluZyggbVVybCwgZmFsc2UgKSApOwogfQogCi1RU3RyaW5nIFNpZ25hdHVyZTo6d2l0aFNlcGFy
YXRvciggYm9vbCAqIG9rICkgY29uc3QKK1FTdHJpbmcgU2lnbmF0dXJlOjp3aXRoU2VwYXJhdG9y
KCBib29sIG5vZGFzaCwgYm9vbCAqIG9rICkgY29uc3QKIHsKICAgYm9vbCBpbnRlcm5hbE9LID0g
ZmFsc2U7CiAgIFFTdHJpbmcgc2lnbmF0dXJlID0gcmF3VGV4dCggJmludGVybmFsT0sgKTsKQEAg
LTE0Miw2ICsxNDIsNyBAQAogICAgIHJldHVybiBRU3RyaW5nOjpudWxsOwogICB9CiAgIGlmICgg
b2sgKSAqb2sgPSB0cnVlOworICBpZiAoIG5vZGFzaCApIHJldHVybiBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJcbiIpICs9IHNpZ25hdHVyZTsKICAgaWYgKCBzaWduYXR1cmUuaXNFbXB0eSgpICkgcmV0
dXJuIHNpZ25hdHVyZTsgLy8gZG9uJ3QgYWRkIGEgc2VwYXJhdG9yIGluIHRoaXMgY2FzZQogICBp
ZiAoIHNpZ25hdHVyZS5zdGFydHNXaXRoKCBRU3RyaW5nOjpmcm9tTGF0aW4xKCItLSBcbiIpICkg
KQogICAgIC8vIGFscmVhZHkgaGF2ZSBzaWduYXR1cmUgc2VwYXJhdG9yIGF0IHN0YXJ0IG9mIHNp
ZzoKQEAgLTYwOCwxMCArNjA5LDEwIEBACiAKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUVN0
cmluZyBJZGVudGl0eTo6c2lnbmF0dXJlVGV4dCggYm9vbCAqIG9rICkgY29uc3QKK1FTdHJpbmcg
SWRlbnRpdHk6OnNpZ25hdHVyZVRleHQoIGJvb2wgbm9kYXNoLCBib29sICogb2sgKSBjb25zdAog
ewogICBib29sIGludGVybmFsT0sgPSBmYWxzZTsKLSAgUVN0cmluZyBzaWduYXR1cmVUZXh0ID0g
bVNpZ25hdHVyZS53aXRoU2VwYXJhdG9yKCAmaW50ZXJuYWxPSyApOworICBRU3RyaW5nIHNpZ25h
dHVyZVRleHQgPSBtU2lnbmF0dXJlLndpdGhTZXBhcmF0b3IoIG5vZGFzaCwgJmludGVybmFsT0sg
KTsKICAgaWYgKCBpbnRlcm5hbE9LICkgewogICAgIGlmICggb2sgKSAqb2s9dHJ1ZTsKICAgICBy
ZXR1cm4gc2lnbmF0dXJlVGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21974</attachid>
            <date>2007-11-01 19:17:53 +0000</date>
            <delta_ts>2007-11-01 19:17:53 +0000</delta_ts>
            <desc>kmail-tofu.patch</desc>
            <filename>kmail-tofu.patch</filename>
            <type>text/plain</type>
            <size>17905</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkK
KysrIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAK
QEAgLTI1NTcsNiArMjU1NywyNCBAQAogICBjb25uZWN0KCBtQXV0b0FwcFNpZ25GaWxlQ2hlY2ss
IFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAgICAgICAgICAgdGhpcywgU0xPVCggc2xv
dEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOwogCisgIG1Ub3BRdW90ZUNoZWNrID0KKyAgICBuZXcg
UUNoZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlSXRlbSgp
LT5sYWJlbCgpLCB0aGlzICk7CisgIG1Ub3BRdW90ZUNoZWNrLT5zZXRFbmFibGVkKCBmYWxzZSAp
OworICB2bGF5LT5hZGRXaWRnZXQoIG1Ub3BRdW90ZUNoZWNrKTsKKyAgY29ubmVjdCggbVRvcFF1
b3RlQ2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKKyAgICAgICAgICAgdGhpcywg
U0xPVCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOworICBjb25uZWN0KCBtQXV0b0FwcFNp
Z25GaWxlQ2hlY2ssIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwKKyAgICAgICAgICAgbVRvcFF1b3Rl
Q2hlY2ssIFNMT1Qoc2V0RW5hYmxlZChib29sKSkgKTsKKworICBtRGFzaERhc2hDaGVjayA9Cisg
ICAgbmV3IFFDaGVja0JveCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1
cmVJdGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldEVuYWJsZWQo
IGZhbHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbURhc2hEYXNoQ2hlY2spOworICBjb25uZWN0
KCBtRGFzaERhc2hDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAg
ICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNvbm5lY3QoIG1B
dXRvQXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAgICAgICAgICBt
RGFzaERhc2hDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOworCiAgIG1TbWFydFF1b3Rl
Q2hlY2sgPSBuZXcgUUNoZWNrQm94KAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5zbWFydFF1b3RlSXRlbSgpLT5sYWJlbCgpLAogICAgICAgICAgICB0aGlzLCAia2NmZ19TbWFy
dFF1b3RlIiApOwpAQCAtMjY3NCw2ICsyNjg5LDggQEAKIAogICBtQXV0b0FwcFNpZ25GaWxlQ2hl
Y2stPnNldENoZWNrZWQoCiAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9U
ZXh0U2lnbmF0dXJlKCk9PSJhdXRvIiApOworICBtVG9wUXVvdGVDaGVjay0+c2V0Q2hlY2tlZCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7CisgIG1EYXNoRGFz
aENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNpZ25h
dHVyZSgpICk7CiAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnNtYXJ0UXVvdGUoKSApOwogICBtQXV0b1JlcXVlc3RNRE5DaGVjay0+c2V0Q2hl
Y2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cmVxdWVzdE1ETigpICk7CiAgIG1Xb3JkV3Jh
cENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT53b3JkV3JhcCgpICk7
CkBAIC0yNjk0LDYgKzI3MTEsMTIgQEAKICAgICBib29sIHN0YXRlID0gY29tcG9zZXIucmVhZEJv
b2xFbnRyeSgic2lnbmF0dXJlIik7CiAgICAgbUF1dG9BcHBTaWduRmlsZUNoZWNrLT5zZXRDaGVj
a2VkKCBzdGF0ZSApOwogICB9CisgIGlmICggY29tcG9zZXIuaGFzS2V5KCAicHJlcGVuZC1zaWdu
YXR1cmUiICkgKQorICAgIG1Ub3BRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBjb21wb3Nlci5yZWFk
Qm9vbEVudHJ5KCAicHJlcGVuZC1zaWduYXR1cmUiICkgKTsKKworICBpZiAoIGNvbXBvc2VyLmhh
c0tleSggImRhc2gtZGFzaC1zaWduYXR1cmUiICkgKQorICAgIG1EYXNoRGFzaENoZWNrLT5zZXRD
aGVja2VkKCBjb21wb3Nlci5yZWFkQm9vbEVudHJ5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSAp
OworCiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAic21hcnQtcXVvdGUiICkgKQogICAgIG1TbWFy
dFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJzbWFydC1x
dW90ZSIgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInJlcXVlc3QtbWRuIiApICkKQEAg
LTI3MTUsNiArMjczOCw4IEBACiB2b2lkIENvbXBvc2VyUGFnZTo6R2VuZXJhbFRhYjo6c2F2ZSgp
IHsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0QXV0b1RleHRTaWduYXR1cmUoCiAgICAg
ICAgICBtQXV0b0FwcFNpZ25GaWxlQ2hlY2stPmlzQ2hlY2tlZCgpID8gImF1dG8iIDogIm1hbnVh
bCIgKTsKKyAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0UHJlcGVuZFNpZ25hdHVyZSggbVRv
cFF1b3RlQ2hlY2stPmlzQ2hlY2tlZCgpKTsKKyAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0
RGFzaERhc2hTaWduYXR1cmUoIG1EYXNoRGFzaENoZWNrLT5pc0NoZWNrZWQoKSk7CiAgIEdsb2Jh
bFNldHRpbmdzOjpzZWxmKCktPnNldFNtYXJ0UXVvdGUoIG1TbWFydFF1b3RlQ2hlY2stPmlzQ2hl
Y2tlZCgpICk7CiAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldFJlcXVlc3RNRE4oIG1BdXRv
UmVxdWVzdE1ETkNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5zZXRXb3JkV3JhcCggbVdvcmRXcmFwQ2hlY2stPmlzQ2hlY2tlZCgpICk7Ci0tLSBrbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrbWFpbC9j
b25maWd1cmVkaWFsb2dfcC5oCTIwMDYvMTEvMDIgMTA6MDY6MjcJNjAxMTUwCkBAIC02MDQsNiAr
NjA0LDggQEAKIAogcHJpdmF0ZToKICAgUUNoZWNrQm94ICAgICAqbUF1dG9BcHBTaWduRmlsZUNo
ZWNrOworICBRQ2hlY2tCb3ggICAgICptVG9wUXVvdGVDaGVjazsKKyAgUUNoZWNrQm94ICAgICAq
bURhc2hEYXNoQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1TbWFydFF1b3RlQ2hlY2s7CiAgIFFD
aGVja0JveCAgICAgKm1BdXRvUmVxdWVzdE1ETkNoZWNrOwogICBRQ2hlY2tCb3gJKm1TaG93UmVj
ZW50QWRkcmVzc2VzSW5Db21wb3NlcjsKLS0tIGttYWlsL2ttYWlsLmtjZmcJMjAwNi8xMS8wMiAx
MDowMzoyMQk2MDExNDkKKysrIGttYWlsL2ttYWlsLmtjZmcJMjAwNi8xMS8wMiAxMDowNjoyNwk2
MDExNTAKQEAgLTI1Myw3ICsyNTMsNyBAQAogICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVs
dD4KICAgICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iQXV0b1RleHRTaWduYXR1cmUi
IHR5cGU9IlN0cmluZyIga2V5PSJzaWduYXR1cmUiPgotICAgICAgICA8bGFiZWw+QSZhbXA7dXRv
bWF0aWNhbGx5IGFwcGVuZCBzaWduYXR1cmU8L2xhYmVsPgorICAgICAgICA8bGFiZWw+QSZhbXA7
dXRvbWF0aWNhbGx5IGluc2VydCBzaWduYXR1cmU8L2xhYmVsPgogICAgICAgICA8ZGVmYXVsdD5h
dXRvPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KICAgICAgIDxlbnRyeSBuYW1lPSJTdGlja3lJ
ZGVudGl0eSIgdHlwZT0iQm9vbCIga2V5PSJzdGlja3ktaWRlbnRpdHkiPgpAQCAtMzUwLDYgKzM1
MCwxNyBAQAogICAgICAgICA8d2hhdHN0aGlzPkEgYmFja3VwIGNvcHkgb2YgdGhlIHRleHQgaW4g
dGhlIGNvbXBvc2VyIHdpbmRvdyBjYW4gYmUgY3JlYXRlZCByZWd1bGFybHkuIFRoZSBpbnRlcnZh
bCB1c2VkIHRvIGNyZWF0ZSB0aGUgYmFja3VwcyBpcyBzZXQgaGVyZS4gWW91IGNhbiBkaXNhYmxl
IGF1dG9zYXZpbmcgYnkgc2V0dGluZyBpdCB0byB0aGUgdmFsdWUgMC48L3doYXRzdGhpcz4KICAg
ICAgICAgPGRlZmF1bHQ+MjwvZGVmYXVsdD4KICAgICAgIDwvZW50cnk+CisKKyAgICAgIDxlbnRy
eSBuYW1lPSJQcmVwZW5kU2lnbmF0dXJlIiB0eXBlPSJCb29sIiBrZXk9InByZXBlbmQtc2lnbmF0
dXJlIj4KKyAgICAgICAgPGxhYmVsPkluc2VydCBzaWduYXR1cmUgYWJvdmUgcXVvdGVkIHRleHQ8
L2xhYmVsPgorICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KKyAgICAgIDwvZW50cnk+
CisKKyAgICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5
PSJkYXNoLWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9y
ICgtLSkgdG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVs
dD4KKyAgICAgIDwvZW50cnk+CisKICAgICAgIDxlbnRyeSBuYW1lPSJSZXBseVByZWZpeGVzIiB0
eXBlPSJTdHJpbmdMaXN0IiBrZXk9InJlcGx5LXByZWZpeGVzIj4KICAgICAgICAgPGRlZmF1bHQ+
UmVcXHMqOixSZVxcW1xcZCtcXF06LFJlXFxkKzo8L2RlZmF1bHQ+CiAgICAgICA8L2VudHJ5Pgot
LS0ga21haWwva21jb21wb3NlcnVpLnJjCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBr
bWFpbC9rbWNvbXBvc2VydWkucmMJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTYzLDYg
KzYzLDkgQEAKICAgPE1lbnUgbmFtZT0iYXR0YWNoIiA+CiAgICA8dGV4dD4mYW1wO0F0dGFjaDwv
dGV4dD4KICAgIDxBY3Rpb24gbmFtZT0iYXBwZW5kX3NpZ25hdHVyZSIgLz4KKyAgIDxBY3Rpb24g
bmFtZT0icHJlcGVuZF9zaWduYXR1cmUiIC8+CisgICA8QWN0aW9uIG5hbWU9Imluc2VydF9zaWdu
YXR1cmVfYXRfY3Vyc29yX3Bvc2l0aW9uIiAvPgorICAgPFNlcGFyYXRvci8+CiAgICA8QWN0aW9u
IG5hbWU9ImF0dGFjaF9wdWJsaWNfa2V5IiAvPgogICAgPEFjdGlvbiBuYW1lPSJhdHRhY2hfbXlf
cHVibGljX2tleSIgLz4KICAgIDxTZXBhcmF0b3IvPgotLS0ga21haWwva21jb21wb3Nld2luLmNw
cAkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwva21jb21wb3Nld2luLmNwcAky
MDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMTMzMSw2ICsxMzMxLDE0IEBACiAgICh2b2lk
KSBuZXcgS0FjdGlvbiAoaTE4bigiQXBwZW5kIFMmaWduYXR1cmUiKSwgMCwgdGhpcywKICAgICAg
ICAgICAgICAgICAgICAgICBTTE9UKHNsb3RBcHBlbmRTaWduYXR1cmUoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAiYXBwZW5kX3NpZ25hdHVyZSIpOworICAo
dm9pZCkgbmV3IEtBY3Rpb24gKGkxOG4oIlByZXBlbmQgUyZpZ25hdHVyZSIpLCAwLCB0aGlzLAor
ICAgICAgICAgICAgICAgICAgICAgIFNMT1Qoc2xvdFByZXBlbmRTaWduYXR1cmUoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uQ29sbGVjdGlvbigpLCAicHJlcGVuZF9zaWduYXR1cmUi
KTsKKyAgKHZvaWQpIG5ldyBLQWN0aW9uIChpMThuKCJJbnNlcnQgU2lnbmF0dXJlIEF0IEMmdXJz
b3IgUG9zaXRpb24iKSwgImVkaXQiLCAwLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgIFNM
T1Qoc2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkpLAorICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbkNvbGxlY3Rpb24oKSwgImluc2VydF9zaWduYXR1cmVfYXRfY3Vyc29yX3Bvc2l0aW9u
Iik7CisKKwogICBtQXR0YWNoUEsgID0gbmV3IEtBY3Rpb24gKGkxOG4oIkF0dGFjaCAmUHVibGlj
IEtleS4uLiIpLCAwLCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChzbG90
SW5zZXJ0UHVibGljS2V5KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQ29s
bGVjdGlvbigpLCAiYXR0YWNoX3B1YmxpY19rZXkiKTsKQEAgLTIwMjIsNyArMjAzMCwxMyBAQAog
ICAgIC8vIE5vdCB1c2VyIGZyaWVuZHkgaWYgdGhpcyBtb2RhbCBmaWxlc2VsZXRvciBvcGVucyBi
ZWZvcmUgdGhlCiAgICAgLy8gY29tcG9zZXIuCiAgICAgLy8KLSAgICBRVGltZXI6OnNpbmdsZVNo
b3QoIDIwMCwgdGhpcywgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgLy9RVGlt
ZXI6OnNpbmdsZVNob3QoIDIwMCwgdGhpcywgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7
CisgICAgICBpZiAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSAp
IHsKKyAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KCAwLCB0aGlzLCBTTE9UKHNsb3RQcmVwZW5k
U2lnbmF0dXJlKCkpICk7CisgICAgICB9IGVsc2UgeworICAgICAgICBRVGltZXI6OnNpbmdsZVNo
b3QoIDAsIHRoaXMsIFNMT1Qoc2xvdEFwcGVuZFNpZ25hdHVyZSgpKSApOworICAgICAgfQorCiAg
IH0KICAgc2V0TW9kaWZpZWQoIGlzTW9kaWZpZWQgKTsKIApAQCAtNDE0Niw2ICs0MTYwLDI0IEBA
CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHZvaWQgS01Db21wb3NlV2luOjpzbG90QXBwZW5kU2ln
bmF0dXJlKCkKIHsKKyAgICBpbnNlcnRTaWduYXR1cmUoKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCit2b2lkIEtNQ29tcG9zZVdpbjo6c2xvdFByZXBlbmRTaWduYXR1cmUoKQoreworICAg
IGluc2VydFNpZ25hdHVyZSggZmFsc2UgKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2
b2lkIEtNQ29tcG9zZVdpbjo6c2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkKK3sKKyAgICBp
bnNlcnRTaWduYXR1cmUoIGZhbHNlLCBtRWRpdG9yLT5jdXJyZW50TGluZSgpICk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBvc2VXaW46Omluc2VydFNpZ25hdHVyZSgg
Ym9vbCBhcHBlbmQsIGludCBwb3MgKQorewogICBib29sIG1vZCA9IG1FZGl0b3ItPmlzTW9kaWZp
ZWQoKTsKIAogICBjb25zdCBLUElNOjpJZGVudGl0eSAmIGlkZW50ID0KQEAgLTQxNTAsMTAgKzQx
ODAsMTUgQEAKIAogICBjb25zdCBLUElNOjpJZGVudGl0eSAmIGlkZW50ID0KICAgICBrbWtlcm5l
bC0+aWRlbnRpdHlNYW5hZ2VyKCktPmlkZW50aXR5Rm9yVW9pZE9yRGVmYXVsdCggbUlkZW50aXR5
LT5jdXJyZW50SWRlbnRpdHkoKSApOwotICBtT2xkU2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRl
eHQoKTsKKyAgbU9sZFNpZ1RleHQgPSBpZGVudC5zaWduYXR1cmVUZXh0KCBHbG9iYWxTZXR0aW5n
czo6c2VsZigpLT5kYXNoRGFzaFNpZ25hdHVyZSgpICk7CiAgIGlmKCAhbU9sZFNpZ1RleHQuaXNF
bXB0eSgpICkKICAgewotICAgIG1FZGl0b3ItPmFwcGVuZChtT2xkU2lnVGV4dCk7CisgICAgaWYg
KCBhcHBlbmQgKSB7CisgICAgICBtRWRpdG9yLT5hcHBlbmQobU9sZFNpZ1RleHQpOworICAgIH0g
ZWxzZSB7CisgICAgICBtRWRpdG9yLT5pbnNlcnRBdChtT2xkU2lnVGV4dCwgcG9zLCAwKTsKKyAg
ICB9CisKICAgICBtRWRpdG9yLT5zZXRNb2RpZmllZChtb2QpOwogICAgIC8vIG1FZGl0b3ItPnNl
dENvbnRlbnRzUG9zKCAwLCAwICk7CiAgICAgaWYgKCAgbVByZXNlcnZlVXNlckN1cnNvclBvc2l0
aW9uICkgewpAQCAtNDE1NiwxMyArNDIwMCwzMCBAQAogCiAgICAgbUVkaXRvci0+c2V0TW9kaWZp
ZWQobW9kKTsKICAgICAvLyBtRWRpdG9yLT5zZXRDb250ZW50c1BvcyggMCwgMCApOwotICAgIGlm
ICggIG1QcmVzZXJ2ZVVzZXJDdXJzb3JQb3NpdGlvbiApIHsKLSAgICAgIG1FZGl0b3ItPnNldEN1
cnNvclBvc2l0aW9uRnJvbVN0YXJ0KCAodW5zaWduZWQgaW50KSBtTXNnLT5nZXRDdXJzb3JQb3Mo
KSApOwotICAgICAgLy8gT25seSBrZWVwIHRoZSBjdXJzb3IgZnJvbSB0aGUgbU1zZyAqb25jZSog
YmFzZWQgb24gdGhlCi0gICAgICAvLyBwcmVzZXJ2ZS1jdXJzb3ItcG9zaXRpb24gc2V0dGluZzsg
dGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlCi0gICAgICAvLyB0aGUgbWVzc2FnZSBjb21lcyBm
cm9tIGEgdGVtcGxhdGUgd2l0aCBhIHNwZWNpZmljIGN1cnNvcgotICAgICAgLy8gcG9zaXRpb24g
c2V0IGFuZCB0aGUgc2lnbmF0dXJlIGlzIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuCi0gICAgICBt
UHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24gPSBmYWxzZTsKLSAgICB9CisKKyAgICAvLyBpZiB0
aGUgY3Vyc29yIGlzIGV4cGxpY2l0bHkgc2V0IGluIGEgdGVtcGxhdGUsIHNldCB0aGUgY3Vyc29y
IHBvc2l0aW9uCisgICAgLy8gdG8gdGhlIHRlbXBsYXRlIHBvc2l0aW9uLCBvZmZzZXR0aW5nIGZv
ciB0aGUgcHJlcGVuZGVkIHNpZ25hdHVyZSBsZW5ndGgKKyAgICAvLyBpZiBhcHBsaWNhYmxlLCBv
dGhlcndpc2Ugc2V0IGl0IHRvIGFib3ZlIHRoZSBzaWcgZm9yIHtwcmUsYXB9cGVuZC9pbnNlcnQK
KyAgICBpZiAoICBtUHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24gKSB7CisgICAgICBpZiAoIGFw
cGVuZCAmJiBwb3MgPT0gMCApCisgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uRnJv
bVN0YXJ0KCAodW5zaWduZWQgaW50KSBtTXNnLT5nZXRDdXJzb3JQb3MoKSApOworICAgICAgZWxz
ZQorICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbkZyb21TdGFydCggKHVuc2lnbmVk
IGludCkgbU1zZy0+Z2V0Q3Vyc29yUG9zKCkgKyBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOworICAg
ICAgLy8gT25seSBrZWVwIHRoZSBjdXJzb3IgZnJvbSB0aGUgbU1zZyAqb25jZSogYmFzZWQgb24g
dGhlCisgICAgICAvLyBwcmVzZXJ2ZS1jdXJzb3ItcG9zaXRpb24gc2V0dGluZzsgdGhpcyBoYW5k
bGVzIHRoZSBjYXNlIHdoZXJlCisgICAgICAvLyB0aGUgbWVzc2FnZSBjb21lcyBmcm9tIGEgdGVt
cGxhdGUgd2l0aCBhIHNwZWNpZmljIGN1cnNvcgorICAgICAgLy8gcG9zaXRpb24gc2V0IGFuZCB0
aGUgc2lnbmF0dXJlIGlzIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICBtUHJlc2VydmVV
c2VyQ3Vyc29yUG9zaXRpb24gPSBmYWxzZTsKKyAgICB9IGVsc2UgeyBpZiAoIGFwcGVuZCApIHsK
KyAgICAgICAgICBRU3RyaW5nIHRtcE1zZ1RleHQgPSBtRWRpdG9yLT50ZXh0KCk7CisgICAgICAg
ICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb25Gcm9tU3RhcnQoIHRtcE1zZ1RleHQubGVuZ3Ro
KCkgLSBtT2xkU2lnVGV4dC5sZW5ndGgoKSApOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyBp
ZiAoIHBvcyAhPSAwICkKKyAgICAgICAgICAgIG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uKCBw
b3MsIDAgKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQ
b3NpdGlvbiggMCAsIDAgKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1FZGl0b3ItPnN5bmMo
KTsKICAgfQogfQotLS0ga21haWwva21jb21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjAzOjIx
CTYwMTE0OQorKysga21haWwva21jb21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjA2OjI3CTYw
MTE1MApAQCAtNDE5OCwzNCArNDI2OSwzNyBAQAogCiAgIC8vIFJlbW92ZSB0aGUgc2lnbmF0dXJl
IGZvciBub3cuCiAgIFFTdHJpbmcgc2lnOworICBRU3RyaW5nIHByZXNpZzsKICAgYm9vbCByZXN0
b3JlID0gZmFsc2U7CiAgIGNvbnN0IEtQSU06OklkZW50aXR5ICYgaWRlbnQgPQogICAgIGtta2Vy
bmVsLT5pZGVudGl0eU1hbmFnZXIoKS0+aWRlbnRpdHlGb3JVb2lkKCBtSWQgKTsKICAgaWYgKCAh
aWRlbnQuaXNOdWxsKCkgKSB7Ci0gICAgc2lnID0gaWRlbnQuc2lnbmF0dXJlVGV4dCgpOwotICAg
IGlmKCAhc2lnLmlzRW1wdHkoKSApIHsKLSAgICAgIGlmKCBzLmVuZHNXaXRoKCBzaWcgKSApIHsK
LSAgICAgICAgcy50cnVuY2F0ZSggcy5sZW5ndGgoKSAtIHNpZy5sZW5ndGgoKSApOworICAgIHNp
ZyA9IGlkZW50LnNpZ25hdHVyZVRleHQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmRhc2hEYXNo
U2lnbmF0dXJlKCkgKTsKKyAgICAgIGlmKCAhc2lnLmlzRW1wdHkoKSAmJiBzLmZpbmQoc2lnLCAw
LCB0cnVlKSAhPSAtMSApIHsKKyAgICAgICAgcHJlc2lnID0gcy5sZWZ0KCBzLmZpbmQoc2lnLCAw
LCB0cnVlKSApOworICAgICAgICBzLnJlbW92ZSggcy5maW5kKHNpZywgMCwgdHJ1ZSkgLSBzaWcu
bGVuZ3RoKCkgKTsKICAgICAgICAgcmVzdG9yZSA9IHRydWU7CiAgICAgICB9Ci0gICAgfQogICB9
CiAKICAgLy8gU3F1ZWV6ZSB0YWJzIGFuZCBzcGFjZXMKICAgUVJlZ0V4cCBzcXVlZXplKCAiW1x0
IF0rIiApOwogICBzLnJlcGxhY2UoIHNxdWVlemUsIFFDaGFyKCAnICcgKSApOworICBpZiggIXBy
ZXNpZy5pc0VtcHR5KCkgKSBwcmVzaWcucmVwbGFjZSggc3F1ZWV6ZSwgUUNoYXIoICcgJyApICk7
CiAKICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UKICAgUVJlZ0V4cCB0cmFpbGluZygg
IlxccyskIiApOwogICBzLnJlcGxhY2UoIHRyYWlsaW5nLCBRQ2hhciggJ1xuJyApICk7CisgIGlm
KCAhcHJlc2lnLmlzRW1wdHkoKSApIHByZXNpZy5yZXBsYWNlKCB0cmFpbGluZywgUUNoYXIoICdc
bicgKSApOwogCiAgIC8vIFNpbmdsZSBzcGFjZSBsaW5lcwogICBRUmVnRXhwIHNpbmdsZVNwYWNl
KCAiW1xuXXsyLH0iICk7CiAgIHMucmVwbGFjZSggc2luZ2xlU3BhY2UsIFFDaGFyKCAnXG4nICkg
KTsKKyAgaWYoICFwcmVzaWcuaXNFbXB0eSgpICkgcHJlc2lnLnJlcGxhY2UoIHNpbmdsZVNwYWNl
LCBRQ2hhciggJ1xuJyApICk7CiAKICAgLy8gUmVzdG9yZSB0aGUgc2lnbmF0dXJlCiAgIGlmICgg
cmVzdG9yZSApCi0gICAgcy5hcHBlbmQoIHNpZyApOworICAgIHMuaW5zZXJ0KCBwcmVzaWcubGVu
Z3RoKCksIHNpZyApOwogCiAgIC8vIFB1dCB0aGUgbmV3IHRleHQgaW4gcGxhY2UuCiAgIC8vIFRo
ZSBsaW5lcyBiZWxvdyBkbyBub3QgY2xlYXIgdGhlIHVuZG8gaGlzdG9yeSwgYnV0IHVuZm9ydHVh
dGVseSBjYXVzZQpAQCAtNDQ4OSw3ICs0NTEwLDcgQEAKICAgICAgIGlkZW50aXR5TWFuYWdlcigp
LT4KICAgICAgIGlkZW50aXR5Rm9yVW9pZE9yRGVmYXVsdCggbU1zZy0+aGVhZGVyRmllbGQoICJY
LUtNYWlsLUlkZW50aXR5IiApLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
cFdoaXRlU3BhY2UoKS50b1VJbnQoKSApOwotICAgIG1PbGRTaWdUZXh0ID0gaWQuc2lnbmF0dXJl
VGV4dCgpOworICAgIG1PbGRTaWdUZXh0ID0gaWQuc2lnbmF0dXJlVGV4dCggR2xvYmFsU2V0dGlu
Z3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmUoKSApOwogICB9CiAKICAgLy8gdHJ5IHRvIHRy
dW5jYXRlIHRoZSBvbGQgc2lnCkBAIC00NTAwLDE1ICs0NTUyLDU0IEBACiAgIHdoaWxlICggIW1P
bGRTaWdUZXh0LmlzRW1wdHkoKSAmJiBtT2xkU2lnVGV4dFttT2xkU2lnVGV4dC5sZW5ndGgoKS0x
XS5pc1NwYWNlKCkgKQogICAgIG1PbGRTaWdUZXh0LnRydW5jYXRlKCBtT2xkU2lnVGV4dC5sZW5n
dGgoKSAtIDEgKTsKIAotICBpZiggZWR0VGV4dC5lbmRzV2l0aCggbU9sZFNpZ1RleHQgKSApCi0g
ICAgZWR0VGV4dC50cnVuY2F0ZSggZWR0VGV4dC5sZW5ndGgoKSAtIG1PbGRTaWdUZXh0Lmxlbmd0
aCgpICk7CisgIG1OZXdTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJlVGV4dCggR2xvYmFsU2V0dGlu
Z3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmUoKSApOworICAvLyBpZiB0aGUgdXNlciBoYXMg
YXV0byBzaWduYXR1cmVzIGVuYWJsZWQgYW5kIGEgbmV3IHNpZywgcmVwbGFjZSB0aGUKKyAgLy8g
Y3VycmVudCBzaWcgb24gaWRlbnRpdHkgY2hhbmdlIGlmIHRoZXJlJ3MgYSBzaWcgc2V0LCBvdGhl
cndpc2UgcHJlcGVuZAorICAvLyB0aGUgbmV3IHNpZyBpZiB0aGV5IHdhbnQgcHJlcGVuZGVkLCBv
ciBhcHBlbmQgb3RoZXJ3aXNlIGFuZCBmaW5hbGx5IAorICAvLyBkZWxldGUgdGhlIHNpZyBpZiB0
aGV5IGRvbid0IGhhdmUgYXV0byBzaWduYXR1cmVzIGVuYWJsZWQgb3IgaWYKKyAgLy8gdGhlIG5l
dyBzaWduYXR1cmUgaXMgZW1wdHkgYW5kIG9sZCBzaWcgaXNuJ3QgZW1wdHkKKyAgaWYgKCAoIEds
b2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9UZXh0U2lnbmF0dXJlKCkgPT0gImF1dG8iICkgJiYK
KyAgICAgICAhbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAgIGlmICggKCBlZHRUZXh0LmZp
bmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSAhPSAtMSApICYmICFtT2xkU2lnVGV4dC5pc0VtcHR5
KCkgKSB7CisgICAgICBlZHRUZXh0ID0gZWR0VGV4dC5yZXBsYWNlKCBlZHRUZXh0LmZpbmQoIG1P
bGRTaWdUZXh0LCAwLCB0cnVlKSwKKyAgICAgICAgbU9sZFNpZ1RleHQubGVuZ3RoKCksIG1OZXdT
aWdUZXh0ICk7CisgICAgfSBlbHNlIHsgaWYgKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVw
ZW5kU2lnbmF0dXJlKCkgKSB7CisgICAgICAgICAgLy8gaWYgd2UgaGF2ZSB0cmFja2luZyBpbmZv
IGFuZCBJIGNhbiBmaW5kIGl0IGluIHRoZSB0ZXh0LCBwbGFjZSB0aGUKKyAgICAgICAgICAvLyBz
aWcgdGhlcmUsIG90aGVyd2lzZSBwcmVwZW5kIGl0ICh3aXRoIFxuXG4gaWYgdGhleSd2ZSBhbHJl
YWR5IHR5cGVkKQorICAgICAgICAgIGlmICggIW1UcmFja1NpZy5pc051bGwoKSAmJiAoIGVkdFRl
eHQuZmluZCggbVRyYWNrU2lnLCAwLCB0cnVlKSAhPSAtMSApICkgeworICAgICAgICAgICAgZWR0
VGV4dC5pbnNlcnQoIGVkdFRleHQuZmluZCggbVRyYWNrU2lnLCAwLCB0cnVlKSAsIG1OZXdTaWdU
ZXh0ICk7CisgICAgICAgICAgICBtVHJhY2tTaWcgPSBRU3RyaW5nOjpudWxsOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsgaWYgKCBtVHJhY2tTaWcgPT0gIiEhIUFQUEVORCEhISIgKQor
ICAgICAgICAgICAgICBlZHRUZXh0LmFwcGVuZCggbU5ld1NpZ1RleHQgKTsKKyAgICAgICAgICAg
IGVsc2UgeyBpZiAoICFlZHRUZXh0WzFdLmlzU3BhY2UoKSApCisgICAgICAgICAgICAgICAgZWR0
VGV4dC5wcmVwZW5kKCBtTmV3U2lnVGV4dCArIFFTdHJpbmc6OmZyb21MYXRpbjEoICJcblxuIiAp
ICk7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlZHRUZXh0LnByZXBlbmQo
IG1OZXdTaWdUZXh0ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfSBlbHNl
IHsKKyAgICAgICAgZWR0VGV4dC5hcHBlbmQoIG1OZXdTaWdUZXh0ICk7CisgICAgICB9CisgICAg
fQorICB9IGVsc2UgaWYgKCAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkgeworICAgIC8vIGlmIHN3
aXRjaGluZyB0byBhbiBpZGVudCB3aXRoIG5vIHNpZywgdHJhY2sgaXRzIHBvc2l0aW9uIGZvciBs
YXRlciBpbiBjYXNlCisgICAgLy8gdGhlIHVzZXIgc3dpdGNoZXMgdG8gb25lIHdpdGggYSBzaWcg
Zm9yIGludGVsbGlnZW50IHBsYWNlbWVudAorICAgIC8vIGNhdmVhdDogdGhpcyBpcyBiYXNlZCBv
biB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSB1c2VyIHdvbid0IGNoYW5nZQorICAgIC8vIHRoZSAy
MCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBzaWduYXR1cmUgKHNlZW1zIHJlYXNvbmFibGUgaW4gcmVw
bHkvZndkKQorICAgIGlmICggbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAgICAgLy8gb29w
cywgdGhlcmUncyBhY3R1YWxseSBub3RoaW5nIGFmdGVyIHRoZSBzaWduYXR1cmUsIGp1c3QgYXBw
ZW5kIGxhdGVyCisgICAgICBpZiAoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUp
ICsgbU9sZFNpZ1RleHQubGVuZ3RoKCkgPT0gZWR0VGV4dC5sZW5ndGgoKSApCisgICAgICAgIG1U
cmFja1NpZyA9ICIhISFBUFBFTkQhISEiOworICAgICAgZWxzZQorICAgICAgICBtVHJhY2tTaWcg
PSBlZHRUZXh0Lm1pZCggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSkgKworICAg
ICAgICAgIG1PbGRTaWdUZXh0Lmxlbmd0aCgpLCAyMCApOworICAgIH0KKyAgICBlZHRUZXh0ID0g
ZWR0VGV4dC5yZW1vdmUoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUpLAorICAg
ICAgbU9sZFNpZ1RleHQubGVuZ3RoKCkgKTsKKyAgfQorICBtT2xkU2lnVGV4dCA9IG1OZXdTaWdU
ZXh0OwogCi0gIC8vIG5vdyBhcHBlbmQgdGhlIG5ldyBzaWcKLSAgbU9sZFNpZ1RleHQgPSBpZGVu
dC5zaWduYXR1cmVUZXh0KCk7Ci0gIGlmKCAoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgKSAmJgot
ICAgICAgKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpID09ICJh
dXRvIiApICkgewotICAgIGVkdFRleHQuYXBwZW5kKCBtT2xkU2lnVGV4dCApOwotICB9CiAgIG1F
ZGl0b3ItPnNldFRleHQoIGVkdFRleHQgKTsKIAogICAvLyBkaXNhYmxlIGNlcnRhaW4gYWN0aW9u
cyBpZiB0aGVyZSBpcyBubyBQR1AgdXNlciBpZGVudGl0eSBzZXQKLS0tIGttYWlsL2ttY29tcG9z
ZXdpbi5oCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrbWFpbC9rbWNvbXBvc2V3aW4u
aAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMzY5LDYgKzM2OSwxNiBAQAogICB2b2lk
IHNsb3RBcHBlbmRTaWduYXR1cmUoKTsKICAKICAgLyoqCisgICAqIFByZXBlbmQgc2lnbmF0dXJl
IGZpbGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCBpbiB0aGUgZWRpdG9yLgorICAgKi8K
KyAgdm9pZCBzbG90UHJlcGVuZFNpZ25hdHVyZSgpOworCisgIC8qKgorICAgKiBJbnNlcnQgc2ln
bmF0dXJlIGZpbGUgYXQgdGhlIGN1cnNvciBwb3NpdGlvbiBvZiB0aGUgdGV4dCBpbiB0aGUgZWRp
dG9yLgorICAgKi8KKyAgdm9pZCBzbG90SW5zZXJ0U2lnbmF0dXJlQXRDdXJzb3IoKTsKKworICAv
KioKICAgICogQXR0YWNoIHNlbmRlcidzIHB1YmxpYyBrZXkuCiAgICAqLwogICB2b2lkIHNsb3RJ
bnNlcnRNeVB1YmxpY0tleSgpOwpAQCAtNjYzLDYgKzY3MywxMiBAQAogICAgKi8KICAgdm9pZCBz
ZXRUcmFuc3BvcnQoIGNvbnN0IFFTdHJpbmcgJiB0cmFuc3BvcnQgKTsKIAorICAvKioKKyAgICog
SGVscGVyIHRvIGluc2VydCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBjdXJyZW50IGlkZW50eSBhdCB0
aGUKKyAgICogYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUgZWRpdG9yLgorICAgKi8KKyAgdm9pZCBp
bnNlcnRTaWduYXR1cmUoIGJvb2wgYXBwZW5kID0gdHJ1ZSwgaW50IHBvcyA9IDAgKTsKKwogcHJp
dmF0ZSBzbG90czoKICAgIC8qKgogICAgICogQ29tcHJlc3MgYW4gYXR0YWNoZW1udCB3aXRoIHRo
ZSBnaXZlbiBpbmRleApAQCAtNzU3LDYgKzc3Myw5IEBACiAgIFFNYXA8S0lPOjpKb2IqLCBLVVJM
PiBtQXR0YWNoSm9iczsKICAgS1VSTDo6TGlzdCBtQXR0YWNoRmlsZXNQZW5kaW5nOwogICBpbnQg
bUF0dGFjaEZpbGVzU2VuZDsKKworICBRU3RyaW5nIG1UcmFja1NpZzsKKyAgUVN0cmluZyBtTmV3
U2lnVGV4dDsKIAogcHJpdmF0ZToKICAgLy8gaGVscGVyIG1ldGhvZCBmb3Igc2xvdEluc2VydChN
eSlQdWJsaWNLZXkoKQotLS0gbGlia3BpbWlkZW50aXRpZXMvaWRlbnRpdHkuaCAgICAgICAgMjAw
Ni8xMS8wMiAxMDowMzoyMSAgICAgNjAxMTQ5CisrKyBsaWJrcGltaWRlbnRpdGllcy9pZGVudGl0
eS5oICAgICAgICAyMDA2LzExLzAyIDEwOjA2OjI3ICAgICA2MDExNTAKQEAgLTU1LDcgKzU1LDcg
QEAKIAogICAvKiogQHJldHVybiB0aGUgc2lnbmF0dXJlIHRleHQgd2l0aCBhICItLSAiIHNlcGFy
YXRvciBhZGRlZCwgaWYKICAgICAgIG5lY2Vzc2FyeS4gKi8KLSAgUVN0cmluZyB3aXRoU2VwYXJh
dG9yKCBib29sICogb2s9MCApIGNvbnN0OworICBRU3RyaW5nIHdpdGhTZXBhcmF0b3IoIGJvb2wg
dXNlZGFzaCA9IHRydWUsIGJvb2wgKiBvaz0wICkgY29uc3Q7CiAKICAgLyoqIFNldCB0aGUgc2ln
bmF0dXJlIHRleHQgYW5kIG1hcmsgdGhpcyBzaWduYXR1cmUgYXMgYmVpbmcgb2YKICAgICAgICJp
bmxpbmUgdGV4dCIgdHlwZS4gKi8KQEAgLTIyNyw2ICsyMjcsNyBAQAogCiAgIHZvaWQgc2V0U2ln
bmF0dXJlKCBjb25zdCBTaWduYXR1cmUgJiBzaWcgKSB7IG1TaWduYXR1cmUgPSBzaWc7IH0KICAg
U2lnbmF0dXJlICYgc2lnbmF0dXJlKCkgLyogX25vdF8gY29uc3QhICovIHsgcmV0dXJuIG1TaWdu
YXR1cmU7IH0KKyAgY29uc3QgU2lnbmF0dXJlICYgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4g
bVNpZ25hdHVyZTsgfQogCiBwcm90ZWN0ZWQ6CiAgIC8qKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNp
Z25hdHVyZSBpcyByZWFkIGZyb20gdGhlIG91dHB1dCBvZiBhIGNvbW1hbmQgKi8KQEAgLTI1Myw3
ICsyNTQsNyBAQAogICAgIGNvcnJlY3QuIFNvIHVzZSB0aGlzIG1ldGhvZCB0byByZWN0cmVpdmUg
dGhlIGNvbnRlbnRzIG9mIHRoZQogICAgIHNpZ25hdHVyZSBmaWxlLiBJZiBAcCBwcm9tcHQgaXMg
ZmFsc2UsIG5vIGVycm9ycyB3aWxsIGJlIGRpc3BsYXllZAogICAgICh1c2VmdWwgZm9yIHJldHJp
ZXMpLiAqLwotICBRU3RyaW5nIHNpZ25hdHVyZVRleHQoIGJvb2wgKiBvaz0wKSBjb25zdDsKKyAg
UVN0cmluZyBzaWduYXR1cmVUZXh0KCBib29sIHVzZWRhc2ggPSB0cnVlLCBib29sICogb2s9MCkg
Y29uc3Q7CiAKICAgLyoqIFRoZSB0cmFuc3BvcnQgdGhhdCBpcyBzZXQgZm9yIHRoaXMgaWRlbnRp
dHkuIFVzZWQgdG8gbGluayBhCiAgICAgICB0cmFuc3BvcnQgd2l0aCBhbiBpZGVudGl0eS4gKi8K
LS0tIGxpYmtwaW1pZGVudGl0aWVzL2lkZW50aXR5LmNwcCAgICAgICAgMjAwNi8xMS8wMiAxMDow
MzoyMSAgICAgNjAxMTQ5CisrKyBsaWJrcGltaWRlbnRpdGllcy9pZGVudGl0eS5jcHAgICAgICAg
IDIwMDYvMTEvMDIgMTA6MDY6MjcgICAgIDYwMTE1MApAQCAtMTMzLDcgKzEzMyw3IEBACiAgIHJl
dHVybiBRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KCBrRmlsZVRvU3RyaW5nKCBtVXJsLCBmYWxzZSAp
ICk7CiB9CiAKLVFTdHJpbmcgU2lnbmF0dXJlOjp3aXRoU2VwYXJhdG9yKCBib29sICogb2sgKSBj
b25zdAorUVN0cmluZyBTaWduYXR1cmU6OndpdGhTZXBhcmF0b3IoIGJvb2wgdXNlZGFzaCwgYm9v
bCAqIG9rICkgY29uc3QKIHsKICAgYm9vbCBpbnRlcm5hbE9LID0gZmFsc2U7CiAgIFFTdHJpbmcg
c2lnbmF0dXJlID0gcmF3VGV4dCggJmludGVybmFsT0sgKTsKQEAgLTE0Miw2ICsxNDIsNyBAQAog
ICAgIHJldHVybiBRU3RyaW5nOjpudWxsOwogICB9CiAgIGlmICggb2sgKSAqb2sgPSB0cnVlOwor
ICBpZiAoICF1c2VkYXNoICkgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIlxuIikgKz0gc2ln
bmF0dXJlOwogICBpZiAoIHNpZ25hdHVyZS5pc0VtcHR5KCkgKSByZXR1cm4gc2lnbmF0dXJlOyAv
LyBkb24ndCBhZGQgYSBzZXBhcmF0b3IgaW4gdGhpcyBjYXNlCiAgIGlmICggc2lnbmF0dXJlLnN0
YXJ0c1dpdGgoIFFTdHJpbmc6OmZyb21MYXRpbjEoIi0tIFxuIikgKSApCiAgICAgLy8gYWxyZWFk
eSBoYXZlIHNpZ25hdHVyZSBzZXBhcmF0b3IgYXQgc3RhcnQgb2Ygc2lnOgpAQCAtNjA4LDEwICs2
MDksMTAgQEAKIAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1RU3RyaW5nIElkZW50aXR5Ojpz
aWduYXR1cmVUZXh0KCBib29sICogb2sgKSBjb25zdAorUVN0cmluZyBJZGVudGl0eTo6c2lnbmF0
dXJlVGV4dCggYm9vbCB1c2VkYXNoLCBib29sICogb2sgKSBjb25zdAogewogICBib29sIGludGVy
bmFsT0sgPSBmYWxzZTsKLSAgUVN0cmluZyBzaWduYXR1cmVUZXh0ID0gbVNpZ25hdHVyZS53aXRo
U2VwYXJhdG9yKCAmaW50ZXJuYWxPSyApOworICBRU3RyaW5nIHNpZ25hdHVyZVRleHQgPSBtU2ln
bmF0dXJlLndpdGhTZXBhcmF0b3IoIHVzZWRhc2gsICZpbnRlcm5hbE9LICk7CiAgIGlmICggaW50
ZXJuYWxPSyApIHsKICAgICBpZiAoIG9rICkgKm9rPXRydWU7CiAgICAgcmV0dXJuIHNpZ25hdHVy
ZVRleHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21975</attachid>
            <date>2007-11-01 19:18:28 +0000</date>
            <delta_ts>2007-11-01 19:18:28 +0000</delta_ts>
            <desc>enterprise-tofu.patch</desc>
            <filename>enterprise-tofu.patch</filename>
            <type>text/plain</type>
            <size>12969</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkK
KysrIGttYWlsL2NvbmZpZ3VyZWRpYWxvZy5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAK
QEAgLTI1ODYsOSArMjU4NiwyMSBAQAogCiAgIG1Ub3BRdW90ZUNoZWNrID0KICAgICBuZXcgUUNo
ZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlSXRlbSgpLT5s
YWJlbCgpLCB0aGlzICk7CisgIG1Ub3BRdW90ZUNoZWNrLT5zZXRFbmFibGVkKCBmYWxzZSApOwog
ICB2bGF5LT5hZGRXaWRnZXQoIG1Ub3BRdW90ZUNoZWNrKTsKICAgY29ubmVjdCggbVRvcFF1b3Rl
Q2hlY2ssIFNJR05BTCggc3RhdGVDaGFuZ2VkKGludCkgKSwKICAgICAgICAgICAgdGhpcywgU0xP
VCggc2xvdEVtaXRDaGFuZ2VkKCB2b2lkICkgKSApOworICBjb25uZWN0KCBtQXV0b0FwcFNpZ25G
aWxlQ2hlY2ssIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwKKyAgICAgICAgICAgbVRvcFF1b3RlQ2hl
Y2ssIFNMT1Qoc2V0RW5hYmxlZChib29sKSkgKTsKKworICBtRGFzaERhc2hDaGVjayA9CisgICAg
bmV3IFFDaGVja0JveCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmVJ
dGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldEVuYWJsZWQoIGZh
bHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbURhc2hEYXNoQ2hlY2spOworICBjb25uZWN0KCBt
RGFzaERhc2hDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAorICAgICAgICAgICB0
aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNvbm5lY3QoIG1BdXRv
QXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAgICAgICAgICBtRGFz
aERhc2hDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOwogCiAgIG1TbWFydFF1b3RlQ2hl
Y2sgPSBuZXcgUUNoZWNrQm94KAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5z
bWFydFF1b3RlSXRlbSgpLT5sYWJlbCgpLApAQCAtMjcwOCw2ICsyNzIxLDcgQEAKICAgbUF1dG9B
cHBTaWduRmlsZUNoZWNrLT5zZXRDaGVja2VkKAogICAgICAgICAgICBHbG9iYWxTZXR0aW5nczo6
c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpPT0iYXV0byIgKTsKICAgbVRvcFF1b3RlQ2hlY2st
PnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSAp
OworICBtRGFzaERhc2hDaGVjay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
ZGFzaERhc2hTaWduYXR1cmUoKSApOwogICBtU21hcnRRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBH
bG9iYWxTZXR0aW5nczo6c2VsZigpLT5zbWFydFF1b3RlKCkgKTsKICAgbUF1dG9SZXF1ZXN0TURO
Q2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnJlcXVlc3RNRE4oKSAp
OwogICBtV29yZFdyYXBDaGVjay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
d29yZFdyYXAoKSApOwpAQCAtMjczMCw2ICsyNzQ0LDggQEAKICAgfQogICBpZiAoIGNvbXBvc2Vy
Lmhhc0tleSggInByZXBlbmQtc2lnbmF0dXJlIiApICkKICAgICBtVG9wUXVvdGVDaGVjay0+c2V0
Q2hlY2tlZCggY29tcG9zZXIucmVhZEJvb2xFbnRyeSggInByZXBlbmQtc2lnbmF0dXJlIiApICk7
CisgIGlmICggY29tcG9zZXIuaGFzS2V5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSApCisgICAg
bURhc2hEYXNoQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJkYXNo
LWRhc2gtc2lnbmF0dXJlIiApICk7CiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAic21hcnQtcXVv
dGUiICkgKQogICAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRC
b29sRW50cnkoICJzbWFydC1xdW90ZSIgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInJl
cXVlc3QtbWRuIiApICkKQEAgLTI3NTIsNiArMjc2OCw3IEBACiAgIEdsb2JhbFNldHRpbmdzOjpz
ZWxmKCktPnNldEF1dG9UZXh0U2lnbmF0dXJlKAogICAgICAgICAgbUF1dG9BcHBTaWduRmlsZUNo
ZWNrLT5pc0NoZWNrZWQoKSA/ICJhdXRvIiA6ICJtYW51YWwiICk7CiAgIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnNldFByZXBlbmRTaWduYXR1cmUoIG1Ub3BRdW90ZUNoZWNrLT5pc0NoZWNrZWQo
KSk7CisgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldERhc2hEYXNoU2lnbmF0dXJlKCBtRGFz
aERhc2hDaGVjay0+aXNDaGVja2VkKCkpOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5zZXRT
bWFydFF1b3RlKCBtU21hcnRRdW90ZUNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0
aW5nczo6c2VsZigpLT5zZXRSZXF1ZXN0TUROKCBtQXV0b1JlcXVlc3RNRE5DaGVjay0+aXNDaGVj
a2VkKCkgKTsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0V29yZFdyYXAoIG1Xb3JkV3Jh
cENoZWNrLT5pc0NoZWNrZWQoKSApOwotLS0ga21haWwvY29uZmlndXJlZGlhbG9nX3AuaAkyMDA2
LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwvY29uZmlndXJlZGlhbG9nX3AuaAkyMDA2
LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtNjA4LDYgKzYwOCw3IEBACiBwcml2YXRlOgogICBR
Q2hlY2tCb3ggICAgICptQXV0b0FwcFNpZ25GaWxlQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1U
b3BRdW90ZUNoZWNrOworICBRQ2hlY2tCb3ggICAgICptRGFzaERhc2hDaGVjazsKICAgUUNoZWNr
Qm94ICAgICAqbVNtYXJ0UXVvdGVDaGVjazsKICAgUUNoZWNrQm94ICAgICAqbUF1dG9SZXF1ZXN0
TUROQ2hlY2s7CiAgIFFDaGVja0JveAkqbVNob3dSZWNlbnRBZGRyZXNzZXNJbkNvbXBvc2VyOwot
LS0ga21haWwva21haWwua2NmZwkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwv
a21haWwua2NmZwkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMzg5LDYgKzM4OSwxMCBA
QAogICAgICAgICA8bGFiZWw+SW5zZXJ0IHNpZ25hdHVyZSBhYm92ZSBxdW90ZWQgdGV4dDwvbGFi
ZWw+CiAgICAgICAgIDxkZWZhdWx0PmZhbHNlPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KKyAg
ICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5PSJkYXNo
LWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9yICgtLSkg
dG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVsdD4KKyAg
ICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iUmVwbHlQcmVmaXhlcyIgdHlwZT0iU3Ry
aW5nTGlzdCIga2V5PSJyZXBseS1wcmVmaXhlcyI+CiAgICAgICAgIDxkZWZhdWx0PlJlXFxzKjos
UmVcXFtcXGQrXFxdOixSZVxcZCs6PC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KLS0tIGttYWls
L2ttY29tcG9zZXdpbi5jcHAJMjAwNi8xMS8wMiAxMDowMzoyMQk2MDExNDkKKysrIGttYWlsL2tt
Y29tcG9zZXdpbi5jcHAJMjAwNi8xMS8wMiAxMDowNjoyNwk2MDExNTAKQEAgLTQzMjQsOCArNDMy
NCw5IEBACiAgICAgIGtta2VybmVsLT5pZGVudGl0eU1hbmFnZXIoKS0+CiAgICAgIGlkZW50aXR5
Rm9yVW9pZE9yRGVmYXVsdCggbUlkZW50aXR5LT5jdXJyZW50SWRlbnRpdHkoKSApOwoKLSAgIG1P
bGRTaWdUZXh0ID0gR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpPyBp
ZGVudC5zaWduYXR1cmUoKS5yYXdUZXh0KCkgOiBpZGVudC5zaWduYXR1cmVUZXh0KCk7CisgICBt
T2xkU2lnVGV4dCA9IEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKT8K
KyAgICAgaWRlbnQuc2lnbmF0dXJlKCkucmF3VGV4dCgpIDogaWRlbnQuc2lnbmF0dXJlVGV4dCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmUoKSApOwogCiAgICBpZigg
IW1PbGRTaWdUZXh0LmlzRW1wdHkoKSApCiAgICB7CiAgICAgICBtRWRpdG9yLT5zeW5jKCk7CkBA
IC00MzM2LDExICs0MzM2LDI5IEBACiAgICAgfQogICAgIG1FZGl0b3ItPnVwZGF0ZSgpOwogICAg
IG1FZGl0b3ItPnNldE1vZGlmaWVkKG1vZCk7Ci0gICAgLy8gZm9yIGFwcGVuZCBhbmQgcHJlcGVu
ZCwgbW92ZSB0aGUgY3Vyc29yIHRvIDAsMCwgZm9yIGluc2VydEF0LAotICAgIC8vIGtlZXAgaXQg
aW4gdGhlIHNhbWUgcm93LCBidXQgbW92ZSB0byBmaXJzdCBjb2x1bW4KLSAgICBtRWRpdG9yLT5z
ZXRDdXJzb3JQb3NpdGlvbiggcG9zLCAwICk7Ci0gICAgaWYgKCAhYXBwZW5kICYmIHBvcyA9PSAw
ICkKLSAgICAgIG1FZGl0b3ItPnNldENvbnRlbnRzUG9zKCAwLCAwICk7CisgICAgLy8gaWYgdGhl
IGN1cnNvciBpcyBleHBsaWNpdGx5IHNldCBpbiBhIHRlbXBsYXRlLCBzZXQgdGhlIGN1cnNvciBw
b3NpdGlvbgorICAgIC8vIHRvIHRoZSB0ZW1wbGF0ZSBwb3NpdGlvbiwgb2Zmc2V0dGluZyBmb3Ig
dGhlIHByZXBlbmRlZCBzaWduYXR1cmUgbGVuZ3RoCisgICAgLy8gaWYgYXBwbGljYWJsZSwgb3Ro
ZXJ3aXNlIHNldCBpdCB0byBhYm92ZSB0aGUgc2lnIGZvciB7cHJlLGFwfXBlbmQvaW5zZXJ0Cisg
ICAgaWYgKCAgbVByZXNlcnZlVXNlckN1cnNvclBvc2l0aW9uICkgeworICAgICAgaWYgKCBhcHBl
bmQgJiYgcG9zID09IDAgKQorICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbkZyb21T
dGFydCggKHVuc2lnbmVkIGludCkgbU1zZy0+Z2V0Q3Vyc29yUG9zKCkgKTsKKyAgICAgIGVsc2UK
KyAgICAgICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9zaXRpb25Gcm9tU3RhcnQoICh1bnNpZ25lZCBp
bnQpIG1Nc2ctPmdldEN1cnNvclBvcygpICsgbU9sZFNpZ1RleHQubGVuZ3RoKCkgKTsKKyAgICAg
IC8vIE9ubHkga2VlcCB0aGUgY3Vyc29yIGZyb20gdGhlIG1Nc2cgKm9uY2UqIGJhc2VkIG9uIHRo
ZQorICAgICAgLy8gcHJlc2VydmUtY3Vyc29yLXBvc2l0aW9uIHNldHRpbmc7IHRoaXMgaGFuZGxl
cyB0aGUgY2FzZSB3aGVyZQorICAgICAgLy8gdGhlIG1lc3NhZ2UgY29tZXMgZnJvbSBhIHRlbXBs
YXRlIHdpdGggYSBzcGVjaWZpYyBjdXJzb3IKKyAgICAgIC8vIHBvc2l0aW9uIHNldCBhbmQgdGhl
IHNpZ25hdHVyZSBpcyBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgbVByZXNlcnZlVXNl
ckN1cnNvclBvc2l0aW9uID0gZmFsc2U7CisgICAgfSBlbHNlIHsgaWYgKCBhcHBlbmQgKSB7Cisg
ICAgICAgICAgUVN0cmluZyB0bXBNc2dUZXh0ID0gbUVkaXRvci0+dGV4dCgpOworICAgICAgICAg
IG1FZGl0b3ItPnNldEN1cnNvclBvc2l0aW9uRnJvbVN0YXJ0KCB0bXBNc2dUZXh0Lmxlbmd0aCgp
IC0gbU9sZFNpZ1RleHQubGVuZ3RoKCkgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsgaWYg
KCBwb3MgIT0gMCApCisgICAgICAgICAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbiggcG9z
LCAwICk7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbUVkaXRvci0+c2V0Q3Vyc29yUG9z
aXRpb24oIDAgLCAwICk7CisgICAgICAgIH0KKyAgICB9CiAgIH0KIAogfQotLS0ga21haWwva21j
b21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjAzOjIxCTYwMTE0OQorKysga21haWwva21jb21w
b3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtNDM3MywzNCArNDM5MSwz
NyBAQAogCiAgIC8vIFJlbW92ZSB0aGUgc2lnbmF0dXJlIGZvciBub3cuCiAgIFFTdHJpbmcgc2ln
OworICBRU3RyaW5nIHByZXNpZzsKICAgYm9vbCByZXN0b3JlID0gZmFsc2U7CiAgIGNvbnN0IEtQ
SU06OklkZW50aXR5ICYgaWRlbnQgPQogICAgIGtta2VybmVsLT5pZGVudGl0eU1hbmFnZXIoKS0+
aWRlbnRpdHlGb3JVb2lkKCBtSWQgKTsKICAgaWYgKCAhaWRlbnQuaXNOdWxsKCkgKSB7Ci0gICAg
c2lnID0gaWRlbnQuc2lnbmF0dXJlVGV4dCgpOwotICAgIGlmKCAhc2lnLmlzRW1wdHkoKSApIHsK
LSAgICAgIGlmKCBzLmVuZHNXaXRoKCBzaWcgKSApIHsKLSAgICAgICAgcy50cnVuY2F0ZSggcy5s
ZW5ndGgoKSAtIHNpZy5sZW5ndGgoKSApOworICAgIHNpZyA9IGlkZW50LnNpZ25hdHVyZVRleHQo
IEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmRhc2hEYXNoU2lnbmF0dXJlKCkgKTsKKyAgICAgIGlm
KCAhc2lnLmlzRW1wdHkoKSAmJiBzLmZpbmQoc2lnLCAwLCB0cnVlKSAhPSAtMSApIHsKKyAgICAg
ICAgcHJlc2lnID0gcy5sZWZ0KCBzLmZpbmQoc2lnLCAwLCB0cnVlKSApOworICAgICAgICBzLnJl
bW92ZSggcy5maW5kKHNpZywgMCwgdHJ1ZSkgLSBzaWcubGVuZ3RoKCkgKTsKICAgICAgICAgcmVz
dG9yZSA9IHRydWU7CiAgICAgICB9Ci0gICAgfQogICB9CiAKICAgLy8gU3F1ZWV6ZSB0YWJzIGFu
ZCBzcGFjZXMKICAgUVJlZ0V4cCBzcXVlZXplKCAiW1x0IF0rIiApOwogICBzLnJlcGxhY2UoIHNx
dWVlemUsIFFDaGFyKCAnICcgKSApOworICBpZiggIXByZXNpZy5pc0VtcHR5KCkgKSBwcmVzaWcu
cmVwbGFjZSggc3F1ZWV6ZSwgUUNoYXIoICcgJyApICk7CiAKICAgLy8gUmVtb3ZlIHRyYWlsaW5n
IHdoaXRlc3BhY2UKICAgUVJlZ0V4cCB0cmFpbGluZyggIlxccyskIiApOwogICBzLnJlcGxhY2Uo
IHRyYWlsaW5nLCBRQ2hhciggJ1xuJyApICk7CisgIGlmKCAhcHJlc2lnLmlzRW1wdHkoKSApIHBy
ZXNpZy5yZXBsYWNlKCB0cmFpbGluZywgUUNoYXIoICdcbicgKSApOwogCiAgIC8vIFNpbmdsZSBz
cGFjZSBsaW5lcwogICBRUmVnRXhwIHNpbmdsZVNwYWNlKCAiW1xuXXsyLH0iICk7CiAgIHMucmVw
bGFjZSggc2luZ2xlU3BhY2UsIFFDaGFyKCAnXG4nICkgKTsKKyAgaWYoICFwcmVzaWcuaXNFbXB0
eSgpICkgcHJlc2lnLnJlcGxhY2UoIHNpbmdsZVNwYWNlLCBRQ2hhciggJ1xuJyApICk7CiAKICAg
Ly8gUmVzdG9yZSB0aGUgc2lnbmF0dXJlCiAgIGlmICggcmVzdG9yZSApCi0gICAgcy5hcHBlbmQo
IHNpZyApOworICAgIHMuaW5zZXJ0KCBwcmVzaWcubGVuZ3RoKCksIHNpZyApOwogCiAgIC8vIFB1
dCB0aGUgbmV3IHRleHQgaW4gcGxhY2UuCiAgIC8vIFRoZSBsaW5lcyBiZWxvdyBkbyBub3QgY2xl
YXIgdGhlIHVuZG8gaGlzdG9yeSwgYnV0IHVuZm9ydHVhdGVseSBjYXVzZQpAQCAtNDY4OCw3ICs0
NzA4LDcgQEAKICAgICAgIGlkZW50aXR5TWFuYWdlcigpLT4KICAgICAgIGlkZW50aXR5Rm9yVW9p
ZE9yRGVmYXVsdCggbU1zZy0+aGVhZGVyRmllbGQoICJYLUtNYWlsLUlkZW50aXR5IiApLgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlU3BhY2UoKS50b1VJbnQoKSAp
OwotICAgIG1PbGRTaWdUZXh0ID0gaWQuc2lnbmF0dXJlVGV4dCgpOworICAgIG1PbGRTaWdUZXh0
ID0gaWQuc2lnbmF0dXJlVGV4dCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWdu
YXR1cmUoKSApOwogICB9CiAKICAgLy8gdHJ5IHRvIHRydW5jYXRlIHRoZSBvbGQgc2lnCkBAIC00
Njk5LDE1ICs0NzE5LDU0IEBACiAgIHdoaWxlICggIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSAmJiBt
T2xkU2lnVGV4dFttT2xkU2lnVGV4dC5sZW5ndGgoKS0xXS5pc1NwYWNlKCkgKQogICAgIG1PbGRT
aWdUZXh0LnRydW5jYXRlKCBtT2xkU2lnVGV4dC5sZW5ndGgoKSAtIDEgKTsKIAotICBpZiggZWR0
VGV4dC5lbmRzV2l0aCggbU9sZFNpZ1RleHQgKSApCi0gICAgZWR0VGV4dC50cnVuY2F0ZSggZWR0
VGV4dC5sZW5ndGgoKSAtIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CisgICAgbU5ld1NpZ1RleHQg
PSBpZGVudC5zaWduYXR1cmVUZXh0KCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNp
Z25hdHVyZSgpICk7CisgIC8vIGlmIHRoZSB1c2VyIGhhcyBhdXRvIHNpZ25hdHVyZXMgZW5hYmxl
ZCBhbmQgYSBuZXcgc2lnLCByZXBsYWNlIHRoZQorICAvLyBjdXJyZW50IHNpZyBvbiBpZGVudGl0
eSBjaGFuZ2UgaWYgdGhlcmUncyBhIHNpZyBzZXQsIG90aGVyd2lzZSBwcmVwZW5kCisgIC8vIHRo
ZSBuZXcgc2lnIGlmIHRoZXkgd2FudCBwcmVwZW5kZWQsIG9yIGFwcGVuZCBvdGhlcndpc2UgYW5k
IGZpbmFsbHkgCisgIC8vIGRlbGV0ZSB0aGUgc2lnIGlmIHRoZXkgZG9uJ3QgaGF2ZSBhdXRvIHNp
Z25hdHVyZXMgZW5hYmxlZCBvciBpZgorICAvLyB0aGUgbmV3IHNpZ25hdHVyZSBpcyBlbXB0eSBh
bmQgb2xkIHNpZyBpc24ndCBlbXB0eQorICBpZiAoICggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
YXV0b1RleHRTaWduYXR1cmUoKSA9PSAiYXV0byIgKSAmJgorICAgICAgICFtTmV3U2lnVGV4dC5p
c0VtcHR5KCkgKSB7CisgICAgaWYgKCAoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRy
dWUpICE9IC0xICkgJiYgIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSApIHsKKyAgICAgIGVkdFRleHQg
PSBlZHRUZXh0LnJlcGxhY2UoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUpLAor
ICAgICAgICBtT2xkU2lnVGV4dC5sZW5ndGgoKSwgbU5ld1NpZ1RleHQgKTsKKyAgICB9IGVsc2Ug
eyBpZiAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSApIHsKKyAg
ICAgICAgICAvLyBpZiB3ZSBoYXZlIHRyYWNraW5nIGluZm8gYW5kIEkgY2FuIGZpbmQgaXQgaW4g
dGhlIHRleHQsIHBsYWNlIHRoZQorICAgICAgICAgIC8vIHNpZyB0aGVyZSwgb3RoZXJ3aXNlIHBy
ZXBlbmQgaXQgKHdpdGggXG5cbiBpZiB0aGV5J3ZlIGFscmVhZHkgdHlwZWQpCisgICAgICAgICAg
aWYgKCAhbVRyYWNrU2lnLmlzTnVsbCgpICYmICggZWR0VGV4dC5maW5kKCBtVHJhY2tTaWcsIDAs
IHRydWUpICE9IC0xICkgKSB7CisgICAgICAgICAgICBlZHRUZXh0Lmluc2VydCggZWR0VGV4dC5m
aW5kKCBtVHJhY2tTaWcsIDAsIHRydWUpICwgbU5ld1NpZ1RleHQgKTsKKyAgICAgICAgICAgIG1U
cmFja1NpZyA9IFFTdHJpbmc6Om51bGw7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeyBp
ZiAoIG1UcmFja1NpZyA9PSAiISEhQVBQRU5EISEhIiApCisgICAgICAgICAgICAgIGVkdFRleHQu
YXBwZW5kKCBtTmV3U2lnVGV4dCApOworICAgICAgICAgICAgZWxzZSB7IGlmICggIWVkdFRleHRb
MV0uaXNTcGFjZSgpICkKKyAgICAgICAgICAgICAgICBlZHRUZXh0LnByZXBlbmQoIG1OZXdTaWdU
ZXh0ICsgUVN0cmluZzo6ZnJvbUxhdGluMSggIlxuXG4iICkgKTsKKyAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGVkdFRleHQucHJlcGVuZCggbU5ld1NpZ1RleHQgKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBlZHRUZXh0LmFw
cGVuZCggbU5ld1NpZ1RleHQgKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSBpZiAoICFtT2xk
U2lnVGV4dC5pc0VtcHR5KCkgKSB7CisgICAgLy8gaWYgc3dpdGNoaW5nIHRvIGFuIGlkZW50IHdp
dGggbm8gc2lnLCB0cmFjayBpdHMgcG9zaXRpb24gZm9yIGxhdGVyIGluIGNhc2UKKyAgICAvLyB0
aGUgdXNlciBzd2l0Y2hlcyB0byBvbmUgd2l0aCBhIHNpZyBmb3IgaW50ZWxsaWdlbnQgcGxhY2Vt
ZW50CisgICAgLy8gY2F2ZWF0OiB0aGlzIGlzIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQg
dGhlIHVzZXIgd29uJ3QgY2hhbmdlCisgICAgLy8gdGhlIDIwIGNoYXJhY3RlcnMgYWZ0ZXIgdGhl
IHNpZ25hdHVyZSAoc2VlbXMgcmVhc29uYWJsZSBpbiByZXBseS9md2QpCisgICAgaWYgKCBtTmV3
U2lnVGV4dC5pc0VtcHR5KCkgKSB7CisgICAgICAvLyBvb3BzLCB0aGVyZSdzIGFjdHVhbGx5IG5v
dGhpbmcgYWZ0ZXIgdGhlIHNpZ25hdHVyZSwganVzdCBhcHBlbmQgbGF0ZXIKKyAgICAgIGlmICgg
ZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSkgKyBtT2xkU2lnVGV4dC5sZW5ndGgo
KSA9PSBlZHRUZXh0Lmxlbmd0aCgpICkKKyAgICAgICAgbVRyYWNrU2lnID0gIiEhIUFQUEVORCEh
ISI7CisgICAgICBlbHNlCisgICAgICAgIG1UcmFja1NpZyA9IGVkdFRleHQubWlkKCBlZHRUZXh0
LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSArCisgICAgICAgICAgbU9sZFNpZ1RleHQubGVu
Z3RoKCksIDIwICk7CisgICAgfQorICAgIGVkdFRleHQgPSBlZHRUZXh0LnJlbW92ZSggZWR0VGV4
dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSksCisgICAgICBtT2xkU2lnVGV4dC5sZW5ndGgo
KSApOworICB9CisgIG1PbGRTaWdUZXh0ID0gbU5ld1NpZ1RleHQ7CiAKLSAgLy8gbm93IGFwcGVu
ZCB0aGUgbmV3IHNpZwotICBtT2xkU2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRleHQoKTsKLSAg
aWYoICggIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSApICYmCi0gICAgICAoIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPmF1dG9UZXh0U2lnbmF0dXJlKCkgPT0gImF1dG8iICkgKSB7Ci0gICAgZWR0VGV4
dC5hcHBlbmQoIG1PbGRTaWdUZXh0ICk7Ci0gIH0KICAgbUVkaXRvci0+c2V0VGV4dCggZWR0VGV4
dCApOwogCiAgIC8vIGRpc2FibGUgY2VydGFpbiBhY3Rpb25zIGlmIHRoZXJlIGlzIG5vIFBHUCB1
c2VyIGlkZW50aXR5IHNldAotLS0ga21haWwva21jb21wb3Nld2luLmgJMjAwNi8xMS8wMiAxMDow
MzoyMQk2MDExNDkKKysrIGttYWlsL2ttY29tcG9zZXdpbi5oCTIwMDYvMTEvMDIgMTA6MDY6MjcJ
NjAxMTUwCkBAIC03OTEsNiArNzkxLDkgQEAKICAgUU1hcDxLSU86OkpvYiosIEtVUkw+IG1BdHRh
Y2hKb2JzOwogICBLVVJMOjpMaXN0IG1BdHRhY2hGaWxlc1BlbmRpbmc7CiAgIGludCBtQXR0YWNo
RmlsZXNTZW5kOworCisgIFFTdHJpbmcgbVRyYWNrU2lnOworICBRU3RyaW5nIG1OZXdTaWdUZXh0
OwogCiBwcml2YXRlOgogICAvLyBoZWxwZXIgbWV0aG9kIGZvciBzbG90SW5zZXJ0KE15KVB1Ymxp
Y0tleSgpCi0tLSBsaWJrcGltaWRlbnRpdGllcy9pZGVudGl0eS5oICAgICAgICAyMDA2LzExLzAy
IDEwOjAzOjIxICAgICA2MDExNDkKKysrIGxpYmtwaW1pZGVudGl0aWVzL2lkZW50aXR5LmggICAg
ICAgIDIwMDYvMTEvMDIgMTA6MDY6MjcgICAgIDYwMTE1MApAQCAtNTUsNyArNTUsNyBAQAogCiAg
IC8qKiBAcmV0dXJuIHRoZSBzaWduYXR1cmUgdGV4dCB3aXRoIGEgIi0tICIgc2VwYXJhdG9yIGFk
ZGVkLCBpZgogICAgICAgbmVjZXNzYXJ5LiAqLwotICBRU3RyaW5nIHdpdGhTZXBhcmF0b3IoIGJv
b2wgKiBvaz0wICkgY29uc3Q7CisgIFFTdHJpbmcgd2l0aFNlcGFyYXRvciggYm9vbCB1c2VkYXNo
ID0gdHJ1ZSwgYm9vbCAqIG9rPTAgKSBjb25zdDsKIAogICAvKiogU2V0IHRoZSBzaWduYXR1cmUg
dGV4dCBhbmQgbWFyayB0aGlzIHNpZ25hdHVyZSBhcyBiZWluZyBvZgogICAgICAgImlubGluZSB0
ZXh0IiB0eXBlLiAqLwpAQCAtMjU0LDcgKzI1NCw3IEBACiAgICAgY29ycmVjdC4gU28gdXNlIHRo
aXMgbWV0aG9kIHRvIHJlY3RyZWl2ZSB0aGUgY29udGVudHMgb2YgdGhlCiAgICAgc2lnbmF0dXJl
IGZpbGUuIElmIEBwIHByb21wdCBpcyBmYWxzZSwgbm8gZXJyb3JzIHdpbGwgYmUgZGlzcGxheWVk
CiAgICAgKHVzZWZ1bCBmb3IgcmV0cmllcykuICovCi0gIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCgg
Ym9vbCAqIG9rPTApIGNvbnN0OworICBRU3RyaW5nIHNpZ25hdHVyZVRleHQoIGJvb2wgdXNlZGFz
aCA9IHRydWUsIGJvb2wgKiBvaz0wKSBjb25zdDsKIAogICAvKiogVGhlIHRyYW5zcG9ydCB0aGF0
IGlzIHNldCBmb3IgdGhpcyBpZGVudGl0eS4gVXNlZCB0byBsaW5rIGEKICAgICAgIHRyYW5zcG9y
dCB3aXRoIGFuIGlkZW50aXR5LiAqLwotLS0gbGlia3BpbWlkZW50aXRpZXMvaWRlbnRpdHkuY3Bw
ICAgICAgICAyMDA2LzExLzAyIDEwOjAzOjIxICAgICA2MDExNDkKKysrIGxpYmtwaW1pZGVudGl0
aWVzL2lkZW50aXR5LmNwcCAgICAgICAgMjAwNi8xMS8wMiAxMDowNjoyNyAgICAgNjAxMTUwCkBA
IC0xMzMsNyArMTMzLDcgQEAKICAgcmV0dXJuIFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoIGtGaWxl
VG9TdHJpbmcoIG1VcmwsIGZhbHNlICkgKTsKIH0KIAotUVN0cmluZyBTaWduYXR1cmU6OndpdGhT
ZXBhcmF0b3IoIGJvb2wgKiBvayApIGNvbnN0CitRU3RyaW5nIFNpZ25hdHVyZTo6d2l0aFNlcGFy
YXRvciggYm9vbCB1c2VkYXNoLCBib29sICogb2sgKSBjb25zdAogewogICBib29sIGludGVybmFs
T0sgPSBmYWxzZTsKICAgUVN0cmluZyBzaWduYXR1cmUgPSByYXdUZXh0KCAmaW50ZXJuYWxPSyAp
OwpAQCAtMTQyLDYgKzE0Miw3IEBACiAgICAgcmV0dXJuIFFTdHJpbmc6Om51bGw7CiAgIH0KICAg
aWYgKCBvayApICpvayA9IHRydWU7CisgIGlmICggIXVzZWRhc2ggKSByZXR1cm4gUVN0cmluZzo6
ZnJvbUxhdGluMSgiXG4iKSArPSBzaWduYXR1cmU7CiAgIGlmICggc2lnbmF0dXJlLmlzRW1wdHko
KSApIHJldHVybiBzaWduYXR1cmU7IC8vIGRvbid0IGFkZCBhIHNlcGFyYXRvciBpbiB0aGlzIGNh
c2UKICAgaWYgKCBzaWduYXR1cmUuc3RhcnRzV2l0aCggUVN0cmluZzo6ZnJvbUxhdGluMSgiLS0g
XG4iKSApICkKICAgICAvLyBhbHJlYWR5IGhhdmUgc2lnbmF0dXJlIHNlcGFyYXRvciBhdCBzdGFy
dCBvZiBzaWc6CkBAIC02MDgsMTAgKzYwOSwxMCBAQAogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVFTdHJpbmcgSWRlbnRpdHk6OnNpZ25hdHVyZVRleHQoIGJvb2wgKiBvayApIGNvbnN0CitR
U3RyaW5nIElkZW50aXR5OjpzaWduYXR1cmVUZXh0KCBib29sIHVzZWRhc2gsIGJvb2wgKiBvayAp
IGNvbnN0CiB7CiAgIGJvb2wgaW50ZXJuYWxPSyA9IGZhbHNlOwotICBRU3RyaW5nIHNpZ25hdHVy
ZVRleHQgPSBtU2lnbmF0dXJlLndpdGhTZXBhcmF0b3IoICZpbnRlcm5hbE9LICk7CisgIFFTdHJp
bmcgc2lnbmF0dXJlVGV4dCA9IG1TaWduYXR1cmUud2l0aFNlcGFyYXRvciggdXNlZGFzaCwgJmlu
dGVybmFsT0sgKTsKICAgaWYgKCBpbnRlcm5hbE9LICkgewogICAgIGlmICggb2sgKSAqb2s9dHJ1
ZTsKICAgICByZXR1cm4gc2lnbmF0dXJlVGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22013</attachid>
            <date>2007-11-07 23:42:20 +0000</date>
            <delta_ts>2007-11-13 18:09:24 +0000</delta_ts>
            <desc>trunk-tofu.patch</desc>
            <filename>trunk-tofu.patch</filename>
            <type>text/plain</type>
            <size>16832</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGtkZXBpbS9rbWFpbC9jb25maWd1cmVkaWFsb2cuY3BwCisrKyBrZGVwaW0va21haWwvY29u
ZmlndXJlZGlhbG9nLmNwcApAQCAtMjg1MCw2ICsyODUwLDI0IEBACiAgIGNvbm5lY3QoIG1BdXRv
QXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAogICAgICAgICAg
ICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CiAKKyAgbVRvcFF1b3Rl
Q2hlY2sgPQorICAgIG5ldyBRQ2hlY2tCb3goIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnByZXBl
bmRTaWduYXR1cmVJdGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbVRvcFF1b3RlQ2hlY2stPnNl
dEVuYWJsZWQoIGZhbHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbVRvcFF1b3RlQ2hlY2spOwor
ICBjb25uZWN0KCBtVG9wUXVvdGVDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAor
ICAgICAgICAgICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CisgIGNv
bm5lY3QoIG1BdXRvQXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLAorICAg
ICAgICAgICBtVG9wUXVvdGVDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wpKSApOworCisgIG1E
YXNoRGFzaENoZWNrID0KKyAgICBuZXcgUUNoZWNrQm94KCBHbG9iYWxTZXR0aW5nczo6c2VsZigp
LT5kYXNoRGFzaFNpZ25hdHVyZUl0ZW0oKS0+bGFiZWwoKSwgdGhpcyApOworICBtRGFzaERhc2hD
aGVjay0+c2V0RW5hYmxlZCggZmFsc2UgKTsKKyAgdmxheS0+YWRkV2lkZ2V0KCBtRGFzaERhc2hD
aGVjayk7CisgIGNvbm5lY3QoIG1EYXNoRGFzaENoZWNrLCBTSUdOQUwoIHN0YXRlQ2hhbmdlZChp
bnQpICksCisgICAgICAgICAgIHRoaXMsIFNMT1QoIHNsb3RFbWl0Q2hhbmdlZCggdm9pZCApICkg
KTsKKyAgY29ubmVjdCggbUF1dG9BcHBTaWduRmlsZUNoZWNrLCBTSUdOQUwodG9nZ2xlZChib29s
KSksCisgICAgICAgICAgIG1EYXNoRGFzaENoZWNrLCBTTE9UKHNldEVuYWJsZWQoYm9vbCkpICk7
CisKICAgbVNtYXJ0UXVvdGVDaGVjayA9IG5ldyBRQ2hlY2tCb3goCiAgICAgICAgICAgIEdsb2Jh
bFNldHRpbmdzOjpzZWxmKCktPnNtYXJ0UXVvdGVJdGVtKCktPmxhYmVsKCksCiAgICAgICAgICAg
IHRoaXMsICJrY2ZnX1NtYXJ0UXVvdGUiICk7CkBAIC0yOTgwLDYgKzI5OTUsOCBAQAogCiAgIG1B
dXRvQXBwU2lnbkZpbGVDaGVjay0+c2V0Q2hlY2tlZCgKICAgICAgICAgICAgR2xvYmFsU2V0dGlu
Z3M6OnNlbGYoKS0+YXV0b1RleHRTaWduYXR1cmUoKT09ImF1dG8iICk7CisgIG1Ub3BRdW90ZUNo
ZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJl
KCkgKTsKKyAgbURhc2hEYXNoQ2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxm
KCktPmRhc2hEYXNoU2lnbmF0dXJlKCkgKTsKICAgbVNtYXJ0UXVvdGVDaGVjay0+c2V0Q2hlY2tl
ZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c21hcnRRdW90ZSgpICk7CiAgIG1BdXRvUmVxdWVz
dE1ETkNoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5yZXF1ZXN0TURO
KCkgKTsKICAgbVdvcmRXcmFwQ2hlY2stPnNldENoZWNrZWQoIEdsb2JhbFNldHRpbmdzOjpzZWxm
KCktPndvcmRXcmFwKCkgKTsKQEAgLTMwMDAsNiArMzAxNywxMiBAQAogICAgIGJvb2wgc3RhdGUg
PSBjb21wb3Nlci5yZWFkQm9vbEVudHJ5KCJzaWduYXR1cmUiKTsKICAgICBtQXV0b0FwcFNpZ25G
aWxlQ2hlY2stPnNldENoZWNrZWQoIHN0YXRlICk7CiAgIH0KKyAgaWYgKCBjb21wb3Nlci5oYXNL
ZXkoICJwcmVwZW5kLXNpZ25hdHVyZSIgKSApCisgICAgbVRvcFF1b3RlQ2hlY2stPnNldENoZWNr
ZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJwcmVwZW5kLXNpZ25hdHVyZSIgKSApOworCisg
IGlmICggY29tcG9zZXIuaGFzS2V5KCAiZGFzaC1kYXNoLXNpZ25hdHVyZSIgKSApCisgICAgbURh
c2hEYXNoQ2hlY2stPnNldENoZWNrZWQoIGNvbXBvc2VyLnJlYWRCb29sRW50cnkoICJkYXNoLWRh
c2gtc2lnbmF0dXJlIiApICk7CisKICAgaWYgKCBjb21wb3Nlci5oYXNLZXkoICJzbWFydC1xdW90
ZSIgKSApCiAgICAgbVNtYXJ0UXVvdGVDaGVjay0+c2V0Q2hlY2tlZCggY29tcG9zZXIucmVhZEJv
b2xFbnRyeSggInNtYXJ0LXF1b3RlIiApICk7CiAgIGlmICggY29tcG9zZXIuaGFzS2V5KCAicmVx
dWVzdC1tZG4iICkgKQpAQCAtMzAyMiw2ICszMDQ1LDggQEAKIHZvaWQgQ29tcG9zZXJQYWdlOjpH
ZW5lcmFsVGFiOjpzYXZlKCkgewogICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5zZXRBdXRvVGV4
dFNpZ25hdHVyZSgKICAgICAgICAgIG1BdXRvQXBwU2lnbkZpbGVDaGVjay0+aXNDaGVja2VkKCkg
PyAiYXV0byIgOiAibWFudWFsIiApOworICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5zZXRQcmVw
ZW5kU2lnbmF0dXJlKCBtVG9wUXVvdGVDaGVjay0+aXNDaGVja2VkKCkpOworICBHbG9iYWxTZXR0
aW5nczo6c2VsZigpLT5zZXREYXNoRGFzaFNpZ25hdHVyZSggbURhc2hEYXNoQ2hlY2stPmlzQ2hl
Y2tlZCgpKTsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0U21hcnRRdW90ZSggbVNtYXJ0
UXVvdGVDaGVjay0+aXNDaGVja2VkKCkgKTsKICAgR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0
UmVxdWVzdE1ETiggbUF1dG9SZXF1ZXN0TUROQ2hlY2stPmlzQ2hlY2tlZCgpICk7CiAgIEdsb2Jh
bFNldHRpbmdzOjpzZWxmKCktPnNldFdvcmRXcmFwKCBtV29yZFdyYXBDaGVjay0+aXNDaGVja2Vk
KCkgKTsKLS0tIGtkZXBpbS9rbWFpbC9jb25maWd1cmVkaWFsb2dfcC5oCisrKyBrZGVwaW0va21h
aWwvY29uZmlndXJlZGlhbG9nX3AuaApAQCAtNzA0LDYgKzcwNCw4IEBACiAKIHByaXZhdGU6CiAg
IFFDaGVja0JveCAgICAgKm1BdXRvQXBwU2lnbkZpbGVDaGVjazsKKyAgUUNoZWNrQm94ICAgICAq
bVRvcFF1b3RlQ2hlY2s7CisgIFFDaGVja0JveCAgICAgKm1EYXNoRGFzaENoZWNrOwogICBRQ2hl
Y2tCb3ggICAgICptU21hcnRRdW90ZUNoZWNrOwogICBRQ2hlY2tCb3ggICAgICptQXV0b1JlcXVl
c3RNRE5DaGVjazsKICAgUUNoZWNrQm94CSptU2hvd1JlY2VudEFkZHJlc3Nlc0luQ29tcG9zZXI7
Ci0tLSBrZGVwaW0va21haWwva21haWwua2NmZworKysga2RlcGltL2ttYWlsL2ttYWlsLmtjZmcK
QEAgLTI3Myw3ICsyNzMsNyBAQAogICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KICAg
ICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iQXV0b1RleHRTaWduYXR1cmUiIHR5cGU9
IlN0cmluZyIga2V5PSJzaWduYXR1cmUiPgotICAgICAgICA8bGFiZWw+QSZhbXA7dXRvbWF0aWNh
bGx5IGFwcGVuZCBzaWduYXR1cmU8L2xhYmVsPgorICAgICAgICA8bGFiZWw+QSZhbXA7dXRvbWF0
aWNhbGx5IGluc2VydCBzaWduYXR1cmU8L2xhYmVsPgogICAgICAgICA8ZGVmYXVsdD5hdXRvPC9k
ZWZhdWx0PgogICAgICAgPC9lbnRyeT4KICAgICAgIDxlbnRyeSBuYW1lPSJTdGlja3lJZGVudGl0
eSIgdHlwZT0iQm9vbCIga2V5PSJzdGlja3ktaWRlbnRpdHkiPgpAQCAtMzY4LDYgKzM2OCwxNSBA
QAogICAgICAgICA8d2hhdHN0aGlzPkEgYmFja3VwIGNvcHkgb2YgdGhlIHRleHQgaW4gdGhlIGNv
bXBvc2VyIHdpbmRvdyBjYW4gYmUgY3JlYXRlZCByZWd1bGFybHkuIFRoZSBpbnRlcnZhbCB1c2Vk
IHRvIGNyZWF0ZSB0aGUgYmFja3VwcyBpcyBzZXQgaGVyZS4gWW91IGNhbiBkaXNhYmxlIGF1dG9z
YXZpbmcgYnkgc2V0dGluZyBpdCB0byB0aGUgdmFsdWUgMC48L3doYXRzdGhpcz4KICAgICAgICAg
PGRlZmF1bHQ+MjwvZGVmYXVsdD4KICAgICAgIDwvZW50cnk+CisgICAgICA8ZW50cnkgbmFtZT0i
UHJlcGVuZFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5PSJwcmVwZW5kLXNpZ25hdHVyZSI+Cisg
ICAgICAgIDxsYWJlbD5JbnNlcnQgc2lnbmF0dXJlIGFib3ZlIHF1b3RlZCB0ZXh0PC9sYWJlbD4K
KyAgICAgICAgPGRlZmF1bHQ+ZmFsc2U8L2RlZmF1bHQ+CisgICAgICA8L2VudHJ5PgorCisgICAg
ICA8ZW50cnkgbmFtZT0iRGFzaERhc2hTaWduYXR1cmUiIHR5cGU9IkJvb2wiIGtleT0iZGFzaC1k
YXNoLXNpZ25hdHVyZSI+CisgICAgICAgIDxsYWJlbD5QcmVwZW5kIHNlcGFyYXRvciAoLS0pIHRv
IHNpZ25hdHVyZTwvbGFiZWw+CisgICAgICAgIDxkZWZhdWx0PnRydWU8L2RlZmF1bHQ+CisgICAg
ICA8L2VudHJ5PgogICAgICAgPGVudHJ5IG5hbWU9IlJlcGx5UHJlZml4ZXMiIHR5cGU9IlN0cmlu
Z0xpc3QiIGtleT0icmVwbHktcHJlZml4ZXMiPgogICAgICAgICA8ZGVmYXVsdD5SZVxccyo6LFJl
XFxbXFxkK1xcXTosUmVcXGQrOjwvZGVmYXVsdD4KICAgICAgIDwvZW50cnk+Ci0tLSBrZGVwaW0v
a21haWwva21jb21wb3NlcnVpLnJjCisrKyBrZGVwaW0va21haWwva21jb21wb3NlcnVpLnJjCkBA
IC02Myw2ICs2Myw5IEBACiAgIDxNZW51IG5hbWU9ImF0dGFjaCIgPgogICAgPHRleHQ+JmFtcDtB
dHRhY2g8L3RleHQ+CiAgICA8QWN0aW9uIG5hbWU9ImFwcGVuZF9zaWduYXR1cmUiIC8+CisgICA8
QWN0aW9uIG5hbWU9InByZXBlbmRfc2lnbmF0dXJlIiAvPgorICAgPEFjdGlvbiBuYW1lPSJpbnNl
cnRfc2lnbmF0dXJlX2F0X2N1cnNvcl9wb3NpdGlvbiIgLz4KKyAgIDxTZXBhcmF0b3IvPgogICAg
PEFjdGlvbiBuYW1lPSJhdHRhY2hfcHVibGljX2tleSIgLz4KICAgIDxBY3Rpb24gbmFtZT0iYXR0
YWNoX215X3B1YmxpY19rZXkiIC8+CiAgICA8U2VwYXJhdG9yLz4KLS0tIGtkZXBpbS9rbWFpbC9r
bWNvbXBvc2V3aW4uY3BwCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrZGVwaW0va21h
aWwva21jb21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMTM4Niw2
ICsxMzg2LDEyIEBACiAgIGFjdGlvbiA9IG5ldyBLQWN0aW9uKCBpMThuKCJBcHBlbmQgUyZpZ25h
dHVyZSIpLCB0aGlzICk7CiAgIGFjdGlvbkNvbGxlY3Rpb24oKS0+YWRkQWN0aW9uKCAiYXBwZW5k
X3NpZ25hdHVyZSIsIGFjdGlvbiApOwogICBjb25uZWN0KCBhY3Rpb24sIFNJR05BTCh0cmlnZ2Vy
ZWQoYm9vbCkgKSwgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpKTsKKyAgYWN0aW9uID0gbmV3
IEtBY3Rpb24oIGkxOG4oIlByJmVwZW5kIFNpZ25hdHVyZSIpLCB0aGlzICk7CisgIGFjdGlvbkNv
bGxlY3Rpb24oKS0+YWRkQWN0aW9uKCAicHJlcGVuZF9zaWduYXR1cmUiLCBhY3Rpb24gKTsKKyAg
Y29ubmVjdCggYWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpICksIFNMT1Qoc2xvdFByZXBl
bmRTaWduYXR1cmUoKSkpOworICBhY3Rpb24gPSBuZXcgS0FjdGlvbiggaTE4bigiSW5zZXJ0IFNp
Z25hdHVyZSBBdCBDJnVyc29yIFBvc2l0aW9uIiksIHRoaXMgKTsKKyAgYWN0aW9uQ29sbGVjdGlv
bigpLT5hZGRBY3Rpb24oICJpbnNlcnRfc2lnbmF0dXJlX2F0X2N1cnNvcl9wb3NpdGlvbiIsIGFj
dGlvbiApOworICBjb25uZWN0KCBhY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkgKSwgU0xP
VChzbG90SW5zZXJ0U2lnbmF0dXJlQXRDdXJzb3IoKSkpOwogICBtQXR0YWNoUEsgPSBuZXcgS0Fj
dGlvbihpMThuKCJBdHRhY2ggJlB1YmxpYyBLZXkuLi4iKSwgdGhpcyk7CiAgIGFjdGlvbkNvbGxl
Y3Rpb24oKS0+YWRkQWN0aW9uKCJhdHRhY2hfcHVibGljX2tleSIsIG1BdHRhY2hQSyApOwogICBj
b25uZWN0KCBtQXR0YWNoUEssIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkgKSwgU0xPVChzbG90SW5z
ZXJ0UHVibGljS2V5KCkpKTsKQEAgLTIwNDcsNyArMjA1NSwxMiBAQAogICAgIC8vIE5vdCB1c2Vy
IGZyaWVuZHkgaWYgdGhpcyBtb2RhbCBmaWxlc2VsZXRvciBvcGVucyBiZWZvcmUgdGhlCiAgICAg
Ly8gY29tcG9zZXIuCiAgICAgLy8KLSAgICBRVGltZXI6OnNpbmdsZVNob3QoIDIwMCwgdGhpcywg
U0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgICBpZiAoIEdsb2JhbFNldHRpbmdz
OjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSApIHsKKyAgICAgICAgUVRpbWVyOjpzaW5nbGVT
aG90KCAwLCB0aGlzLCBTTE9UKHNsb3RQcmVwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgICB9IGVs
c2UgeworICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoIDAsIHRoaXMsIFNMT1Qoc2xvdEFwcGVu
ZFNpZ25hdHVyZSgpKSApOworICAgICAgfQorCiAgIH0KICAgc2V0TW9kaWZpZWQoIGlzTW9kaWZp
ZWQgKTsKIApAQCAtNDA4OCw5ICs0MDk5LDI3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHZv
aWQgS01Db21wb3NlV2luOjpzbG90QXBwZW5kU2lnbmF0dXJlKCkKIHsKKyAgICBpbnNlcnRTaWdu
YXR1cmVXcmFwcGVyKCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBv
c2VXaW46OnNsb3RQcmVwZW5kU2lnbmF0dXJlKCkKK3sKKyAgICBpbnNlcnRTaWduYXR1cmVXcmFw
cGVyKCAxICk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBvc2VXaW46
OnNsb3RJbnNlcnRTaWduYXR1cmVBdEN1cnNvcigpCit7CisgICAgaW5zZXJ0U2lnbmF0dXJlV3Jh
cHBlciggdGV4dEN1cnNvcigpLnBvc2l0aW9uKCkgKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCit2b2lkIEtNQ29tcG9zZVdpbjo6aW5zZXJ0U2lnbmF0dXJlV3JhcHBlciggaW50IHBvcyAp
Cit7CiAgIGNvbnN0IEtQSU1JZGVudGl0aWVzOjpJZGVudGl0eSAmaWRlbnQgPQogICAgIGtta2Vy
bmVsLT5pZGVudGl0eU1hbmFnZXIoKS0+aWRlbnRpdHlGb3JVb2lkT3JEZWZhdWx0KCBtSWRlbnRp
dHktPmN1cnJlbnRJZGVudGl0eSgpICk7Ci0gIG1PbGRTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJl
VGV4dCgpOwotICBtUHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24gPSBtRWRpdG9yLT5hcHBlbmRT
aWduYXR1cmUobU9sZFNpZ1RleHQsIG1QcmVzZXJ2ZVVzZXJDdXJzb3JQb3NpdGlvbik7CisgIG1P
bGRTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJlVGV4dCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+
ZGFzaERhc2hTaWduYXR1cmUoKSApOworICBtUHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24gPSBt
RWRpdG9yLT5pbnNlcnRTaWduYXR1cmUobU9sZFNpZ1RleHQsIG1QcmVzZXJ2ZVVzZXJDdXJzb3JQ
b3NpdGlvbiwgcG9zKTsKIH0KIApAQCAtNDEyNCwzNCArNDE1MywzOSBAQAogCiAgIC8vIFJlbW92
ZSB0aGUgc2lnbmF0dXJlIGZvciBub3cuCiAgIFFTdHJpbmcgc2lnOworICBRU3RyaW5nIHByZXNp
ZzsKICAgYm9vbCByZXN0b3JlID0gZmFsc2U7CiAgIGNvbnN0IEtQSU1JZGVudGl0aWVzOjpJZGVu
dGl0eSAmaWRlbnQgPQogICAgIGtta2VybmVsLT5pZGVudGl0eU1hbmFnZXIoKS0+aWRlbnRpdHlG
b3JVb2lkKCBtSWQgKTsKICAgaWYgKCAhaWRlbnQuaXNOdWxsKCkgKSB7Ci0gICAgc2lnID0gaWRl
bnQuc2lnbmF0dXJlVGV4dCgpOwotICAgIGlmICggIXNpZy5pc0VtcHR5KCkgKSB7Ci0gICAgICBp
ZiAoIHMuZW5kc1dpdGgoIHNpZyApICkgewotICAgICAgICBzLnRydW5jYXRlKCBzLmxlbmd0aCgp
IC0gc2lnLmxlbmd0aCgpICk7CisgICAgc2lnID0gaWRlbnQuc2lnbmF0dXJlVGV4dCggR2xvYmFs
U2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmUoKSApOworICAgICAgaWYgKCAhc2ln
LmlzRW1wdHkoKSAmJiBzLmZpbmQoc2lnLCAwLCB0cnVlKSAhPSAtMSApIHsKKyAgICAgICAgcHJl
c2lnID0gcy5sZWZ0KCBzLmZpbmQoc2lnLCAwLCB0cnVlKSApOworICAgICAgICBzLnJlbW92ZSgg
cy5maW5kKHNpZywgMCwgdHJ1ZSkgLSBzaWcubGVuZ3RoKCkgKTsKICAgICAgICAgcmVzdG9yZSA9
IHRydWU7CiAgICAgICB9CiAgICAgfQogICB9CiAKICAgLy8gU3F1ZWV6ZSB0YWJzIGFuZCBzcGFj
ZXMKICAgUVJlZ0V4cCBzcXVlZXplKCAiW1x0IF0rIiApOwogICBzLnJlcGxhY2UoIHNxdWVlemUs
IFFDaGFyKCAnICcgKSApOworICBpZiAoICFwcmVzaWcuaXNFbXB0eSgpICkgcHJlc2lnLnJlcGxh
Y2UoIHNxdWVlemUsIFFDaGFyKCAnICcgKSApOwogCiAgIC8vIFJlbW92ZSB0cmFpbGluZyB3aGl0
ZXNwYWNlCiAgIFFSZWdFeHAgdHJhaWxpbmcoICJcXHMrJCIgKTsKICAgcy5yZXBsYWNlKCB0cmFp
bGluZywgUUNoYXIoICdcbicgKSApOworICBpZiAoICFwcmVzaWcuaXNFbXB0eSgpICkgcHJlc2ln
LnJlcGxhY2UoIHRyYWlsaW5nLCBRQ2hhciggJ1xuJyApICk7CiAKICAgLy8gU2luZ2xlIHNwYWNl
IGxpbmVzCiAgIFFSZWdFeHAgc2luZ2xlU3BhY2UoICJbXG5dezIsfSIgKTsKICAgcy5yZXBsYWNl
KCBzaW5nbGVTcGFjZSwgUUNoYXIoICdcbicgKSApOworICBpZiAoICFwcmVzaWcuaXNFbXB0eSgp
ICkgcHJlc2lnLnJlcGxhY2UoIHNpbmdsZVNwYWNlLCBRQ2hhciggJ1xuJyApICk7CiAKICAgLy8g
UmVzdG9yZSB0aGUgc2lnbmF0dXJlCiAgIGlmICggcmVzdG9yZSApIHsKLSAgICBzLmFwcGVuZCgg
c2lnICk7CisgICAgaWYgKCAhcHJlc2lnLmlzRW1wdHkoKSApIHMuaW5zZXJ0KCBwcmVzaWcubGVu
Z3RoKCksIHNpZyApOworICAgIGVsc2Ugcy5hcHBlbmQoIHNpZyApOwogICB9CiAKICAgLy8gUHV0
IHRoZSBuZXcgdGV4dCBpbiBwbGFjZS4KQEAgLTQ0MTgsMjQgKzQ0NTIsNTQgQEAKICAgfQogCiAg
IFFTdHJpbmcgZWR0VGV4dCA9IG1FZGl0b3ItPnRleHQoKTsKLSAgYm9vbCBhcHBlbmROZXdTaWcg
PSB0cnVlOwotICAvLyB0cnkgdG8gdHJ1bmNhdGUgdGhlIG9sZCBzaWcKLSAgaWYgKCAhbU9sZFNp
Z1RleHQuaXNFbXB0eSgpICkgewotICAgIGlmICggZWR0VGV4dC5lbmRzV2l0aCggbU9sZFNpZ1Rl
eHQgKSApIHsKLSAgICAgIGVkdFRleHQudHJ1bmNhdGUoIGVkdFRleHQubGVuZ3RoKCkgLSBtT2xk
U2lnVGV4dC5sZW5ndGgoKSApOwotICAgIH0gZWxzZSB7Ci0gICAgICBhcHBlbmROZXdTaWcgPSBm
YWxzZTsKLSAgICB9Ci0gIH0KLSAgLy8gbm93IGFwcGVuZCB0aGUgbmV3IHNpZwotICBtT2xkU2ln
VGV4dCA9IGlkZW50LnNpZ25hdHVyZVRleHQoKTsKLSAgaWYgKCBhcHBlbmROZXdTaWcgKSB7Ci0g
ICAgaWYgKCAoIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSkgJiYKLSAgICAgICAgIChHbG9iYWxTZXR0
aW5nczo6c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpID09ICJhdXRvIikgKSB7Ci0gICAgICBl
ZHRUZXh0LmFwcGVuZCggbU9sZFNpZ1RleHQgKTsKLSAgICB9Ci0gICAgbUVkaXRvci0+c2V0VGV4
dCggZWR0VGV4dCApOwotICB9CisgIG1OZXdTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJlVGV4dCgg
R2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+ZGFzaERhc2hTaWduYXR1cmUoKSApOworICAvLyBpZiB0
aGUgdXNlciBoYXMgYXV0byBzaWduYXR1cmVzIGVuYWJsZWQgYW5kIGEgbmV3IHNpZywgcmVwbGFj
ZSB0aGUKKyAgLy8gY3VycmVudCBzaWcgb24gaWRlbnRpdHkgY2hhbmdlIGlmIHRoZXJlJ3MgYSBz
aWcgc2V0LCBvdGhlcndpc2UgcHJlcGVuZAorICAvLyB0aGUgbmV3IHNpZyBpZiB0aGV5IHdhbnQg
cHJlcGVuZGVkLCBvciBhcHBlbmQgb3RoZXJ3aXNlIGFuZCBmaW5hbGx5IAorICAvLyBkZWxldGUg
dGhlIHNpZyBpZiB0aGV5IGRvbid0IGhhdmUgYXV0byBzaWduYXR1cmVzIGVuYWJsZWQgb3IgaWYK
KyAgLy8gdGhlIG5ldyBzaWduYXR1cmUgaXMgZW1wdHkgYW5kIG9sZCBzaWcgaXNuJ3QgZW1wdHkK
KyAgaWYgKCAoIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmF1dG9UZXh0U2lnbmF0dXJlKCkgPT0g
ImF1dG8iICkgJiYKKyAgICAgICAhbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAgIGlmICgg
KCBlZHRUZXh0LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSAhPSAtMSApICYmICFtT2xkU2ln
VGV4dC5pc0VtcHR5KCkgKSB7CisgICAgICBlZHRUZXh0ID0gZWR0VGV4dC5yZXBsYWNlKCBlZHRU
ZXh0LmZpbmQoIG1PbGRTaWdUZXh0LCAwLCB0cnVlKSwKKyAgICAgICAgbU9sZFNpZ1RleHQubGVu
Z3RoKCksIG1OZXdTaWdUZXh0ICk7CisgICAgfSBlbHNlIHsgaWYgKCBHbG9iYWxTZXR0aW5nczo6
c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlKCkgKSB7CisgICAgICAgICAgLy8gaWYgd2UgaGF2ZSB0
cmFja2luZyBpbmZvIGFuZCBjYW4gZmluZCB0aGUgc2lnIGluIHRoZSB0ZXh0LCBwbGFjZSB0aGUK
KyAgICAgICAgICAvLyBzaWcgdGhlcmUsIG90aGVyd2lzZSBwcmVwZW5kIGl0ICh3aXRoIFxuXG4g
aWYgdGhleSd2ZSBhbHJlYWR5IHR5cGVkKQorICAgICAgICAgIGlmICggIW1UcmFja1NpZy5pc051
bGwoKSAmJiAoIGVkdFRleHQuZmluZCggbVRyYWNrU2lnLCAwLCB0cnVlKSAhPSAtMSApICkgewor
ICAgICAgICAgICAgZWR0VGV4dC5pbnNlcnQoIGVkdFRleHQuZmluZCggbVRyYWNrU2lnLCAwLCB0
cnVlKSAsIG1OZXdTaWdUZXh0ICk7CisgICAgICAgICAgICBtVHJhY2tTaWcgPSBRU3RyaW5nOjpu
dWxsOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsgaWYgKCBtVHJhY2tTaWcgPT0gIiEh
IUFQUEVORCEhISIgKQorICAgICAgICAgICAgICBlZHRUZXh0LmFwcGVuZCggbU5ld1NpZ1RleHQg
KTsKKyAgICAgICAgICAgIGVsc2UgeyBpZiAoICFlZHRUZXh0WzFdLmlzU3BhY2UoKSApCisgICAg
ICAgICAgICAgICAgZWR0VGV4dC5wcmVwZW5kKCBtTmV3U2lnVGV4dCArICdcblxuJyApICk7Cisg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlZHRUZXh0LnByZXBlbmQoIG1OZXdT
aWdUZXh0ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgZWR0VGV4dC5hcHBlbmQoIG1OZXdTaWdUZXh0ICk7CisgICAgICB9CisgICAgfQorICB9
IGVsc2UgaWYgKCAhbU9sZFNpZ1RleHQuaXNFbXB0eSgpICkgeworICAgIC8vIGlmIHN3aXRjaGlu
ZyB0byBhbiBpZGVudCB3aXRoIG5vIHNpZywgdHJhY2sgaXRzIHBvc2l0aW9uIGZvciBsYXRlciBp
biBjYXNlCisgICAgLy8gdGhlIHVzZXIgc3dpdGNoZXMgdG8gb25lIHdpdGggYSBzaWcgZm9yIGlu
dGVsbGlnZW50IHBsYWNlbWVudAorICAgIC8vIGNhdmVhdDogdGhpcyBpcyBiYXNlZCBvbiB0aGUg
YXNzdW1wdGlvbiB0aGF0IHRoZSB1c2VyIHdvbid0IGNoYW5nZQorICAgIC8vIHRoZSAyMCBjaGFy
YWN0ZXJzIGFmdGVyIHRoZSBzaWduYXR1cmUgKHNlZW1zIHJlYXNvbmFibGUgaW4gcmVwbHkvZndk
KQorICAgIGlmICggbU5ld1NpZ1RleHQuaXNFbXB0eSgpICkgeworICAgICAgLy8gb29wcywgdGhl
cmUncyBhY3R1YWxseSBub3RoaW5nIGFmdGVyIHRoZSBzaWduYXR1cmUsIGp1c3QgYXBwZW5kIGxh
dGVyCisgICAgICBpZiAoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUpICsgbU9s
ZFNpZ1RleHQubGVuZ3RoKCkgPT0gZWR0VGV4dC5sZW5ndGgoKSApCisgICAgICAgIG1UcmFja1Np
ZyA9ICIhISFBUFBFTkQhISEiOworICAgICAgZWxzZQorICAgICAgICBtVHJhY2tTaWcgPSBlZHRU
ZXh0Lm1pZCggZWR0VGV4dC5maW5kKCBtT2xkU2lnVGV4dCwgMCwgdHJ1ZSkgKworICAgICAgICAg
IG1PbGRTaWdUZXh0Lmxlbmd0aCgpLCAyMCApOworICAgIH0KKyAgICBlZHRUZXh0ID0gZWR0VGV4
dC5yZW1vdmUoIGVkdFRleHQuZmluZCggbU9sZFNpZ1RleHQsIDAsIHRydWUpLAorICAgICAgbU9s
ZFNpZ1RleHQubGVuZ3RoKCkgKTsKKyAgfQorICBpZiAoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkg
JiYgIW1OZXdTaWdUZXh0LmlzRW1wdHkoKSApIG1FZGl0b3ItPnNldFRleHQoIGVkdFRleHQgKTsK
KyAgbU9sZFNpZ1RleHQgPSBtTmV3U2lnVGV4dDsKIAogICAvLyBkaXNhYmxlIGNlcnRhaW4gYWN0
aW9ucyBpZiB0aGVyZSBpcyBubyBQR1AgdXNlciBpZGVudGl0eSBzZXQKICAgLy8gZm9yIHRoaXMg
cHJvZmlsZQotLS0ga2RlcGltL2xpYmtkZXBpbS9rbWVkaXRvci5jcHAKKysrIGtkZXBpbS9saWJr
ZGVwaW0va21lZGl0b3IuY3BwCkBAIC04NjIsMTggKzg2MiwyMyBAQAogICAvL1RPRE8KIH0KIAot
Ym9vbCBLTWVkaXRvcjo6YXBwZW5kU2lnbmF0dXJlKCBjb25zdCBRU3RyaW5nICZzaWcsIGJvb2wg
cHJlc2VydmVVc2VyQ3Vyc29yUG9zICkKK2Jvb2wgS01lZGl0b3I6Omluc2VydFNpZ25hdHVyZSgg
Y29uc3QgUVN0cmluZyAmc2lnLCBib29sIHByZXNlcnZlVXNlckN1cnNvclBvcywgaW50IHBvcyAp
CiB7CiAgIGlmICggIXNpZy5pc0VtcHR5KCkgKQogICB7CiAgICAgYm9vbCBtb2QgPSBkb2N1bWVu
dCgpLT5pc01vZGlmaWVkKCk7CiAgICAgUVRleHRDdXJzb3IgY3Vyc29yID0gdGV4dEN1cnNvcigp
OwogCiAgICAgaW50IHBvc2l0aW9uID0gY3Vyc29yLnBvc2l0aW9uKCk7Ci0gICAgY3Vyc29yLm1v
dmVQb3NpdGlvbiggUVRleHRDdXJzb3I6OkVuZCApOworICAgIC8vIGN1cnNvciBwb3NpdGlvbjog
YXBwZW5kLT5lbmQsIHByZXBlbmQmaW5zZXJ0LT5wb3MKKyAgICBpZiAoIHBvcyA9PSAwICkgY3Vy
c29yLm1vdmVQb3NpdGlvbiggUVRleHRDdXJzb3I6OkVuZCApOworICAgIGVsc2UgY3Vyc29yLnNl
dFBvc2l0aW9uKCBwb3MgKTsKICAgICBzZXRUZXh0Q3Vyc29yKCBjdXJzb3IgKTsKICAgICBpZiAo
ICFwcmVzZXJ2ZVVzZXJDdXJzb3JQb3MgKSBwb3NpdGlvbiA9IGN1cnNvci5wb3NpdGlvbigpOwot
ICAgIGluc2VydFBsYWluVGV4dCggJ1xuJyArIHNpZyApOworICAgIC8vIGlmIHdlJ3JlIGluc2Vy
dGluZyBhIHNpZ25hdHVyZSBpbnRvIHRoZSBtaWRkbGUgb2YgdGV4dCwgYXBwZW5kIFxuCisgICAg
UVN0cmluZyBjb21wb3NlVGV4dCA9IG1FZGl0b3ItPnRleHQoKTsKKyAgICBpZiAoICFjb21wb3Nl
VGV4dFtwb3MrMV0uaXNTcGFjZSgpICkgaW5zZXJ0UGxhaW5UZXh0KCAnXG4nICsgc2lnICsgJ1xu
JyApOworICAgIGVsc2UgaW5zZXJ0UGxhaW5UZXh0KCAnXG4nICsgc2lnICk7CiAKICAgICBjdXJz
b3Iuc2V0UG9zaXRpb24oIHBvc2l0aW9uICk7CiAgICAgc2V0VGV4dEN1cnNvciggY3Vyc29yICk7
Ci0tLSBrZGVwaW0vbGlia2RlcGltL2ttZWRpdG9yLmgKKysrIGtkZXBpbS9saWJrZGVwaW0va21l
ZGl0b3IuaApAQCAtODMsNyArODMsNyBAQAogICAgIGludCBsaW5lUG9zaXRpb24oKTsKICAgICBp
bnQgY29sdW1uTnVtYmVyKCk7CiAgICAgdm9pZCBzZXRDdXJzb3JQb3NpdGlvbiggaW50IGxpbmVQ
b3MsIGludCBjb2x1bW5Qb3MgKTsKLSAgICBib29sIGFwcGVuZFNpZ25hdHVyZSggY29uc3QgUVN0
cmluZyAmc2lnLCBib29sIHByZXNlcnZlVXNlckN1cnNvclBvcyA9IGZhbHNlICk7CisgICAgYm9v
bCBpbnNlcnRTaWduYXR1cmUoIGNvbnN0IFFTdHJpbmcgJnNpZywgYm9vbCBwcmVzZXJ2ZVVzZXJD
dXJzb3JQb3MgPSBmYWxzZSwgaW50IHBvcyA9IDAgKTsKIAogICBwdWJsaWMgUV9TTE9UUzoKIAot
LS0ga2RlcGltL2ttYWlsL2ttY29tcG9zZXdpbi5oCisrKyBrZGVwaW0va21haWwva21jb21wb3Nl
d2luLmgKQEAgLTM4MSw2ICszODEsMTYgQEAKICAgICB2b2lkIHNsb3RBcHBlbmRTaWduYXR1cmUo
KTsKIAogICAgIC8qKgorICAgICAqIFByZXBlbmQgc2lnbmF0dXJlIGZpbGUgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgdGV4dCBpbiB0aGUgZWRpdG9yLgorICAgICAqLworICAgIHZvaWQgc2xvdFBy
ZXBlbmRTaWduYXR1cmUoKTsKKworICAgIC8qKgorICAgICAqIEluc2VydCBzaWduYXR1cmUgZmls
ZSBhdCB0aGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSB0ZXh0IGluIHRoZSBlZGl0b3IuCisgICAg
ICovCisgICAgdm9pZCBzbG90SW5zZXJ0U2lnbmF0dXJlQXRDdXJzb3IoKTsKKworICAgIC8qKgog
ICAgICAqIEF0dGFjaCBzZW5kZXIncyBwdWJsaWMga2V5LgogICAgICAqLwogICAgIHZvaWQgc2xv
dEluc2VydE15UHVibGljS2V5KCk7CkBAIC02NTQsNiArNjY0LDEyIEBACiAgICAgICovCiAgICAg
c3RhdGljIGJvb2wgdmFsaWRhdGVBZGRyZXNzZXMoIFFXaWRnZXQgKnBhcmVudCwgY29uc3QgUVN0
cmluZyAmYWRkcmVzc2VzICk7CiAKKyAgICAvKioKKyAgICAgKiBIZWxwZXIgdG8gaW5zZXJ0IHRo
ZSBzaWduYXR1cmUgb2YgdGhlIGN1cnJlbnQgaWRlbnR5IGFyYml0cmFyaWx5CisgICAgICogaW4g
dGhlIGVkaXRvciwgY29ubmVjdGluZyBzbG90IGZ1bmN0aW9ucyB0byBLTWVkaXRvcjo6aW5zZXJ0
U2lnbmF0dXJlKCkuCisgICAgICovCisgICAgdm9pZCBpbnNlcnRTaWduYXR1cmVXcmFwcGVyKCBp
bnQgcG9zID0gMCApOworCiAgIHByaXZhdGUgc2xvdHM6CiAgICAgLyoqCiAgICAgICogQ29tcHJl
c3MgYW4gYXR0YWNoZW1udCB3aXRoIHRoZSBnaXZlbiBpbmRleApAQCAtNzQzLDYgKzc1OSw5IEBA
CiAgICAgUU1hcDxLSm9iKiwgS1VybD4gbUF0dGFjaEpvYnM7CiAgICAgS1VybDo6TGlzdCBtQXR0
YWNoRmlsZXNQZW5kaW5nOwogICAgIGludCBtQXR0YWNoRmlsZXNTZW5kOworCisgICAgUVN0cmlu
ZyBtVHJhY2tTaWc7CisgICAgUVN0cmluZyBtTmV3U2lnVGV4dDsKIAogICBwcml2YXRlOgogICAv
LyBoZWxwZXIgbWV0aG9kIGZvciBzbG90SW5zZXJ0KE15KVB1YmxpY0tleSgpCi0tLSBrZGVwaW1s
aWJzL2twaW1pZGVudGl0aWVzL2lkZW50aXR5LmgKKysrIGtkZXBpbWxpYnMva3BpbWlkZW50aXRp
ZXMvaWRlbnRpdHkuaApAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgICBjb3JyZWN0LiBTbyB1c2Ug
dGhpcyBtZXRob2QgdG8gcmVjdHJlaXZlIHRoZSBjb250ZW50cyBvZiB0aGUKICAgICAgIHNpZ25h
dHVyZSBmaWxlLiBJZiBAcCBwcm9tcHQgaXMgZmFsc2UsIG5vIGVycm9ycyB3aWxsIGJlIGRpc3Bs
YXllZAogICAgICAgKHVzZWZ1bCBmb3IgcmV0cmllcykuICovCi0gICAgICBRU3RyaW5nIHNpZ25h
dHVyZVRleHQoIGJvb2wgKm9rPTAgKSBjb25zdDsKKyAgICAgIFFTdHJpbmcgc2lnbmF0dXJlVGV4
dCggYm9vbCB1c2VkYXNoID0gdHJ1ZSwgYm9vbCAqb2s9MCApIGNvbnN0OwogCiAgICAgICAvKiog
VGhlIHRyYW5zcG9ydCB0aGF0IGlzIHNldCBmb3IgdGhpcyBpZGVudGl0eS4gVXNlZCB0byBsaW5r
IGEKICAgICAgIHRyYW5zcG9ydCB3aXRoIGFuIGlkZW50aXR5LiAqLwotLS0ga2RlcGltbGlicy9r
cGltaWRlbnRpdGllcy9zaWduYXR1cmUuaAorKysga2RlcGltbGlicy9rcGltaWRlbnRpdGllcy9z
aWduYXR1cmUuaApAQCAtODEsNyArODEsNyBAQAogCiAgICAgICAvKiogQHJldHVybiB0aGUgc2ln
bmF0dXJlIHRleHQgd2l0aCBhICItLSAiIHNlcGFyYXRvciBhZGRlZCwgaWYKICAgICAgICAgICBu
ZWNlc3NhcnkuICovCi0gICAgICBRU3RyaW5nIHdpdGhTZXBhcmF0b3IoIGJvb2wgKm9rPTAgKSBj
b25zdDsKKyAgICAgIFFTdHJpbmcgd2l0aFNlcGFyYXRvciggYm9vbCB1c2VkYXNoID0gdHJ1ZSwg
Ym9vbCAqb2s9MCApIGNvbnN0OwogCiAgICAgICAvKiogU2V0IHRoZSBzaWduYXR1cmUgdGV4dCBh
bmQgbWFyayB0aGlzIHNpZ25hdHVyZSBhcyBiZWluZyBvZgogICAgICAgICAgICJpbmxpbmUgdGV4
dCIgdHlwZS4gKi8KLS0tIGtkZXBpbWxpYnMva3BpbWlkZW50aXRpZXMvc2lnbmF0dXJlLmNwcAor
Kysga2RlcGltbGlicy9rcGltaWRlbnRpdGllcy9zaWduYXR1cmUuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAKICAgcmV0dXJuIFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoIGJhLmRhdGEoKSwgYmEuc2l6
ZSgpICk7CiB9CiAKLVFTdHJpbmcgU2lnbmF0dXJlOjp3aXRoU2VwYXJhdG9yKCBib29sICpvayAp
IGNvbnN0CitRU3RyaW5nIFNpZ25hdHVyZTo6d2l0aFNlcGFyYXRvciggYm9vbCB1c2VkYXNoLCBi
b29sICpvayApIGNvbnN0CiB7CiAgIGJvb2wgaW50ZXJuYWxPSyA9IGZhbHNlOwogICBRU3RyaW5n
IHNpZ25hdHVyZSA9IHJhd1RleHQoICZpbnRlcm5hbE9LICk7CkBAIC0xNTMsNiArMTUzLDEwIEBA
CiAgICAgcmV0dXJuIHNpZ25hdHVyZTsgLy8gZG9uJ3QgYWRkIGEgc2VwYXJhdG9yIGluIHRoaXMg
Y2FzZQogICB9CiAKKyAgaWYgKCAhdXNlZGFzaCApIHsKKyAgICByZXR1cm4gUVN0cmluZzo6ZnJv
bUxhdGluMSggIlxuIiApICs9IHNpZ25hdHVyZTsKKyAgfQorCiAgIGlmICggc2lnbmF0dXJlLnN0
YXJ0c1dpdGgoIFFTdHJpbmc6OmZyb21MYXRpbjEoICItLSBcbiIgKSApICkgewogICAgIC8vIGFs
cmVhZHkgaGF2ZSBzaWduYXR1cmUgc2VwYXJhdG9yIGF0IHN0YXJ0IG9mIHNpZzoKICAgICByZXR1
cm4gUVN0cmluZzo6ZnJvbUxhdGluMSggIlxuIiApICs9IHNpZ25hdHVyZTsKLS0tIGtkZXBpbWxp
YnMva3BpbWlkZW50aXRpZXMvaWRlbnRpdHkuY3BwCisrKyBrZGVwaW1saWJzL2twaW1pZGVudGl0
aWVzL2lkZW50aXR5LmNwcApAQCAtMjkyLDEwICsyOTIsMTAgQEAKICAgcmV0dXJuIHByb3BlcnR5
KCBRTGF0aW4xU3RyaW5nKCBzX2lkZW50aXR5ICkgKS50b1N0cmluZygpOwogfQogCi1RU3RyaW5n
IElkZW50aXR5OjpzaWduYXR1cmVUZXh0KCBib29sICpvayApIGNvbnN0CitRU3RyaW5nIElkZW50
aXR5OjpzaWduYXR1cmVUZXh0KCBib29sIHVzZWRhc2gsIGJvb2wgKm9rICkgY29uc3QKIHsKICAg
Ym9vbCBpbnRlcm5hbE9LID0gZmFsc2U7Ci0gIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCA9IG1TaWdu
YXR1cmUud2l0aFNlcGFyYXRvciggJmludGVybmFsT0sgKTsKKyAgUVN0cmluZyBzaWduYXR1cmVU
ZXh0ID0gbVNpZ25hdHVyZS53aXRoU2VwYXJhdG9yKCB1c2VkYXNoLCAmaW50ZXJuYWxPSyApOwog
ICBpZiAoIGludGVybmFsT0sgKSB7CiAgICAgaWYgKCBvayApICpvaz10cnVlOwogICAgIHJldHVy
biBzaWduYXR1cmVUZXh0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22048</attachid>
            <date>2007-11-13 18:09:24 +0000</date>
            <delta_ts>2007-11-13 18:09:24 +0000</delta_ts>
            <desc>trunk-tofu.patch</desc>
            <filename>trunk-tofu.patch</filename>
            <type>text/plain</type>
            <size>19209</size>
            <attacher name="Scott">firebrnr</attacher>
            
              <data encoding="base64">LS0tIGtkZXBpbS9rbWFpbC9jb25maWd1cmVkaWFsb2cuY3BwCisrKyBrZGVwaW0va21haWwvY29u
ZmlndXJlZGlhbG9nLmNwcApAQCAtMjg1MCw2ICsyODUwLDI2IEBACiAgIGNvbm5lY3QoIG1BdXRv
QXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5nZWQoaW50KSApLAogICAgICAgICAg
ICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQgKSApICk7CiAKKyAgbVRvcFF1b3Rl
Q2hlY2sgPQorICAgIG5ldyBRQ2hlY2tCb3goCisgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpz
ZWxmKCktPnByZXBlbmRTaWduYXR1cmVJdGVtKCktPmxhYmVsKCksIHRoaXMgKTsKKyAgbVRvcFF1
b3RlQ2hlY2stPnNldEVuYWJsZWQoIGZhbHNlICk7CisgIHZsYXktPmFkZFdpZGdldCggbVRvcFF1
b3RlQ2hlY2spOworICBjb25uZWN0KCBtVG9wUXVvdGVDaGVjaywgU0lHTkFMKCBzdGF0ZUNoYW5n
ZWQoaW50KSApLAorICAgICAgICAgICB0aGlzLCBTTE9UKCBzbG90RW1pdENoYW5nZWQoIHZvaWQg
KSApICk7CisgIGNvbm5lY3QoIG1BdXRvQXBwU2lnbkZpbGVDaGVjaywgU0lHTkFMKHRvZ2dsZWQo
Ym9vbCkpLAorICAgICAgICAgICBtVG9wUXVvdGVDaGVjaywgU0xPVChzZXRFbmFibGVkKGJvb2wp
KSApOworCisgIG1EYXNoRGFzaENoZWNrID0KKyAgICBuZXcgUUNoZWNrQm94KAorICAgICAgICAg
ICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNpZ25hdHVyZUl0ZW0oKS0+bGFiZWwo
KSwgdGhpcyApOworICBtRGFzaERhc2hDaGVjay0+c2V0RW5hYmxlZCggZmFsc2UgKTsKKyAgdmxh
eS0+YWRkV2lkZ2V0KCBtRGFzaERhc2hDaGVjayk7CisgIGNvbm5lY3QoIG1EYXNoRGFzaENoZWNr
LCBTSUdOQUwoIHN0YXRlQ2hhbmdlZChpbnQpICksCisgICAgICAgICAgIHRoaXMsIFNMT1QoIHNs
b3RFbWl0Q2hhbmdlZCggdm9pZCApICkgKTsKKyAgY29ubmVjdCggbUF1dG9BcHBTaWduRmlsZUNo
ZWNrLCBTSUdOQUwodG9nZ2xlZChib29sKSksCisgICAgICAgICAgIG1EYXNoRGFzaENoZWNrLCBT
TE9UKHNldEVuYWJsZWQoYm9vbCkpICk7CisKICAgbVNtYXJ0UXVvdGVDaGVjayA9IG5ldyBRQ2hl
Y2tCb3goCiAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNtYXJ0UXVvdGVJdGVt
KCktPmxhYmVsKCksIHRoaXMpOwogICBtU21hcnRRdW90ZUNoZWNrLT5zZXRPYmplY3ROYW1lKCAi
a2NmZ19TbWFydFF1b3RlIiApOwpAQCAtMjk4MCw2ICsyOTk3LDggQEAKIAogICBtQXV0b0FwcFNp
Z25GaWxlQ2hlY2stPnNldENoZWNrZWQoCiAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzOjpzZWxm
KCktPmF1dG9UZXh0U2lnbmF0dXJlKCk9PSJhdXRvIiApOworICBtVG9wUXVvdGVDaGVjay0+c2V0
Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICk7Cisg
IG1EYXNoRGFzaENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNo
RGFzaFNpZ25hdHVyZSgpICk7CiAgIG1TbWFydFF1b3RlQ2hlY2stPnNldENoZWNrZWQoIEdsb2Jh
bFNldHRpbmdzOjpzZWxmKCktPnNtYXJ0UXVvdGUoKSApOwogICBtQXV0b1JlcXVlc3RNRE5DaGVj
ay0+c2V0Q2hlY2tlZCggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cmVxdWVzdE1ETigpICk7CiAg
IG1Xb3JkV3JhcENoZWNrLT5zZXRDaGVja2VkKCBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT53b3Jk
V3JhcCgpICk7CkBAIC0zMDAwLDYgKzMwMTksMTAgQEAKICAgICBib29sIHN0YXRlID0gY29tcG9z
ZXIucmVhZEVudHJ5KCAic2lnbmF0dXJlIiwgZmFsc2UgKTsKICAgICBtQXV0b0FwcFNpZ25GaWxl
Q2hlY2stPnNldENoZWNrZWQoIHN0YXRlICk7CiAgIH0KKyAgaWYgKCBjb21wb3Nlci5oYXNLZXko
ICJwcmVwZW5kLXNpZ25hdHVyZSIgKSApCisgICAgbVRvcFF1b3RlQ2hlY2stPnNldENoZWNrZWQo
IGNvbXBvc2VyLnJlYWRFbnRyeSggInByZXBlbmQtc2lnbmF0dXJlIiwgZmFsc2UgKSApOworICBp
ZiAoIGNvbXBvc2VyLmhhc0tleSggImRhc2gtZGFzaC1zaWduYXR1cmUiICkgKQorICAgIG1EYXNo
RGFzaENoZWNrLT5zZXRDaGVja2VkKCBjb21wb3Nlci5yZWFkRW50cnkoICJkYXNoLWRhc2gtc2ln
bmF0dXJlIiwgZmFsc2UgKSApOwogICBpZiAoIGNvbXBvc2VyLmhhc0tleSggInNtYXJ0LXF1b3Rl
IiApICkKICAgICBtU21hcnRRdW90ZUNoZWNrLT5zZXRDaGVja2VkKCBjb21wb3Nlci5yZWFkRW50
cnkoICJzbWFydC1xdW90ZSIsIGZhbHNlICkgKTsKICAgaWYgKCBjb21wb3Nlci5oYXNLZXkoICJy
ZXF1ZXN0LW1kbiIgKSApCkBAIC0zMDIyLDYgKzMwNDUsOCBAQAogdm9pZCBDb21wb3NlclBhZ2U6
OkdlbmVyYWxUYWI6OnNhdmUoKSB7CiAgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldEF1dG9U
ZXh0U2lnbmF0dXJlKAogICAgICAgICAgbUF1dG9BcHBTaWduRmlsZUNoZWNrLT5pc0NoZWNrZWQo
KSA/ICJhdXRvIiA6ICJtYW51YWwiICk7CisgIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPnNldFBy
ZXBlbmRTaWduYXR1cmUoIG1Ub3BRdW90ZUNoZWNrLT5pc0NoZWNrZWQoKSk7CisgIEdsb2JhbFNl
dHRpbmdzOjpzZWxmKCktPnNldERhc2hEYXNoU2lnbmF0dXJlKCBtRGFzaERhc2hDaGVjay0+aXND
aGVja2VkKCkpOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5zZXRTbWFydFF1b3RlKCBtU21h
cnRRdW90ZUNoZWNrLT5pc0NoZWNrZWQoKSApOwogICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5z
ZXRSZXF1ZXN0TUROKCBtQXV0b1JlcXVlc3RNRE5DaGVjay0+aXNDaGVja2VkKCkgKTsKICAgR2xv
YmFsU2V0dGluZ3M6OnNlbGYoKS0+c2V0V29yZFdyYXAoIG1Xb3JkV3JhcENoZWNrLT5pc0NoZWNr
ZWQoKSApOwotLS0ga2RlcGltL2ttYWlsL2NvbmZpZ3VyZWRpYWxvZ19wLmgKKysrIGtkZXBpbS9r
bWFpbC9jb25maWd1cmVkaWFsb2dfcC5oCkBAIC03MDQsNiArNzA0LDggQEAKIAogcHJpdmF0ZToK
ICAgUUNoZWNrQm94ICAgICAqbUF1dG9BcHBTaWduRmlsZUNoZWNrOworICBRQ2hlY2tCb3ggICAg
ICptVG9wUXVvdGVDaGVjazsKKyAgUUNoZWNrQm94ICAgICAqbURhc2hEYXNoQ2hlY2s7CiAgIFFD
aGVja0JveCAgICAgKm1TbWFydFF1b3RlQ2hlY2s7CiAgIFFDaGVja0JveCAgICAgKm1BdXRvUmVx
dWVzdE1ETkNoZWNrOwogICBRQ2hlY2tCb3gJKm1TaG93UmVjZW50QWRkcmVzc2VzSW5Db21wb3Nl
cjsKLS0tIGtkZXBpbS9rbWFpbC9rbWFpbC5rY2ZnCisrKyBrZGVwaW0va21haWwva21haWwua2Nm
ZwpAQCAtMjczLDcgKzI3Myw3IEBACiAgICAgICAgIDxkZWZhdWx0PmZhbHNlPC9kZWZhdWx0Pgog
ICAgICAgPC9lbnRyeT4KICAgICAgIDxlbnRyeSBuYW1lPSJBdXRvVGV4dFNpZ25hdHVyZSIgdHlw
ZT0iU3RyaW5nIiBrZXk9InNpZ25hdHVyZSI+Ci0gICAgICAgIDxsYWJlbD5BJmFtcDt1dG9tYXRp
Y2FsbHkgYXBwZW5kIHNpZ25hdHVyZTwvbGFiZWw+CisgICAgICAgIDxsYWJlbD5BJmFtcDt1dG9t
YXRpY2FsbHkgaW5zZXJ0IHNpZ25hdHVyZTwvbGFiZWw+CiAgICAgICAgIDxkZWZhdWx0PmF1dG88
L2RlZmF1bHQ+CiAgICAgICA8L2VudHJ5PgogICAgICAgPGVudHJ5IG5hbWU9IlN0aWNreUlkZW50
aXR5IiB0eXBlPSJCb29sIiBrZXk9InN0aWNreS1pZGVudGl0eSI+CkBAIC0zNjgsNiArMzY4LDE1
IEBACiAgICAgICAgIDx3aGF0c3RoaXM+QSBiYWNrdXAgY29weSBvZiB0aGUgdGV4dCBpbiB0aGUg
Y29tcG9zZXIgd2luZG93IGNhbiBiZSBjcmVhdGVkIHJlZ3VsYXJseS4gVGhlIGludGVydmFsIHVz
ZWQgdG8gY3JlYXRlIHRoZSBiYWNrdXBzIGlzIHNldCBoZXJlLiBZb3UgY2FuIGRpc2FibGUgYXV0
b3NhdmluZyBieSBzZXR0aW5nIGl0IHRvIHRoZSB2YWx1ZSAwLjwvd2hhdHN0aGlzPgogICAgICAg
ICA8ZGVmYXVsdD4yPC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KKyAgICAgIDxlbnRyeSBuYW1l
PSJQcmVwZW5kU2lnbmF0dXJlIiB0eXBlPSJCb29sIiBrZXk9InByZXBlbmQtc2lnbmF0dXJlIj4K
KyAgICAgICAgPGxhYmVsPkluc2VydCBzaWduYXR1cmUgYWJvdmUgcXVvdGVkIHRleHQ8L2xhYmVs
PgorICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KKyAgICAgIDwvZW50cnk+CisKKyAg
ICAgIDxlbnRyeSBuYW1lPSJEYXNoRGFzaFNpZ25hdHVyZSIgdHlwZT0iQm9vbCIga2V5PSJkYXNo
LWRhc2gtc2lnbmF0dXJlIj4KKyAgICAgICAgPGxhYmVsPlByZXBlbmQgc2VwYXJhdG9yICgtLSkg
dG8gc2lnbmF0dXJlPC9sYWJlbD4KKyAgICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVsdD4KKyAg
ICAgIDwvZW50cnk+CiAgICAgICA8ZW50cnkgbmFtZT0iUmVwbHlQcmVmaXhlcyIgdHlwZT0iU3Ry
aW5nTGlzdCIga2V5PSJyZXBseS1wcmVmaXhlcyI+CiAgICAgICAgIDxkZWZhdWx0PlJlXFxzKjos
UmVcXFtcXGQrXFxdOixSZVxcZCs6PC9kZWZhdWx0PgogICAgICAgPC9lbnRyeT4KLS0tIGtkZXBp
bS9rbWFpbC9rbWNvbXBvc2VydWkucmMKKysrIGtkZXBpbS9rbWFpbC9rbWNvbXBvc2VydWkucmMK
QEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUga3BhcnRndWkgPjxrcGFydGd1aSB2ZXJzaW9uPSIz
OTAiIG5hbWU9ImttY29tcG9zZXIiID4KKzwhRE9DVFlQRSBrcGFydGd1aSA+PGtwYXJ0Z3VpIHZl
cnNpb249IjM5MSIgbmFtZT0ia21jb21wb3NlciIgPgogIDxNZW51QmFyPgogICA8TWVudSBub01l
cmdlPSIxIiBuYW1lPSJmaWxlIiA+CiAgICA8dGV4dD4mYW1wO01lc3NhZ2U8L3RleHQ+CkBAIC02
Myw2ICs2Myw5IEBACiAgIDxNZW51IG5hbWU9ImF0dGFjaCIgPgogICAgPHRleHQ+JmFtcDtBdHRh
Y2g8L3RleHQ+CiAgICA8QWN0aW9uIG5hbWU9ImFwcGVuZF9zaWduYXR1cmUiIC8+CisgICA8QWN0
aW9uIG5hbWU9InByZXBlbmRfc2lnbmF0dXJlIiAvPgorICAgPEFjdGlvbiBuYW1lPSJpbnNlcnRf
c2lnbmF0dXJlX2F0X2N1cnNvcl9wb3NpdGlvbiIgLz4KKyAgIDxTZXBhcmF0b3IvPgogICAgPEFj
dGlvbiBuYW1lPSJhdHRhY2hfcHVibGljX2tleSIgLz4KICAgIDxBY3Rpb24gbmFtZT0iYXR0YWNo
X215X3B1YmxpY19rZXkiIC8+CiAgICA8U2VwYXJhdG9yLz4KLS0tIGtkZXBpbS9rbWFpbC9rbWNv
bXBvc2V3aW4uY3BwCTIwMDYvMTEvMDIgMTA6MDM6MjEJNjAxMTQ5CisrKyBrZGVwaW0va21haWwv
a21jb21wb3Nld2luLmNwcAkyMDA2LzExLzAyIDEwOjA2OjI3CTYwMTE1MApAQCAtMTM4Niw2ICsx
Mzg2LDEyIEBACiAgIGFjdGlvbiA9IG5ldyBLQWN0aW9uKCBpMThuKCJBcHBlbmQgUyZpZ25hdHVy
ZSIpLCB0aGlzICk7CiAgIGFjdGlvbkNvbGxlY3Rpb24oKS0+YWRkQWN0aW9uKCAiYXBwZW5kX3Np
Z25hdHVyZSIsIGFjdGlvbiApOwogICBjb25uZWN0KCBhY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQo
Ym9vbCkgKSwgU0xPVChzbG90QXBwZW5kU2lnbmF0dXJlKCkpKTsKKyAgYWN0aW9uID0gbmV3IEtB
Y3Rpb24oIGkxOG4oIlByJmVwZW5kIFNpZ25hdHVyZSIpLCB0aGlzICk7CisgIGFjdGlvbkNvbGxl
Y3Rpb24oKS0+YWRkQWN0aW9uKCAicHJlcGVuZF9zaWduYXR1cmUiLCBhY3Rpb24gKTsKKyAgY29u
bmVjdCggYWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpICksIFNMT1Qoc2xvdFByZXBlbmRT
aWduYXR1cmUoKSkpOworICBhY3Rpb24gPSBuZXcgS0FjdGlvbiggaTE4bigiSW5zZXJ0IFNpZ25h
dHVyZSBBdCBDJnVyc29yIFBvc2l0aW9uIiksIHRoaXMgKTsKKyAgYWN0aW9uQ29sbGVjdGlvbigp
LT5hZGRBY3Rpb24oICJpbnNlcnRfc2lnbmF0dXJlX2F0X2N1cnNvcl9wb3NpdGlvbiIsIGFjdGlv
biApOworICBjb25uZWN0KCBhY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkgKSwgU0xPVChz
bG90SW5zZXJ0U2lnbmF0dXJlQXRDdXJzb3IoKSkpOwogICBtQXR0YWNoUEsgPSBuZXcgS0FjdGlv
bihpMThuKCJBdHRhY2ggJlB1YmxpYyBLZXkuLi4iKSwgdGhpcyk7CiAgIGFjdGlvbkNvbGxlY3Rp
b24oKS0+YWRkQWN0aW9uKCJhdHRhY2hfcHVibGljX2tleSIsIG1BdHRhY2hQSyApOwogICBjb25u
ZWN0KCBtQXR0YWNoUEssIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkgKSwgU0xPVChzbG90SW5zZXJ0
UHVibGljS2V5KCkpKTsKQEAgLTIwNDcsNyArMjA1NSwxMiBAQAogICAgIC8vIE5vdCB1c2VyIGZy
aWVuZHkgaWYgdGhpcyBtb2RhbCBmaWxlc2VsZXRvciBvcGVucyBiZWZvcmUgdGhlCiAgICAgLy8g
Y29tcG9zZXIuCiAgICAgLy8KLSAgICBRVGltZXI6OnNpbmdsZVNob3QoIDIwMCwgdGhpcywgU0xP
VChzbG90QXBwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgICBpZiAoIEdsb2JhbFNldHRpbmdzOjpz
ZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSApIHsKKyAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90
KCAwLCB0aGlzLCBTTE9UKHNsb3RQcmVwZW5kU2lnbmF0dXJlKCkpICk7CisgICAgICB9IGVsc2Ug
eworICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoIDAsIHRoaXMsIFNMT1Qoc2xvdEFwcGVuZFNp
Z25hdHVyZSgpKSApOworICAgICAgfQorCiAgIH0KIAogICBpZiAoIG1Nc2ctPmdldEN1cnNvclBv
cygpID4gMCApIHsKQEAgLTQwODgsMTAgKzQwOTksMjkgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogdm9pZCBLTUNvbXBvc2VXaW46OnNsb3RBcHBlbmRTaWduYXR1cmUoKQogeworICAgIGluc2Vy
dFNpZ25hdHVyZVdyYXBwZXIoIDAgKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lk
IEtNQ29tcG9zZVdpbjo6c2xvdFByZXBlbmRTaWduYXR1cmUoKQoreworICAgIGluc2VydFNpZ25h
dHVyZVdyYXBwZXIoIDEgKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIEtNQ29t
cG9zZVdpbjo6c2xvdEluc2VydFNpZ25hdHVyZUF0Q3Vyc29yKCkKK3sKKyAgICBpbnNlcnRTaWdu
YXR1cmVXcmFwcGVyKCAyICk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNv
bXBvc2VXaW46Omluc2VydFNpZ25hdHVyZVdyYXBwZXIoIGludCBwbGFjZW1lbnQgKQorewogICBj
b25zdCBLUElNSWRlbnRpdGllczo6SWRlbnRpdHkgJmlkZW50ID0KICAgICBrbWtlcm5lbC0+aWRl
bnRpdHlNYW5hZ2VyKCktPmlkZW50aXR5Rm9yVW9pZE9yRGVmYXVsdCggbUlkZW50aXR5LT5jdXJy
ZW50SWRlbnRpdHkoKSApOwotICBtT2xkU2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRleHQoKTsK
LSAgbVByZXNlcnZlVXNlckN1cnNvclBvc2l0aW9uID0gbUVkaXRvci0+YXBwZW5kU2lnbmF0dXJl
KG1PbGRTaWdUZXh0LCBtUHJlc2VydmVVc2VyQ3Vyc29yUG9zaXRpb24pOworICBtT2xkU2lnVGV4
dCA9IGlkZW50LnNpZ25hdHVyZVRleHQoIDAsIEdsb2JhbFNldHRpbmdzOjpzZWxmKCktPmRhc2hE
YXNoU2lnbmF0dXJlKCkgKTsKKyAgbVByZXNlcnZlVXNlckN1cnNvclBvc2l0aW9uID0gbUVkaXRv
ci0+aW5zZXJ0U2lnbmF0dXJlKG1PbGRTaWdUZXh0LAorICAgIG1QcmVzZXJ2ZVVzZXJDdXJzb3JQ
b3NpdGlvbiwgcGxhY2VtZW50KTsKIH0KIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDEy
NCw0NyArNDE1NCw2MyBAQAogCiAgIC8vIFJlbW92ZSB0aGUgc2lnbmF0dXJlIGZvciBub3cuCiAg
IFFTdHJpbmcgc2lnOworICBRU3RyaW5nIHByZXNpZzsKICAgYm9vbCByZXN0b3JlID0gZmFsc2U7
CiAgIGNvbnN0IEtQSU1JZGVudGl0aWVzOjpJZGVudGl0eSAmaWRlbnQgPQotICAgIGtta2VybmVs
LT5pZGVudGl0eU1hbmFnZXIoKS0+aWRlbnRpdHlGb3JVb2lkKCBtSWQgKTsKKyAgICBrbWtlcm5l
bC0+aWRlbnRpdHlNYW5hZ2VyKCktPmlkZW50aXR5Rm9yVW9pZE9yRGVmYXVsdCggbUlkICk7CiAg
IGlmICggIWlkZW50LmlzTnVsbCgpICkgewotICAgIHNpZyA9IGlkZW50LnNpZ25hdHVyZVRleHQo
KTsKLSAgICBpZiAoICFzaWcuaXNFbXB0eSgpICkgewotICAgICAgaWYgKCBzLmVuZHNXaXRoKCBz
aWcgKSApIHsKLSAgICAgICAgcy50cnVuY2F0ZSggcy5sZW5ndGgoKSAtIHNpZy5sZW5ndGgoKSAp
OworICAgIHNpZyA9IGlkZW50LnNpZ25hdHVyZVRleHQoIDAsIEdsb2JhbFNldHRpbmdzOjpzZWxm
KCktPmRhc2hEYXNoU2lnbmF0dXJlKCkgKTsKKyAgICBpZiAoICFzaWcuaXNFbXB0eSgpICYmIHMu
aW5kZXhPZihzaWcpICE9IC0xICkgeworICAgICAgcHJlc2lnID0gcy5sZWZ0KCBzLmluZGV4T2Yo
c2lnKSApOworICAgICAgcy5yZW1vdmUoIHMuaW5kZXhPZihzaWcpLCBzaWcubGVuZ3RoKCkgKTsK
KyAgICAgIHJlc3RvcmUgPSB0cnVlOwotICAgICAgICByZXN0b3JlID0gdHJ1ZTsKLSAgICAgIH0K
ICAgICB9CiAgIH0KIAogICAvLyBTcXVlZXplIHRhYnMgYW5kIHNwYWNlcwogICBRUmVnRXhwIHNx
dWVlemUoICJbXHQgXSsiICk7CiAgIHMucmVwbGFjZSggc3F1ZWV6ZSwgUUNoYXIoICcgJyApICk7
CisgIGlmICggIXByZXNpZy5pc0VtcHR5KCkgKQorICAgIHByZXNpZy5yZXBsYWNlKCBzcXVlZXpl
LCBRQ2hhciggJyAnICkgKTsKIAogICAvLyBSZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZQogICBR
UmVnRXhwIHRyYWlsaW5nKCAiXFxzKyQiICk7CiAgIHMucmVwbGFjZSggdHJhaWxpbmcsIFFDaGFy
KCAnXG4nICkgKTsKKyAgaWYgKCAhcHJlc2lnLmlzRW1wdHkoKSApCisgICAgcHJlc2lnLnJlcGxh
Y2UoIHRyYWlsaW5nLCBRQ2hhciggJ1xuJyApICk7CiAKICAgLy8gU2luZ2xlIHNwYWNlIGxpbmVz
CiAgIFFSZWdFeHAgc2luZ2xlU3BhY2UoICJbXG5dezIsfSIgKTsKICAgcy5yZXBsYWNlKCBzaW5n
bGVTcGFjZSwgUUNoYXIoICdcbicgKSApOworICBpZiAoICFwcmVzaWcuaXNFbXB0eSgpICkKKyAg
ICBwcmVzaWcucmVwbGFjZSggc2luZ2xlU3BhY2UsIFFDaGFyKCAnXG4nICkgKTsKIAogICAvLyBS
ZXN0b3JlIHRoZSBzaWduYXR1cmUKICAgaWYgKCByZXN0b3JlICkgewotICAgIHMuYXBwZW5kKCBz
aWcgKTsKKyAgICBpZiAoICFwcmVzaWcuaXNFbXB0eSgpICkKKyAgICAgIHMuaW5zZXJ0KCBwcmVz
aWcubGVuZ3RoKCksIHNpZyApOworICAgIGVsc2UgeworICAgICAgaWYgKCBHbG9iYWxTZXR0aW5n
czo6c2VsZigpLT5wcmVwZW5kU2lnbmF0dXJlKCkgKQorICAgICAgICBzLnByZXBlbmQoIHNpZyAp
OworICAgICAgZWxzZQorICAgICAgICBzLmFwcGVuZCggc2lnICk7CisgICAgfQogICB9CiAKLSAg
Ly8gUHV0IHRoZSBuZXcgdGV4dCBpbiBwbGFjZS4KLSAgLy8gVGhlIGxpbmVzIGJlbG93IGRvIG5v
dCBjbGVhciB0aGUgdW5kbyBoaXN0b3J5LCBidXQgdW5mb3J0dWF0ZWx5IGNhdXNlCi0gIC8vIHRo
ZSBzaWRlLWVmZmVjdCB0aGF0IHlvdSBuZWVkIHRvIHByZXNzIEN0cmwtWiB0d2ljZSAoZmlyc3Qg
Q3RybC1aIHdpbGwKLSAgLy8gc2hvdyBjbGVhcmVkIHRleHQgYXJlYSkgdG8gZ2V0IGJhY2sgdGhl
IG9yaWdpbmFsLCBwcmUtY2xlYW5lZCB0ZXh0LgotICAvLyBJZiB5b3UgdXNlIG1FZGl0b3ItPnNl
dFRleHQoIHMgKSB0aGVuIHRoZSB1bmRvIGhpc3RvcnkgaXMgY2xlYXJlZCBzbwotICAvLyB0aGF0
IGlzbid0IGEgZ29vZCBzb2x1dGlvbiBlaXRoZXIuCi0gIC8vIFRPRE86IGlzIFF0NCBiZXR0ZXIg
YXQgaGFuZGxpbmcgdGhlIHVuZG8gaGlzdG9yeT8/CisgIC8vIFB1dCB0aGUgbmV3IHRleHQgaW4g
cGxhY2UsIGtlZXBpbmcgdGhlIHVuZG8gaGlzdG9yeSBpbnRhY3QuCiAgIGlmICggIWN1cnNvci5o
YXNTZWxlY3Rpb24oKSApIHsKLSAgICBjdXJzb3IuY2xlYXJTZWxlY3Rpb24oKTsKKyAgICBtRWRp
dG9yLT5zZWxlY3RBbGwoKTsKICAgfQogICBtRWRpdG9yLT5pbnNlcnQoIHMgKTsKKworICBpZiAo
ICFwcmVzaWcuaXNFbXB0eSgpICkKKyAgICBtRWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbkZyb21T
dGFydCggcHJlc2lnLmxlbmd0aCgpICk7CisgIGVsc2UgeworICAgIGlmICggR2xvYmFsU2V0dGlu
Z3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVyZSgpICkKKyAgICAgIG1FZGl0b3ItPnNldEN1cnNv
clBvc2l0aW9uRnJvbVN0YXJ0KCAwICk7CisgICAgZWxzZQorICAgICAgbUVkaXRvci0+c2V0Q3Vy
c29yUG9zaXRpb25Gcm9tU3RhcnQoIHMubGVuZ3RoKCkgLSBzaWcubGVuZ3RoKCkgKTsKKyAgfQog
fQoKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ0MTksMjQgKzQ0NjUsNjQgQEAKICAgfQog
CiAgIFFTdHJpbmcgZWR0VGV4dCA9IG1FZGl0b3ItPnRleHQoKTsKLSAgYm9vbCBhcHBlbmROZXdT
aWcgPSB0cnVlOwotICAvLyB0cnkgdG8gdHJ1bmNhdGUgdGhlIG9sZCBzaWcKLSAgaWYgKCAhbU9s
ZFNpZ1RleHQuaXNFbXB0eSgpICkgewotICAgIGlmICggZWR0VGV4dC5lbmRzV2l0aCggbU9sZFNp
Z1RleHQgKSApIHsKLSAgICAgIGVkdFRleHQudHJ1bmNhdGUoIGVkdFRleHQubGVuZ3RoKCkgLSBt
T2xkU2lnVGV4dC5sZW5ndGgoKSApOwotICAgIH0gZWxzZSB7Ci0gICAgICBhcHBlbmROZXdTaWcg
PSBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgLy8gbm93IGFwcGVuZCB0aGUgbmV3IHNpZwotICBtT2xk
U2lnVGV4dCA9IGlkZW50LnNpZ25hdHVyZVRleHQoKTsKLSAgaWYgKCBhcHBlbmROZXdTaWcgKSB7
Ci0gICAgaWYgKCAoIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSkgJiYKLSAgICAgICAgIChHbG9iYWxT
ZXR0aW5nczo6c2VsZigpLT5hdXRvVGV4dFNpZ25hdHVyZSgpID09ICJhdXRvIikgKSB7Ci0gICAg
ICBlZHRUZXh0LmFwcGVuZCggbU9sZFNpZ1RleHQgKTsKLSAgICB9Ci0gICAgbUVkaXRvci0+c2V0
VGV4dCggZWR0VGV4dCApOwotICB9CisgIG1OZXdTaWdUZXh0ID0gaWRlbnQuc2lnbmF0dXJlVGV4
dCggMCwKKyAgICBHbG9iYWxTZXR0aW5nczo6c2VsZigpLT5kYXNoRGFzaFNpZ25hdHVyZSgpICk7
CisgIC8vIGlmIHRoZSB1c2VyIGhhcyBhdXRvIHNpZ25hdHVyZXMgZW5hYmxlZCBhbmQgYSBuZXcg
c2lnLCByZXBsYWNlIHRoZQorICAvLyBjdXJyZW50IHNpZyBvbiBpZGVudGl0eSBjaGFuZ2UgaWYg
dGhlcmUncyBhIHNpZyBzZXQsIG90aGVyd2lzZSBwcmVwZW5kCisgIC8vIHRoZSBuZXcgc2lnIGlm
IHRoZXkgd2FudCBwcmVwZW5kZWQsIG9yIGFwcGVuZCBvdGhlcndpc2UgYW5kIGZpbmFsbHkgCisg
IC8vIGRlbGV0ZSB0aGUgc2lnIGlmIHRoZXkgZG9uJ3QgaGF2ZSBhdXRvIHNpZ25hdHVyZXMgZW5h
YmxlZCBvciBpZgorICAvLyB0aGUgbmV3IHNpZ25hdHVyZSBpcyBlbXB0eSBhbmQgb2xkIHNpZyBp
c24ndCBlbXB0eQorICBpZiAoICggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+YXV0b1RleHRTaWdu
YXR1cmUoKSA9PSAiYXV0byIgKSAmJgorICAgICAgICFtTmV3U2lnVGV4dC5pc0VtcHR5KCkgKSB7
CisgICAgaWYgKCAoIGVkdFRleHQuaW5kZXhPZiggbU9sZFNpZ1RleHQgKSAhPSAtMSApCisgICAg
ICAgICAgJiYgIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSApIHsKKyAgICAgIGlmICggIUdsb2JhbFNl
dHRpbmdzOjpzZWxmKCktPnByZXBlbmRTaWduYXR1cmUoKSApIHsKKyAgICAgICAgZWR0VGV4dC50
cnVuY2F0ZSggZWR0VGV4dC5sZW5ndGgoKSAtIG1PbGRTaWdUZXh0Lmxlbmd0aCgpICk7CisgICAg
ICAgIGVkdFRleHQuYXBwZW5kKCBtTmV3U2lnVGV4dCApOworICAgICAgfSAKKyAgICAgIGVsc2UK
KyAgICAgICAgZWR0VGV4dCA9IGVkdFRleHQucmVwbGFjZSggZWR0VGV4dC5pbmRleE9mKG1PbGRT
aWdUZXh0KSwKKyAgICAgICAgIG1PbGRTaWdUZXh0Lmxlbmd0aCgpLCBtTmV3U2lnVGV4dCApOwor
ICAgIH0gZWxzZSB7IGlmICggR2xvYmFsU2V0dGluZ3M6OnNlbGYoKS0+cHJlcGVuZFNpZ25hdHVy
ZSgpICkgeworICAgICAgICAgIC8vIGlmIHdlIGhhdmUgdHJhY2tpbmcgaW5mbyBhbmQgY2FuIGZp
bmQgdGhlIHNpZyBpbiB0aGUgdGV4dCwKKyAgICAgICAgICAvLyBwbGFjZSB0aGUgc2lnIHRoZXJl
LCBvdGhlcndpc2UgcHJlcGVuZCBpdAorICAgICAgICAgIGlmICggIW1UcmFja1NpZy5pc051bGwo
KSAmJgorICAgICAgICAgICAgICAgKCBlZHRUZXh0LmluZGV4T2YoIG1UcmFja1NpZyApICE9IC0x
ICkgKSB7CisgICAgICAgICAgICBlZHRUZXh0Lmluc2VydCggZWR0VGV4dC5pbmRleE9mKCBtVHJh
Y2tTaWcgKSwgbU5ld1NpZ1RleHQgKTsKKyAgICAgICAgICAgIG1UcmFja1NpZyA9IFFTdHJpbmc6
Om51bGw7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeyBpZiAoIG1UcmFja1NpZyA9PSAi
ISEhQVBQRU5EISEhIiApCisgICAgICAgICAgICAgIGVkdFRleHQuYXBwZW5kKCBtTmV3U2lnVGV4
dCApOworICAgICAgICAgICAgZWxzZSB7IGlmICggIWVkdFRleHRbMV0uaXNTcGFjZSgpICkKKyAg
ICAgICAgICAgICAgICBlZHRUZXh0LnByZXBlbmQoIG1OZXdTaWdUZXh0ICsgJ1xuJyApOworICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZWR0VGV4dC5wcmVwZW5kKCBtTmV3U2ln
VGV4dCApOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAg
ICAgIGVkdFRleHQuYXBwZW5kKCBtTmV3U2lnVGV4dCApOworICAgICAgfQorICAgIH0KKyAgfSBl
bHNlIGlmICggIW1PbGRTaWdUZXh0LmlzRW1wdHkoKSApIHsKKyAgICAvLyBpZiBzd2l0Y2hpbmcg
dG8gYW4gaWRlbnQgd2l0aCBubyBzaWcsIHRyYWNrIGl0cyBwb3NpdGlvbiBmb3IgbGF0ZXIgaW4K
KyAgICAvLyBjYXNlIHRoZSB1c2VyIHN3aXRjaGVzIHRvIG9uZSB3aXRoIGEgc2lnIGZvciBpbnRl
bGxpZ2VudCBwbGFjZW1lbnQKKyAgICAvLyBjYXZlYXQ6IHRoaXMgaXMgYmFzZWQgb24gdGhlIGFz
c3VtcHRpb24gdGhhdCB0aGUgdXNlciB3b24ndCBjaGFuZ2UKKyAgICAvLyB0aGUgMjAgY2hhcmFj
dGVycyBhZnRlciB0aGUgc2lnbmF0dXJlIChzZWVtcyByZWFzb25hYmxlIGluIHJlcGx5L2Z3ZCkK
KyAgICBpZiAoIG1OZXdTaWdUZXh0LmlzRW1wdHkoKSApIHsKKyAgICAgIC8vIGlmIHRoZXJlJ3Mg
YWN0dWFsbHkgbm90aGluZyBhZnRlciB0aGUgc2lnLCBqdXN0IGFwcGVuZCBsYXRlcgorICAgICAg
aWYgKCBlZHRUZXh0LmluZGV4T2YoIG1PbGRTaWdUZXh0ICkgKyBtT2xkU2lnVGV4dC5sZW5ndGgo
KQorICAgICAgICAgICA9PSBlZHRUZXh0Lmxlbmd0aCgpICkKKyAgICAgICAgbVRyYWNrU2lnID0g
IiEhIUFQUEVORCEhISI7CisgICAgICBlbHNlCisgICAgICAgIG1UcmFja1NpZyA9IGVkdFRleHQu
bWlkKCBlZHRUZXh0LmluZGV4T2YobU9sZFNpZ1RleHQpICsKKyAgICAgICAgICBtT2xkU2lnVGV4
dC5sZW5ndGgoKSwgMjAgKTsKKyAgICB9CisgICAgZWR0VGV4dCA9IGVkdFRleHQucmVtb3ZlKCBl
ZHRUZXh0LmluZGV4T2YobU9sZFNpZ1RleHQpLAorICAgICAgbU9sZFNpZ1RleHQubGVuZ3RoKCkg
KTsKKyAgfQorICBpZiAoICFtT2xkU2lnVGV4dC5pc0VtcHR5KCkgJiYgIW1OZXdTaWdUZXh0Lmlz
RW1wdHkoKSApCisgICAgbUVkaXRvci0+c2V0VGV4dCggZWR0VGV4dCApOworICBtT2xkU2lnVGV4
dCA9IG1OZXdTaWdUZXh0OwogCiAgIC8vIGRpc2FibGUgY2VydGFpbiBhY3Rpb25zIGlmIHRoZXJl
IGlzIG5vIFBHUCB1c2VyIGlkZW50aXR5IHNldAogICAvLyBmb3IgdGhpcyBwcm9maWxlCi0tLSBr
ZGVwaW0vbGlia2RlcGltL2ttZWRpdG9yLmNwcAorKysga2RlcGltL2xpYmtkZXBpbS9rbWVkaXRv
ci5jcHAKQEAgLTkxNiwxOCArOTE2LDI3IEBACiAgIC8vVE9ETwogfQogCi1ib29sIEtNZWRpdG9y
OjphcHBlbmRTaWduYXR1cmUoIGNvbnN0IFFTdHJpbmcgJnNpZywgYm9vbCBwcmVzZXJ2ZVVzZXJD
dXJzb3JQb3MgKQorYm9vbCBLTWVkaXRvcjo6aW5zZXJ0U2lnbmF0dXJlKCBjb25zdCBRU3RyaW5n
ICZzaWcsIGJvb2wgcHJlc2VydmVVc2VyQ3Vyc29yUG9zLCBpbnQgcGxhY2VtZW50ICkKIHsKICAg
aWYgKCAhc2lnLmlzRW1wdHkoKSApCiAgIHsKICAgICBib29sIG1vZCA9IGRvY3VtZW50KCktPmlz
TW9kaWZpZWQoKTsKICAgICBRVGV4dEN1cnNvciBjdXJzb3IgPSB0ZXh0Q3Vyc29yKCk7CiAKICAg
ICBpbnQgcG9zaXRpb24gPSBjdXJzb3IucG9zaXRpb24oKTsKLSAgICBjdXJzb3IubW92ZVBvc2l0
aW9uKCBRVGV4dEN1cnNvcjo6RW5kICk7CisgICAgaWYgKCBwbGFjZW1lbnQgPT0gMCApCisgICAg
ICBjdXJzb3IubW92ZVBvc2l0aW9uKCBRVGV4dEN1cnNvcjo6RW5kICk7CisgICAgZWxzZSBpZiAo
IHBsYWNlbWVudCA9PSAxICkKKyAgICAgIGN1cnNvci5tb3ZlUG9zaXRpb24oIFFUZXh0Q3Vyc29y
OjpTdGFydCApOwogICAgIHNldFRleHRDdXJzb3IoIGN1cnNvciApOwotICAgIGlmICggIXByZXNl
cnZlVXNlckN1cnNvclBvcyApIHBvc2l0aW9uID0gY3Vyc29yLnBvc2l0aW9uKCk7Ci0gICAgaW5z
ZXJ0UGxhaW5UZXh0KCAnXG4nICsgc2lnICk7CisgICAgaWYgKCAhcHJlc2VydmVVc2VyQ3Vyc29y
UG9zICkKKyAgICAgIHBvc2l0aW9uID0gY3Vyc29yLnBvc2l0aW9uKCk7CisgICAgZWxzZQorICAg
ICAgcG9zaXRpb24gKz0gc2lnLmxlbmd0aCgpOworICAgIGlmICggcGxhY2VtZW50ID09IDIgKQor
ICAgICAgaW5zZXJ0UGxhaW5UZXh0KCBzaWcgKyAnXG4nICk7CisgICAgZWxzZQorICAgICAgaW5z
ZXJ0UGxhaW5UZXh0KCBzaWcgKTsKIAogICAgIGN1cnNvci5zZXRQb3NpdGlvbiggcG9zaXRpb24g
KTsKICAgICBzZXRUZXh0Q3Vyc29yKCBjdXJzb3IgKTsKLS0tIGtkZXBpbS9saWJrZGVwaW0va21l
ZGl0b3IuaAorKysga2RlcGltL2xpYmtkZXBpbS9rbWVkaXRvci5oCkBAIC04NSw3ICs4NSw3IEBA
CiAgICAgaW50IGxpbmVQb3NpdGlvbigpOwogICAgIGludCBjb2x1bW5OdW1iZXIoKTsKICAgICB2
b2lkIHNldEN1cnNvclBvc2l0aW9uKCBpbnQgbGluZVBvcywgaW50IGNvbHVtblBvcyApOwotICAg
IGJvb2wgYXBwZW5kU2lnbmF0dXJlKCBjb25zdCBRU3RyaW5nICZzaWcsIGJvb2wgcHJlc2VydmVV
c2VyQ3Vyc29yUG9zID0gZmFsc2UgKTsKKyAgICBib29sIGluc2VydFNpZ25hdHVyZSggY29uc3Qg
UVN0cmluZyAmc2lnLCBib29sIHByZXNlcnZlVXNlckN1cnNvclBvcyA9IGZhbHNlLCBpbnQgcGxh
Y2VtZW50ID0gMCApOwogCiAgIHB1YmxpYyBRX1NMT1RTOgogCi0tLSBrZGVwaW0va21haWwva21j
b21wb3Nld2luLmgKKysrIGtkZXBpbS9rbWFpbC9rbWNvbXBvc2V3aW4uaApAQCAtMzgxLDYgKzM4
MSwxNiBAQAogICAgIHZvaWQgc2xvdEFwcGVuZFNpZ25hdHVyZSgpOwogCiAgICAgLyoqCisgICAg
ICogUHJlcGVuZCBzaWduYXR1cmUgZmlsZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IGlu
IHRoZSBlZGl0b3IuCisgICAgICovCisgICAgdm9pZCBzbG90UHJlcGVuZFNpZ25hdHVyZSgpOwor
CisgICAgLyoqCisgICAgICogSW5zZXJ0IHNpZ25hdHVyZSBmaWxlIGF0IHRoZSBjdXJzb3IgcG9z
aXRpb24gb2YgdGhlIHRleHQgaW4gdGhlIGVkaXRvci4KKyAgICAgKi8KKyAgICB2b2lkIHNsb3RJ
bnNlcnRTaWduYXR1cmVBdEN1cnNvcigpOworCisgICAgLyoqCiAgICAgICogQXR0YWNoIHNlbmRl
cidzIHB1YmxpYyBrZXkuCiAgICAgICovCiAgICAgdm9pZCBzbG90SW5zZXJ0TXlQdWJsaWNLZXko
KTsKQEAgLTY1NCw2ICs2NjQsMTMgQEAKICAgICAgKi8KICAgICBzdGF0aWMgYm9vbCB2YWxpZGF0
ZUFkZHJlc3NlcyggUVdpZGdldCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZhZGRyZXNzZXMgKTsK
IAorICAgIC8qKgorICAgICAqIEhlbHBlciB0byBpbnNlcnQgdGhlIHNpZ25hdHVyZSBvZiB0aGUg
Y3VycmVudCBpZGVudHkgYXJiaXRyYXJpbHkKKyAgICAgKiBpbiB0aGUgZWRpdG9yLCBjb25uZWN0
aW5nIHNsb3QgZnVuY3Rpb25zIHRvIEtNZWRpdG9yOjppbnNlcnRTaWduYXR1cmUoKS4KKyAgICAg
KiAwID0gYXBwZW5kLCAxID0gcHJlcGVuZCwgMiA9IGluc2VydCBhdCBjdXJzb3IgcG9zaXRpb24K
KyAgICAgKi8KKyAgICB2b2lkIGluc2VydFNpZ25hdHVyZVdyYXBwZXIoIGludCBwbGFjZW1lbnQg
PSAwICk7CisKICAgcHJpdmF0ZSBzbG90czoKICAgICAvKioKICAgICAgKiBDb21wcmVzcyBhbiBh
dHRhY2hlbW50IHdpdGggdGhlIGdpdmVuIGluZGV4CkBAIC03NDMsNiArNzYwLDkgQEAKICAgICBR
TWFwPEtKb2IqLCBLVXJsPiBtQXR0YWNoSm9iczsKICAgICBLVXJsOjpMaXN0IG1BdHRhY2hGaWxl
c1BlbmRpbmc7CiAgICAgaW50IG1BdHRhY2hGaWxlc1NlbmQ7CisKKyAgICBRU3RyaW5nIG1UcmFj
a1NpZzsKKyAgICBRU3RyaW5nIG1OZXdTaWdUZXh0OwogCiAgIHByaXZhdGU6CiAgIC8vIGhlbHBl
ciBtZXRob2QgZm9yIHNsb3RJbnNlcnQoTXkpUHVibGljS2V5KCkKLS0tIGtkZXBpbS9rbm9kZS9r
bmNvbXBvc2VyLmNwcAorKysga2RlcGltL2tub2RlL2tuY29tcG9zZXIuY3BwCkBAIC0xMTE4LDcg
KzExMTgsNyBAQAogCiB2b2lkIEtOQ29tcG9zZXI6OnNsb3RBcHBlbmRTaWcoKQogewotICB2X2ll
dy0+ZV9kaXQtPmFwcGVuZFNpZ25hdHVyZShzX2lnbmF0dXJlKTsKKyAgdl9pZXctPmVfZGl0LT5p
bnNlcnRTaWduYXR1cmUoc19pZ25hdHVyZSk7CiB9CiAKIAotLS0ga2RlcGltbGlicy9rcGltaWRl
bnRpdGllcy9zaWduYXR1cmUuY3BwCisrKyBrZGVwaW1saWJzL2twaW1pZGVudGl0aWVzL3NpZ25h
dHVyZS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQAogCiAgIGlmICggc2lnbmF0dXJlLnN0YXJ0c1dp
dGgoIFFTdHJpbmc6OmZyb21MYXRpbjEoICItLSBcbiIgKSApICkgewogICAgIC8vIGFscmVhZHkg
aGF2ZSBzaWduYXR1cmUgc2VwYXJhdG9yIGF0IHN0YXJ0IG9mIHNpZzoKLSAgICByZXR1cm4gUVN0
cmluZzo6ZnJvbUxhdGluMSggIlxuIiApICs9IHNpZ25hdHVyZTsKKyAgICByZXR1cm4gUVN0cmlu
Zzo6ZnJvbUxhdGluMSggIlxuIiApICsgc2lnbmF0dXJlOwogICB9IGVsc2UgaWYgKCBzaWduYXR1
cmUuaW5kZXhPZiggUVN0cmluZzo6ZnJvbUxhdGluMSggIlxuLS0gXG4iICkgKSAhPSAtMSApIHsK
ICAgICAvLyBhbHJlYWR5IGhhdmUgc2lnbmF0dXJlIHNlcGFyYXRvciBpbnNpZGUgc2lnOyBkb24n
dCBwcmVwZW5kICdcbicKICAgICAvLyB0byBpbXByb3ZlIGFidXNpbmcgc2lnbmF0dXJlcyBhcyB0
ZW1wbGF0ZXM6Ci0tLSBrZGVwaW1saWJzL2twaW1pZGVudGl0aWVzL2lkZW50aXR5LmNwcAorKysg
a2RlcGltbGlicy9rcGltaWRlbnRpdGllcy9pZGVudGl0eS5jcHAKQEAgLTI5NCwzMCArMjk0LDE2
IEBACiAKIFFTdHJpbmcgSWRlbnRpdHk6OnNpZ25hdHVyZVRleHQoIGJvb2wgKm9rICkgY29uc3QK
IHsKLSAgYm9vbCBpbnRlcm5hbE9LID0gZmFsc2U7Ci0gIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCA9
IG1TaWduYXR1cmUud2l0aFNlcGFyYXRvciggJmludGVybmFsT0sgKTsKLSAgaWYgKCBpbnRlcm5h
bE9LICkgewotICAgIGlmICggb2sgKSB7Ci0gICAgICAqb2sgPSB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gc2lnbmF0dXJlVGV4dDsKLSAgfQotCi0gIC8vIE9LLCBoZXJlIGNvbWVzIHRoZSBmdW5u
eSBwYXJ0LiBUaGUgY2FsbCB0bwotICAvLyBTaWduYXR1cmU6OndpdGhTZXBhcmF0b3IoKSBmYWls
ZWQsIHNvIHdlIHNob3VsZCBwcm9iYWJseSBmaXggdGhlCi0gIC8vIGNhdXNlOgotICBpZiAoIG9r
ICkgewotICAgICpvayA9IGZhbHNlOwotICB9Ci0gIHJldHVybiBRU3RyaW5nKCk7Ci0KLSNpZiAw
IC8vIFRPRE86IGVycm9yIGhhbmRsaW5nCi0gIGlmICggbVNpZ25hdHVyZUZpbGUuZW5kc1dpdGgo
ICd8JyApICkgewotICB9IGVsc2UgewotICB9Ci0jZW5kaWYKLQotICByZXR1cm4gUVN0cmluZygp
OworICByZXR1cm4gbVNpZ25hdHVyZS53aXRoU2VwYXJhdG9yKCBvayApOworfQorCitRU3RyaW5n
IElkZW50aXR5OjpzaWduYXR1cmVUZXh0KCBib29sICpvaywgYm9vbCBhZGRTZXBhcmF0b3IgKSBj
b25zdAoreworICAvLyBlaXRoZXIgd2F5IHRoZSBzaWdudHVyZSBpcyByZXR1cm5lZCB3aXRoIG9u
ZSBwcmVwZW5kZWQgXG4KKyAgaWYoIGFkZFNlcGFyYXRvciApCisgICAgcmV0dXJuIG1TaWduYXR1
cmUud2l0aFNlcGFyYXRvciggb2sgKTsKKyAgZWxzZQorICAgIHJldHVybiBRU3RyaW5nOjpmcm9t
TGF0aW4xKCAiXG4iICkgKyBtU2lnbmF0dXJlLnJhd1RleHQoIG9rICk7CiB9CiAKIGJvb2wgSWRl
bnRpdHk6OmlzRGVmYXVsdCgpIGNvbnN0Ci0tLSBrZGVwaW1saWJzL2twaW1pZGVudGl0aWVzL2lk
ZW50aXR5LmgKKysrIGtkZXBpbWxpYnMva3BpbWlkZW50aXRpZXMvaWRlbnRpdHkuaApAQCAtMTgx
LDEyICsxODEsMTMgQEAKICAgICAgIHZvaWQgc2V0U2lnbmF0dXJlKCBjb25zdCBTaWduYXR1cmUg
JnNpZyApOwogICAgICAgU2lnbmF0dXJlICZzaWduYXR1cmUoKTsgLyogX25vdF8gY29uc3QhICov
CiAKLSAgICAgIC8qKiBSZXR1cm5zIHRoZSBzaWduYXR1cmUuIFRoaXMgbWV0aG9kIGFsc28gdGFr
ZXMgY2FyZSBvZiBzcGVjaWFsCi0gICAgICBzaWduYXR1cmUgZmlsZXMgdGhhdCBhcmUgc2hlbGwg
c2NyaXB0cyBhbmQgaGFuZGxlcyB0aGVtCi0gICAgICBjb3JyZWN0LiBTbyB1c2UgdGhpcyBtZXRo
b2QgdG8gcmVjdHJlaXZlIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgIHNpZ25hdHVyZSBmaWxl
LiBJZiBAcCBwcm9tcHQgaXMgZmFsc2UsIG5vIGVycm9ycyB3aWxsIGJlIGRpc3BsYXllZAotICAg
ICAgKHVzZWZ1bCBmb3IgcmV0cmllcykuICovCisgICAgICAvKiogUmV0dXJucyB0aGUgc2lnbmF0
dXJlIHdpdGggJ1xuLS0gXG4nIHByZXBlbmRlZCB0byBpdCBpZiBpdCBpcyBub3QKKyAgICAgIHBy
ZXNlbnQgYWxyZWFkeS4gKi8KICAgICAgIFFTdHJpbmcgc2lnbmF0dXJlVGV4dCggYm9vbCAqb2s9
MCApIGNvbnN0OworCisgICAgICAvKiogUmV0dXJucyB0aGUgc2lnbmF0dXJlIHdpdGggJ1xuLS0g
XG4nIHByZXBlbmRlZCB0byBpdCBpZiB0aGUgdXNlcgorICAgICAgd2FudHMgaXQgKGp1c3QgJ1xu
JyBvdGhlcndpc2UpIGFuZCBpZiBpdCBpcyBub3QgYWxyZWFkeSBwcmVzZW50LiAqLworICAgICAg
UVN0cmluZyBzaWduYXR1cmVUZXh0KCBib29sICpvaywgYm9vbCBhZGRTZXBhcmF0b3IgKSBjb25z
dDsKIAogICAgICAgLyoqIFRoZSB0cmFuc3BvcnQgdGhhdCBpcyBzZXQgZm9yIHRoaXMgaWRlbnRp
dHkuIFVzZWQgdG8gbGluayBhCiAgICAgICB0cmFuc3BvcnQgd2l0aCBhbiBpZGVudGl0eS4gKi8K
</data>

          </attachment>
      

    </bug>

</bugzilla>