From ge@gse.nl Tue Oct  7 19:55:09 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id
	h97Ht9s9024987; Tue, 7 Oct 2003 19:55:09 +0200
Received: from smtpzilla2.xs4all.nl (smtpzilla2.xs4all.nl [194.109.127.138])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h97Ht9gh017578;
	Tue, 7 Oct 2003 19:55:09 +0200
Received: from gsep1 (geldorp.xs4all.nl [194.109.161.161])
	by smtpzilla2.xs4all.nl (8.12.9/8.12.9) with ESMTP id h97HsdOK083384;
	Tue, 7 Oct 2003 19:54:39 +0200 (CEST)
From: "Ge van Geldorp" <ge@gse.nl>
To: <ros-kernel@reactos.com>, <ros-general@reactos.com>
Date: Tue, 7 Oct 2003 19:54:38 +0200
Message-ID: <00c201c38cfc$14075d20$0a01a8c0@gse.local>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.2616
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Cc: 
Subject: [ros-kernel] Mailing lists switched over
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2003 17:55:10 -0000

The ros mailing lists are now switched over to the new reactos.com box.


From jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net Tue Oct  7 21:16:04 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h97JG3s9026255
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:16:04 +0200
Received: from dsl-64-217-116-74.dsl.hstntx.swbell.net (root@[64.217.116.74])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id
	h97JG2gh017612
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:16:03 +0200
Received: from adsl-64-217-116-74.dsl.hstntx.swbell.net
	(adsl-64-217-116-73.dsl.hstntx.swbell.net [64.217.116.73]) by Tue,
	7 Oct 2003 19:13:21 GMTdsl-64-217-116-74.dsl.hstntx.swbell.net
	(8.9.3/8.9.3) with ESMTP id TAA00384
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 19:13:21 GMT
Message-ID: <3F831050.3080505@adsl-64-217-116-74.dsl.hstntx.swbell.net>
Date: Tue, 07 Oct 2003 19:13:20 +0000
From: James Tabor <jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net>
User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/20021016
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: ros-kernel@reactos.com
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Subject: [ros-kernel] Explorer Compile Error with Linux
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2003 19:16:04 -0000

Hi!
I'm getting this now? It has been more than four weeks since I compiled the
current Explorer from the cvs.
Thanks
James

make
i386-mingw32-g++ -fexceptions -Os -DNDEBUG -DWIN32 -D_ROS_ -Wall -D_WIN32_IE=0x0501
-D_WIN32_WINNT=0x0501 -I../../../include/wine -I./ -I./ -pipe -march=i386 -D_M_IX86 -c
utility/shellclasses.cpp -o shellclasses.o
In file included from utility/shellclasses.cpp:32:
utility/shellclasses.h: In member function `const TCHAR*
     COMException::ErrorMessage() const':
utility/shellclasses.h:80: warning: unsigned int format, long int arg (arg 3)
utility/shellclasses.h: At global scope:
utility/shellclasses.h:407: type specifier omitted for parameter `SHGDNF'
utility/shellclasses.h:407: parse error before `=' token
utility/shellclasses.h:424: type specifier omitted for parameter `SHGDNF'
utility/shellclasses.h:424: parse error before `)' token
utility/shellclasses.cpp:137: type specifier omitted for parameter `SHGDNF'
utility/shellclasses.cpp:137: parse error before `)' token
utility/shellclasses.cpp: In function `HRESULT name_from_pidl(...)':
utility/shellclasses.cpp:141: `folder' undeclared (first use this function)
utility/shellclasses.cpp:141: (Each undeclared identifier is reported only once
     for each function it appears in.)
utility/shellclasses.cpp:141: `pidl' undeclared (first use this function)
utility/shellclasses.cpp:141: `flags' undeclared (first use this function)
utility/shellclasses.cpp:144: `buffer' undeclared (first use this function)
utility/shellclasses.cpp:144: `len' undeclared (first use this function)
utility/shellclasses.cpp: At global scope:
utility/shellclasses.cpp:260: type specifier omitted for parameter `SHGDNF'
utility/shellclasses.cpp:260: parse error before `)' token
make: *** [shellclasses.o] Error 1



From gerard.gatineau@laposte.net Tue Oct  7 21:46:24 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h97JkNs9026669
	for <Ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:46:23 +0200
Received: from mx.laposte.net (mx.laposte.net [213.30.181.11])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h97JkNgh017726
	for <Ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:46:23 +0200
Received: from laposte.net (172.183.209.24) by mx.laposte.net (6.0.053)
	(authenticated as gerard.gatineau@laposte.net)
	id 3F4B3BA400EE0826 for Ros-kernel@reactos.com;
	Tue, 7 Oct 2003 21:45:04 +0200
Message-ID: <3F8317A5.10600@laposte.net>
Date: Tue, 07 Oct 2003 21:44:37 +0200
From: gge <gerard.gatineau@laposte.net>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
	rv:1.3) Gecko/20030312
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Ros-kernel@reactos.com
References: <200310061830.h96IUuF10475@mok.lvcm.com>
In-Reply-To: <200310061830.h96IUuF10475@mok.lvcm.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: 
Subject: [ros-kernel] Re: CVS Update: reactos - BOOT Reactos OK (ndis
	loading problem)
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2003 19:46:24 -0000

navaraf@mok.lvcm.com wrote:

>CVSROOT:	/CVS/ReactOS
>Module name:	reactos
>Repository:	./
>Changes by:	navaraf@mok.lvcm.com	03/10/06 11:30:54
>
>Modified files:
>	./: bootc.lst 
>
>Log message:
>	Added system32\\drivers\\ndis.sys as it's a boot start driver.
>
>
>  
>
The reactos boot is successful after an update of my local CVS treee and 
built a new reactos module ,  to take into account this modification.

Thanks
Gerard



From martin-fuchs@gmx.net Tue Oct  7 21:58:48 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h97Jwms9026809
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:58:48 +0200
Received: from mail.gmx.net (mail.gmx.net [213.165.64.20])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with SMTP id h97Jwlgh014898
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:58:47 +0200
Received: (qmail 17946 invoked by uid 65534); 7 Oct 2003 19:57:41 -0000
Received: from p3EE2D2F4.dip0.t-ipconnect.de (EHLO
	p3EE2D2F4.dip0.t-ipconnect.de) (62.226.210.244)
	by mail.gmx.net (mp009) with SMTP; 07 Oct 2003 21:57:41 +0200
X-Authenticated: #3470264
From: Martin Fuchs <martin-fuchs@gmx.net>
To: ReactOS General List <ros-kernel@reactos.com>
Subject: Re: [ros-kernel] Explorer Compile Error with Linux
Date: Tue, 7 Oct 2003 21:57:43 +0200
User-Agent: KMail/1.5.1
References: <3F831050.3080505@adsl-64-217-116-74.dsl.hstntx.swbell.net>
In-Reply-To: <3F831050.3080505@adsl-64-217-116-74.dsl.hstntx.swbell.net>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200310072157.43066.martin-fuchs@gmx.net>
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2003 19:58:48 -0000

On Tue 7. October 2003 21:13, James Tabor wrote:
> Hi!
> I'm getting this now? It has been more than four weeks since I compiled the
> current Explorer from the cvs.
> Thanks
> James

Your compiler complains about not understanding 'SHGDNF'. I guess, you should 
install. See also the FAQ page at http://www.sky.franken.de/explorer/ .


> make
> i386-mingw32-g++ -fexceptions -Os -DNDEBUG -DWIN32 -D_ROS_ -Wall
> -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -I../../../include/wine -I./ -I./
> -pipe -march=i386 -D_M_IX86 -c utility/shellclasses.cpp -o shellclasses.o
> In file included from utility/shellclasses.cpp:32:
> utility/shellclasses.h: In member function `const TCHAR*
>      COMException::ErrorMessage() const':
> utility/shellclasses.h:80: warning: unsigned int format, long int arg (arg
> 3) utility/shellclasses.h: At global scope:
> utility/shellclasses.h:407: type specifier omitted for parameter `SHGDNF'
> utility/shellclasses.h:407: parse error before `=' token
> utility/shellclasses.h:424: type specifier omitted for parameter `SHGDNF'
> utility/shellclasses.h:424: parse error before `)' token
> utility/shellclasses.cpp:137: type specifier omitted for parameter `SHGDNF'
> utility/shellclasses.cpp:137: parse error before `)' token
> utility/shellclasses.cpp: In function `HRESULT name_from_pidl(...)':
> utility/shellclasses.cpp:141: `folder' undeclared (first use this function)
> utility/shellclasses.cpp:141: (Each undeclared identifier is reported only
> once for each function it appears in.)
> utility/shellclasses.cpp:141: `pidl' undeclared (first use this function)
> utility/shellclasses.cpp:141: `flags' undeclared (first use this function)
> utility/shellclasses.cpp:144: `buffer' undeclared (first use this function)
> utility/shellclasses.cpp:144: `len' undeclared (first use this function)
> utility/shellclasses.cpp: At global scope:
> utility/shellclasses.cpp:260: type specifier omitted for parameter `SHGDNF'
> utility/shellclasses.cpp:260: parse error before `)' token
> make: *** [shellclasses.o] Error 1


-- 
Martin Fuchs
martin-fuchs@gmx.net

From steven_ed4153@yahoo.com Tue Oct  7 22:22:46 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h97KMks9027085
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 22:22:46 +0200
Received: from web21106.mail.yahoo.com (web21106.mail.yahoo.com
	[216.136.227.108])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with SMTP id h97KMjgh017672
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 22:22:46 +0200
Message-ID: <20031007202237.83269.qmail@web21106.mail.yahoo.com>
Received: from [66.83.186.125] by web21106.mail.yahoo.com via HTTP;
	Tue, 07 Oct 2003 13:22:37 PDT
Date: Tue, 7 Oct 2003 13:22:37 -0700 (PDT)
From: Steven Edwards <steven_ed4153@yahoo.com>
To: wine-devel@winehq.com, ros-kernel@reactos.com
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Cc: 
Subject: [ros-kernel] GDI and DirectX test suite
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2003 20:22:47 -0000

Hello,
I have post a collection of tests with source code for the GDI and
DirectDraw 7 interfaces at 
http://mail.gleneagle.net/sedwards/gdi/

The authors of the Windows2000 API Blackbook have aggreed to license
the tests as public domain with a request for advertising. 

The ReactOS project has already started using these tests to help in
our implementation and they may make a good test for WINE and Winelib.

Thanks
Steven

__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

From jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net Tue Oct  7 23:29:24 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h97LTOs9027807
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 23:29:24 +0200
Received: from dsl-64-217-116-74.dsl.hstntx.swbell.net (root@[64.217.116.74])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id
	h97LTNgh014854
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 23:29:23 +0200
Received: from adsl-64-217-116-74.dsl.hstntx.swbell.net
	(adsl-64-217-116-73.dsl.hstntx.swbell.net [64.217.116.73]) by Tue,
	7 Oct 2003 21:28:41 GMTdsl-64-217-116-74.dsl.hstntx.swbell.net
	(8.9.3/8.9.3) with ESMTP id VAA00684
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 21:28:41 GMT
Message-ID: <3F833007.9020802@adsl-64-217-116-74.dsl.hstntx.swbell.net>
Date: Tue, 07 Oct 2003 21:28:39 +0000
From: James Tabor <jimtabor@adsl-64-217-116-74.dsl.hstntx.swbell.net>
User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2b) Gecko/20021016
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: ReactOS General List <ros-kernel@reactos.com>
Subject: Re: [ros-kernel] Explorer Compile Error with Linux
References: <3F831050.3080505@adsl-64-217-116-74.dsl.hstntx.swbell.net>
	<200310072157.43066.martin-fuchs@gmx.net>
In-Reply-To: <3F831050.3080505@adsl-64-217-116-74.dsl.hstntx.swbell.net>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2003 21:29:24 -0000

Martin Fuchs wrote:

>
> Your compiler complains about not understanding 'SHGDNF'. I guess, you should
> install. See also the FAQ page at http://www.sky.franken.de/explorer/ .
>
Wow!
This looks nice!
Thanks,
James


From vizzini@plasmic.com Wed Oct  8 02:39:42 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h980dgs9029944
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 02:39:42 +0200
Received: from plasmir.plasmic.com (ident@plasmic.com [209.242.113.80])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h980dfgh017604
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 02:39:42 +0200
Received: from CPE-65-30-43-113.kc.rr.com (CPE-65-30-43-113.kc.rr.com
	[65.30.43.113])
	by plasmir.plasmic.com (8.12.3/8.12.3/Debian-6.6) with ESMTP id
	h980dhAG017864
	for <ros-kernel@reactos.com>; Tue, 7 Oct 2003 19:39:43 -0500
From: Vizzini <vizzini@plasmic.com>
To: ros-kernel@reactos.com
Content-Type: text/plain
Message-Id: <1065573473.12800.36.camel@bilbo.plasmic.com>
Mime-Version: 1.0
X-Mailer: Ximian Evolution 1.4.5 
Date: Tue, 07 Oct 2003 19:37:53 -0500
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, hits=0.0 required=5.0 tests=none autolearn=no version=2.60
X-Spam-Checker-Version: SpamAssassin 2.60 (1.212-2003-09-23-exp) on plasmir
Subject: [ros-kernel] cygwin gdb
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 00:39:43 -0000

I just had a very unfortunate thing happen to me:  cygwin auto-upgraded
my gdb, and now I can't get it to connect to my vmware for kernel
debugging ("COM6 is not a typewriter").

Anyway, I'm sure I'll figure it out after spending way too much time on
it... but I thought I might warn others in case anyone else uses this
setup.

 -Vizzini



From johol777@student.liu.se Wed Oct  8 09:05:53 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h9875rs9032576
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 09:05:53 +0200
Received: from xanadu.unit.liu.se (xanadu.unit.liu.se [130.236.230.147])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h9875qgh029000
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 09:05:52 +0200
Received: by xanadu.unit.liu.se (Postfix, from userid 102)
	id E00AA94C91; Wed,  8 Oct 2003 09:05:21 +0200 (MEST)
Received: from liu.se (camelot.unit.liu.se [130.236.230.139])
	by xanadu.unit.liu.se (Postfix) with ESMTP id AF6B24D597
	for <ros-kernel@reactos.com>; Wed,  8 Oct 2003 09:05:20 +0200 (MEST)
Received: from [81.225.48.200] by mu.unit.liu.se (mshttpd); Wed, 08 Oct
	2003 09:05:20 +0200
From: Johannes Olofsson <johol777@student.liu.se>
To: ros-kernel@reactos.com
Message-ID: <59a835599237.59923759a835@liu.se>
Date: Wed, 08 Oct 2003 09:05:20 +0200
X-Mailer: iPlanet Messenger Express 5.2 HotFix 1.17 (built Jun 23 2003)
MIME-Version: 1.0
Content-Language: en
X-Accept-Language: en
Priority: normal
Content-Type: multipart/mixed; boundary="--319a36287f7a571a"
X-Spam-Status: No, hits=-0.1 required=5.0
	tests=FROM_ENDS_IN_NUMS,LIU_FROM_MATCHES_LIUSTUDENT
	version=2.54-liu_1.4
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 2.54-liu_1.4 (1.174.2.17-2003-05-11-exp)
Subject: [ros-kernel] Testing kbduk.dll...
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 07:05:53 -0000

This is a multi-part message in MIME format.

----319a36287f7a571a
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

Hi!
Could somebody with access to a brittish keyboard evaluate this kbduk.dll.
It is a modified version of Kbdus.dll in the CVS.
Known issues:
CapsLock and NumLock has no effect on the keys (at least in ROS...)
AltGr does not work properly (suggestions about how AltGr is supposed to be handled are more than welcome)

Regards 
Johannes Olofsson

----319a36287f7a571a
Content-Type: application/x-zip-compressed
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=kbduk.zip

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
QVPLx9VMVr6jyNMx8M2Wfo7l3iiPySKXrh8qruM4DuJYyeRqK6FckcV8xQdxj7Ewko5lclPG
ummPmdWsXag4lk2uoBt5xlbaWqhag/G4lhiMIOk41CY2t2Y02hA7oiS1WFLlYu30TNUqgDwX
Almiv/fTAddmwkChqlWzs2bespfMUNl0wiWzXMsYtl4MVcpLzFKF0gfdHBJeS0lGq6XQvZeM
zpaKxD2WijMH1OQmSw152uWkKie1uCvSxuQtIo2NRxmHEv23n56oZ8ZKKGfVMkUzW0S+y8VZ
LZhnjVxYjSQScTk8kT6mR2RNj0R5Oll3xuf/8L5uAV4RDz/ZLCJ1LEzEmsnvMaSerlUgQhR/
V0ShAjV4qLbktseYCmRVOOPH9yaQy8YSmWw8EotmlUjSSKh3csdjRw6JO/ADP8XuKno8omLR
cGQtolcrBu7RDam//ES3gKZb8EDHW3C93bAdpIY7Cl98yG2PRupPHgWnpJZIRuS61ENyzBiK
JeKaklGy0UgyJw+1Sy3JGz4cOyKkfssjdfT/LvVzn+4WcA9St7gz0efc+5/d9eyV0U5s7a10
9jyQO9C3dLG8iOgUNo4+z/uzPj/LIxcQweo4swxijmcPM7iexHmCxVIo3+v6j1/X599EfhL7
gJ/cBcBiF3+l5C2XOGGO56Asw1rCbAWeu7GMLo94FXsi7yMj2pJ5PqMiAmOPrDR9AmuM8hyT
vYUoI/OYAYqMk1qyPpGRr/K8z0L/kptxBhGrm3wUK8u4ljZ4YCOqPP8tYISDs8Wzzfa5TyB2
P8T7FvAL4soENxn0NzA6xzNkAxQLWZLDpdnsWWeBZ65Vz/wyYvkIDgUHi98GoFGJ60TkyGXM
VvRIu4K1cpibZd1l5CwSz2uXeK9RLu86l6KeVbfTgshrsshqgvz9QgKx7CB/wyCDh2CbvF6d
HUROIIEu5iq4vNVlK3fgMQQs8ncOwoYp/maHtbEV7mTDWXDN5De4NZi/BN03LEwvJVd3m9rm
bNVwQ7/sbQErC9xS7d4H/+c31zxflb1lKLqr1221pevbLY+eCbuAR4/SePRgT2HP3IT3gYtH
04y16gY9MnvgIl7w7intD9bJ1Kh4xPyjnxTPu8lsPlQ1w+yGZ+lDhQkVFO//+yJXlG8p31au
KdeVHyjvKe8rHyofKV1qj7pd3aX2qQOqqh5Ux9QpdV59Rs2pRdVRz6uX1N9VX1a/qn5Dvaq+
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

----319a36287f7a571a--

From aleksey@studiocerebral.com Wed Oct  8 09:40:31 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h987eVs9000336
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 09:40:31 +0200
Received: from mail9.atl.registeredsite.com
	(nobody@mail9.atl.registeredsite.com [64.224.219.83])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h987eUgh017446
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 09:40:31 +0200
Received: from imta01a2.registeredsite.com (imta01a2.registeredsite.com
	[64.225.255.10])
	by mail9.atl.registeredsite.com (8.12.9/8.12.9) with ESMTP id
	h987dxbA020730
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 03:39:59 -0400
Received: from skynetp4 ([81.195.175.21]) by imta01a2.registeredsite.com
	with SMTP
	id <20031008073958.SGRL13923.imta01a2.registeredsite.com@skynetp4>
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 03:39:58 -0400
Message-ID: <017901c38d6f$613d9d20$0100a8c0@skynetp4>
From: "Aleksey Bragin" <aleksey@studiocerebral.com>
To: "ReactOS General List" <ros-kernel@reactos.com>
References: <59a835599237.59923759a835@liu.se>
Subject: Re: [ros-kernel] Testing kbduk.dll...
Date: Wed, 8 Oct 2003 11:39:59 +0400
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 07:40:31 -0000

Hi!

CapsLock and NumLock works fine (though I'm not an englishman, I have a true
english keyboard :)).

But problem with "\" isn't solved yet --- this key is located to the left of
Z button, and when I hit it - nothing happens. Now, to type this slash I
have to press down the key to the left of Enter (~ # button).

With the best regards,
Aleksey Bragin.

----- Original Message ----- 
From: "Johannes Olofsson" <johol777@student.liu.se>
To: <ros-kernel@reactos.com>
Sent: Wednesday, October 08, 2003 11:05 AM
Subject: [ros-kernel] Testing kbduk.dll...


> Hi!
> Could somebody with access to a brittish keyboard evaluate this kbduk.dll.
> It is a modified version of Kbdus.dll in the CVS.
> Known issues:
> CapsLock and NumLock has no effect on the keys (at least in ROS...)
> AltGr does not work properly (suggestions about how AltGr is supposed to
be handled are more than welcome)
>
> Regards
> Johannes Olofsson
>


----------------------------------------------------------------------------
----


> _______________________________________________
> Ros-kernel mailing list
> Ros-kernel@reactos.com
> http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel


From johol777@student.liu.se Wed Oct  8 13:33:26 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h98BX6s9002104
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 13:33:25 +0200
Received: from mail.liu.se (mail.liu.se [130.236.1.35])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h98BWrgh029188
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 13:32:53 +0200
Received: by mail.liu.se (Postfix, from userid 506)
	id 11BE320104; Wed,  8 Oct 2003 13:25:49 +0200 (CEST)
Received: from elysium.unit.liu.se (elysium.unit.liu.se [130.236.230.145])
	by mail.liu.se (Postfix) with ESMTP id B22F120158
	for <ros-kernel@reactos.com>; Wed,  8 Oct 2003 13:25:48 +0200 (CEST)
Received: by elysium.unit.liu.se (Postfix, from userid 102)
	id 7B90233989; Wed,  8 Oct 2003 13:25:45 +0200 (MEST)
Received: from liu.se (camelot.unit.liu.se [130.236.230.139])
	by elysium.unit.liu.se (Postfix) with ESMTP id 6482133982
	for <ros-kernel@reactos.com>; Wed,  8 Oct 2003 13:25:43 +0200 (MEST)
Received: from [81.225.50.188] by mu.unit.liu.se (mshttpd); Wed, 08 Oct
	2003 13:25:43 +0200
From: Johannes Olofsson <johol777@student.liu.se>
To: ReactOS General List <ros-kernel@reactos.com>
Message-ID: <5c46335c1e2e.5c1e2e5c4633@liu.se>
Date: Wed, 08 Oct 2003 13:25:43 +0200
X-Mailer: iPlanet Messenger Express 5.2 HotFix 1.17 (built Jun 23 2003)
MIME-Version: 1.0
Content-Language: en
Subject: Re: [ros-kernel] Testing kbduk.dll...
X-Accept-Language: en
Priority: normal
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
X-Spam-Status: No, hits=-0.4 required=5.0
	tests=FROM_ENDS_IN_NUMS,LIU_FROM_MATCHES_LIUSTUDENT,
	LIU_MAILTO_TO_LIUSTUDENT,MAILTO_TO_SPAM_ADDR, QUOTED_EMAIL_TEXT
	version=2.54-liu_1.4
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 2.54-liu_1.4 (1.174.2.17-2003-05-11-exp)
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by dutlaso.lr.tudelft.nl
	id h98BX6s9002104
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 11:33:28 -0000

Hi!
That's strange! It works when I test it in ROS (Well, at least the correspondingkey on my keyboard, but it should still be the same scancode...).
Are the other keys mapped correctly? (especially check the shifted number-keys, like '£' and other keys that differ from the US keyboard)

Do you test in windows or in ROS? In ROS text-mode I think you still have to apply the patch by Art Yerkes and Hartmut Birr to use keyboard mapping (and either change the name of the dll file or change the hardcoded name in the source).

Good luck, and thank you for helping me testing!
Regards
Johannes Olofsson

----- Original Message -----
From: Aleksey Bragin <aleksey@studiocerebral.com>
Date: Wednesday, October 8, 2003 9:39 am
Subject: Re: [ros-kernel] Testing kbduk.dll...

> Hi!
> 
> CapsLock and NumLock works fine (though I'm not an englishman, I 
> have a true
> english keyboard :)).
> 
> But problem with "\" isn't solved yet --- this key is located to 
> the left of
> Z button, and when I hit it - nothing happens. Now, to type this 
> slash I
> have to press down the key to the left of Enter (~ # button).
> 
> With the best regards,
> Aleksey Bragin.
> 
> ----- Original Message ----- 
> From: "Johannes Olofsson" <johol777@student.liu.se>
> To: <ros-kernel@reactos.com>
> Sent: Wednesday, October 08, 2003 11:05 AM
> Subject: [ros-kernel] Testing kbduk.dll...
> 
> 
> > Hi!
> > Could somebody with access to a brittish keyboard evaluate this 
> kbduk.dll.> It is a modified version of Kbdus.dll in the CVS.
> > Known issues:
> > CapsLock and NumLock has no effect on the keys (at least in ROS...)
> > AltGr does not work properly (suggestions about how AltGr is 
> supposed to
> be handled are more than welcome)
> >
> > Regards
> > Johannes Olofsson
> >
> 
> 
> -------------------------------------------------------------------
> ---------
> ----
> 
> 
> > _______________________________________________
> > Ros-kernel mailing list
> > Ros-kernel@reactos.com
> > http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel
> 
> _______________________________________________
> Ros-kernel mailing list
> Ros-kernel@reactos.com
> http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel
> 



From tamlin@algonet.se Wed Oct  8 13:38:42 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h98Bcgs9002152
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 13:38:42 +0200
Received: from smtp7.hy.skanova.net (smtp7.hy.skanova.net [195.67.199.140])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h98Bcggh034602
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 13:38:42 +0200
Received: from putte2k (h29n2fls31o987.telia.com [213.66.43.29])
	by smtp7.hy.skanova.net (8.12.10/8.12.10) with SMTP id h98BbQqm007439
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 13:37:26 +0200 (CEST)
Message-ID: <002f01c38d90$94d48ab0$0401a8c0@putte2k>
From: "Mike Nordell" <tamlin@algonet.se>
To: "ReactOS General List" <ros-kernel@reactos.com>
References: <59a835599237.59923759a835@liu.se>
Subject: Re: [ros-kernel] Testing kbduk.dll...
Date: Wed, 8 Oct 2003 13:37:31 +0200
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4927.1200
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4927.1200
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 11:38:42 -0000

Johannes Olofsson wrote:

> AltGr does not work properly (suggestions about how AltGr is
> supposed to be handled are more than welcome)

If it works the same as AltGr on a swedish keyboard, it generates VK_CONTROL
followed by VK_MENU on press (the opposite order on release). Test holding
Alt+Ctrl instead of AltGr and try some of those AltGr-specific chars. If
that's how it *really* works, or if it's only how it's presented to a Win32
app, I don't know.

/Mike


From ekohl@rz-online.de Wed Oct  8 14:11:01 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h98CB1s9002593
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 14:11:01 +0200
Received: from smtp.rhein-zeitung.DE (smtp.rhein-zeitung.DE [212.7.160.14])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h98CB1gh062992
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 14:11:01 +0200
Received: from marvin (pppin-c3-a3.pop-koblenz.rz-online.NET [212.7.163.195])
	by smtp.rhein-zeitung.DE (8.12.8/8.12.8) with SMTP id h98CActq022157
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 14:10:39 +0200
Message-ID: <000b01c38d95$bf401f80$0500a8c0@marvin>
From: "Eric Kohl" <ekohl@rz-online.de>
To: "ReactOS Kernel" <ros-kernel@reactos.com>
Date: Wed, 8 Oct 2003 14:10:20 +0200
MIME-Version: 1.0
Content-Type: text/plain;
	charset="Windows-1252"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4807.1700
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
Subject: [ros-kernel] Registry issues
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 12:11:01 -0000

Hi everyone!

I got a bug report about a corrupted registry a few days ago. I analyzed the
included system hive and found out that a hive file can be damaged in
_very_rare_ cases. That's why I did not report it as a showstopper. The main
cause of the bug is that a key-cell is modified when a subkey is added but
the key-cell's block is not marked dirty if the all the other involved
structures are located in other blocks. This causes a dangling-pointer bug
if the subkey-list-cell (aka hash-cell) grows and moves to a new location.

One major weakness of the NT4-compatible implementation is that two
structures, value list cells and value data cells, do not have an id or
magic value to verify their identity. My plan is to add the missing id
values and implement a test upon load/import in order to verify the
integrity of the hive.

Any comments?


Eric


From jonwil@tpgi.com.au Wed Oct  8 14:23:19 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h98CNJs9002661
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 14:23:19 +0200
Received: from mail1.tpgi.com.au (mail.tpgi.com.au [203.12.160.57])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h98CNHgh049126
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 14:23:18 +0200
Received: from tpgi.com.au (203-219-88-100-per-pow-ts1-2600.tpgi.com.au
	[203.219.88.100])
	by mail1.tpgi.com.au (8.11.6/8.11.6) with ESMTP id h98CMul14750
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 22:23:01 +1000
Message-ID: <3F8401A0.9030400@tpgi.com.au>
Date: Wed, 08 Oct 2003 20:22:56 +0800
From: Jonathan Wilson <jonwil@tpgi.com.au>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
	rv:1.5) Gecko/20030925
X-Accept-Language: en-au
MIME-Version: 1.0
To: ros-kernel@reactos.com
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Subject: [ros-kernel] keyboard dlls idea
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 12:23:19 -0000

Why not write something that sits in under the hood somewhere and that can 
capture scan-codes directly.
Then, write an application such that you push a button with the mouse, then 
press a key twice (once to get the scan-code from the low-level thingo then 
once to get the VK_xxx keycode) then type a description and it would store 
the scan-code from the keyboard plus the VK_xxx windows returns for it plus 
the description into a data file for later conversion into a kbdxxx.dll
This way, anyone with a particular multi-national keyboard and kbdxxx.dll 
file can provide the info to make that dll for ReactOS simply by pressing 
all the keys on their keyboard. (and the info is obtained in a way that 
doesnt violate any copyright)

I suspect that the low-level bit would need to be a kernel driver of some 
kind but I dont know what nor do I have the skills to code such a thing.


From jasonfilby@yahoo.com Wed Oct  8 16:18:50 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h98EIos9003440
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 16:18:50 +0200
Received: from web41511.mail.yahoo.com (web41511.mail.yahoo.com [66.218.93.94])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with SMTP id h98EIngh095512
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 16:18:49 +0200
Message-ID: <20031008141841.79395.qmail@web41511.mail.yahoo.com>
Received: from [196.23.164.18] by web41511.mail.yahoo.com via HTTP;
	Wed, 08 Oct 2003 07:18:41 PDT
Date: Wed, 8 Oct 2003 07:18:41 -0700 (PDT)
From: Jason Filby <jasonfilby@yahoo.com>
Subject: Re: [ros-kernel] Registry issues
To: ReactOS General List <ros-kernel@reactos.com>
In-Reply-To: <000b01c38d95$bf401f80$0500a8c0@marvin>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 14:18:50 -0000

One comment: will you be filing this bug in our Bugzilla
installation? :)

--- Eric Kohl <ekohl@rz-online.de> wrote:
> Hi everyone!
> 
> I got a bug report about a corrupted registry a few days ago. I
> analyzed the
> included system hive and found out that a hive file can be damaged
> in
> _very_rare_ cases. That's why I did not report it as a showstopper.
> The main
> cause of the bug is that a key-cell is modified when a subkey is
> added but
> the key-cell's block is not marked dirty if the all the other
> involved
> structures are located in other blocks. This causes a
> dangling-pointer bug
> if the subkey-list-cell (aka hash-cell) grows and moves to a new
> location.
> 
> One major weakness of the NT4-compatible implementation is that two
> structures, value list cells and value data cells, do not have an
> id or
> magic value to verify their identity. My plan is to add the missing
> id
> values and implement a test upon load/import in order to verify the
> integrity of the hive.
> 
> Any comments?
> 
> 
> Eric
> 
> _______________________________________________
> Ros-kernel mailing list
> Ros-kernel@reactos.com
> http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

From ayerkes@speakeasy.net Wed Oct  8 07:06:13 2003
Received: from dutlru2.lr.tudelft.nl (dutlru2.lr.tudelft.nl [130.161.164.58])
	by dutlaso.lr.tudelft.nl (8.12.8/8.12.8) with ESMTP id h9856Ds9031882
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 07:06:13 +0200
Received: from mail.speakeasy.net (mail10.speakeasy.net [216.254.0.210])
	by dutlru2.lr.tudelft.nl (8.12.10/8.12.10) with ESMTP id h9856Agh046860
	for <ros-kernel@reactos.com>; Wed, 8 Oct 2003 07:06:10 +0200
Received: (qmail 31549 invoked from network); 8 Oct 2003 05:06:00 -0000
Received: from unknown (HELO apprentice.genxnet.com) ([64.81.145.152])
	(envelope-sender <ayerkes@speakeasy.net>)
	by mail10.speakeasy.net (qmail-ldap-1.03) with SMTP
	for <ros-kernel@reactos.com>; 8 Oct 2003 05:06:00 -0000
Date: Wed, 8 Oct 2003 00:16:18 -0500
From: art yerkes <ayerkes@speakeasy.net>
To: ros-kernel@reactos.com
Message-Id: <20031008001618.652abedb.ayerkes@speakeasy.net>
X-Mailer: Sylpheed version 0.8.11 (GTK+ 1.2.10; i686-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: multipart/mixed;
	boundary="Multipart_Wed__8_Oct_2003_00:16:18_-0500_0891d400"
X-Mailman-Approved-At: Wed, 08 Oct 2003 21:30:03 +0200
Subject: [ros-kernel] type type revolution (was keyboard mega-patch)
X-BeenThere: ros-kernel@reactos.com
X-Mailman-Version: 2.1.2
Precedence: list
Reply-To: ReactOS General List <ros-kernel@reactos.com>
List-Id: ReactOS General List  <ros-kernel.reactos.com>
List-Unsubscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=unsubscribe>
List-Archive: <http://reactos.geldorp.nl:8080/pipermail/ros-kernel>
List-Post: <mailto:ros-kernel@reactos.com>
List-Help: <mailto:ros-kernel-request@reactos.com?subject=help>
List-Subscribe: <http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel>, 
	<mailto:ros-kernel-request@reactos.com?subject=subscribe>
X-List-Received-Date: Wed, 08 Oct 2003 05:06:13 -0000

This is a multi-part message in MIME format.

--Multipart_Wed__8_Oct_2003_00:16:18_-0500_0891d400
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

This patch represents some work that I did and Hartmut Birr put corrections
to to enable Reactos' keyboard to work correctly and be shared correctly
between the blue screen and the windowing system.  

When this code is in, keyboard events are directed either to csrss or the
active window from within win32k.sys.  This makes keyboard handling uniform
between the graphic screen and the blue screen, as well as making keyboard
maps work in both modes.

Also, I notice that since I last saw it, the windowing system looks and acts
much better.  The scroll bar in the console redirector is now visible and the
window redraws properly when moved.

The next thing I should do is to use the registry to get the name of the
keyboard dll.  I will probably add that later this week.
-- 
"Should array indices start at 0 or 1? My compromise of 0.5 was rejected
 without, I thought, proper consideration."
   - S. Kelly-Bootle

--Multipart_Wed__8_Oct_2003_00:16:18_-0500_0891d400
Content-Type: application/octet-stream;
 name="ttr.diff"
Content-Disposition: attachment;
 filename="ttr.diff"
Content-Transfer-Encoding: base64

PyBnZwo/IHR0ci5kaWZmCkluZGV4OiBpbmNsdWRlL2Z1bmNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL0NWUy9SZWFjdE9TL3JlYWN0b3MvaW5jbHVkZS9mdW5jcy5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjQxCmRpZmYgLXUgLXIxLjQxIGZ1bmNzLmgKLS0tIGluY2x1ZGUvZnVuY3MuaAk0IE9j
dCAyMDAzIDIyOjM2OjM2IC0wMDAwCTEuNDEKKysrIGluY2x1ZGUvZnVuY3MuaAk4IE9jdCAyMDAz
IDA1OjA1OjUwIC0wMDAwCkBAIC04MzYwLDggKzgzNjAsNyBAQAogIAogaW50CiBTVERDQUxMCi1U
b1VuaWNvZGUoCi0JICBVSU5UIHdWaXJ0S2V5LAorVG9Vbmljb2RlKFVJTlQgd1ZpcnRLZXksCiAJ
ICBVSU5UIHdTY2FuQ29kZSwKIAkgIFBCWVRFIGxwS2V5U3RhdGUsCiAJICBMUFdTVFIgcHdzekJ1
ZmYsCkluZGV4OiBpbmNsdWRlL25hcGkvd2luMzIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvQ1ZT
L1JlYWN0T1MvcmVhY3Rvcy9pbmNsdWRlL25hcGkvd2luMzIuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS41CmRpZmYgLXUgLXIxLjUgd2luMzIuaAotLS0gaW5jbHVkZS9uYXBpL3dpbjMyLmgJMzEg
SnVsIDIwMDMgMjM6MDA6NTUgLTAwMDAJMS41CisrKyBpbmNsdWRlL25hcGkvd2luMzIuaAk4IE9j
dCAyMDAzIDA1OjA1OjUwIC0wMDAwCkBAIC02LDYgKzYsNyBAQAogICBQVk9JRCBNZXNzYWdlUXVl
dWU7CiAgIEZBU1RfTVVURVggV2luZG93TGlzdExvY2s7CiAgIExJU1RfRU5UUlkgV2luZG93TGlz
dEhlYWQ7CisgIHN0cnVjdCBfS0JEVEFCTEVTKiBLZXlib2FyZExheW91dDsKICAgc3RydWN0IF9E
RVNLVE9QX09CSkVDVCogRGVza3RvcDsKIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgVzMyVEhS
RUFELCAqUFczMlRIUkVBRDsKIApAQCAtMTUsNiArMTYsNyBAQAogICBMSVNUX0VOVFJZIENsYXNz
TGlzdEhlYWQ7CiAgIEZBU1RfTVVURVggTWVudUxpc3RMb2NrOwogICBMSVNUX0VOVFJZIE1lbnVM
aXN0SGVhZDsKKyAgc3RydWN0IF9LQkRUQUJMRVMqIEtleWJvYXJkTGF5b3V0OwogICBzdHJ1Y3Qg
X1dJTlNUQVRJT05fT0JKRUNUKiBXaW5kb3dTdGF0aW9uOwogfSBXMzJQUk9DRVNTLCAqUFczMlBS
T0NFU1M7CiAKSW5kZXg6IGluY2x1ZGUvd2luMzJrL250dXNlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9DVlMvUmVhY3RPUy9yZWFjdG9zL2luY2x1ZGUvd2luMzJrL250dXNlci5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjgwCmRpZmYgLXUgLXIxLjgwIG50dXNlci5oCi0tLSBpbmNsdWRlL3dp
bjMyay9udHVzZXIuaAk0IE9jdCAyMDAzIDIyOjM2OjM2IC0wMDAwCTEuODAKKysrIGluY2x1ZGUv
d2luMzJrL250dXNlci5oCTggT2N0IDIwMDMgMDU6MDU6NTUgLTAwMDAKQEAgLTE1Niw2ICsxNTYs
NyBAQAogICBEV09SRCBVbmtub3duMiwKICAgRFdPUkQgVW5rbm93bjMpOwogCisjZGVmaW5lIE5P
UEFSQU1fUk9VVElORV9SRUdJU1RFUl9QUklNSVRJVkUgMHhmZmZmMDAwMSAvKiBQcml2YXRlIFJP
UyAqLwogRFdPUkQKIFNURENBTEwKIE50VXNlckNhbGxOb1BhcmFtKApAQCAtNzQ1LDEwICs3NDYs
NyBAQAogCiBEV09SRAogU1REQ0FMTAotTnRVc2VyR2V0S2V5TmFtZVRleHQoCi0gIERXT1JEIFVu
a25vd24wLAotICBEV09SRCBVbmtub3duMSwKLSAgRFdPUkQgVW5rbm93bjIpOworTnRVc2VyR2V0
S2V5TmFtZVRleHQoIExPTkcgbFBhcmFtLCBMUFdTVFIgbHBTdHJpbmcsIGludCBuU2l6ZSApOwog
CiBEV09SRAogU1REQ0FMTApAQCAtOTk5LDEzICs5OTcsMTIgQEAKIFNURENBTEwKIE50VXNlckxv
Y2tXb3JrU3RhdGlvbihWT0lEKTsKIAotRFdPUkQKK1VJTlQKIFNURENBTEwKLU50VXNlck1hcFZp
cnR1YWxLZXlFeCgKLSAgRFdPUkQgVW5rbm93bjAsCi0gIERXT1JEIFVua25vd24xLAotICBEV09S
RCBVbmtub3duMiwKLSAgRFdPUkQgVW5rbm93bjMpOworTnRVc2VyTWFwVmlydHVhbEtleUV4KCBV
SU5UIGtleUNvZGUsCisJCSAgICAgICBVSU5UIHRyYW5zVHlwZSwKKwkJICAgICAgIERXT1JEIGtl
eWJvYXJkSWQsCisJCSAgICAgICBIS0wgZHdoa2wgKTsKIAogQk9PTAogU1REQ0FMTApAQCAtMTY1
MiwxNiArMTY0OSwxNiBAQAogICBMUE1FTlVJVEVNSU5GT1cgbHBtaWksCiAgIFBVTklDT0RFX1NU
UklORyBscHN6Q2FwdGlvbik7CiAKLURXT1JECitpbnQKIFNURENBTEwKIE50VXNlclRvVW5pY29k
ZUV4KAotICBEV09SRCBVbmtub3duMCwKLSAgRFdPUkQgVW5rbm93bjEsCi0gIERXT1JEIFVua25v
d24yLAotICBEV09SRCBVbmtub3duMywKLSAgRFdPUkQgVW5rbm93bjQsCi0gIERXT1JEIFVua25v
d241LAotICBEV09SRCBVbmtub3duNik7CisJCSAgVUlOVCB3VmlydEtleSwKKwkJICBVSU5UIHdT
Y2FuQ29kZSwKKwkJICBQQllURSBscEtleVN0YXRlLAorCQkgIExQV1NUUiBwd3N6QnVmZiwKKwkJ
ICBpbnQgY2NoQnVmZiwKKwkJICBVSU5UIHdGbGFncywKKwkJICBIS0wgZHdoa2wgKTsKIAogRFdP
UkQKIFNURENBTEwKQEAgLTE2ODksNyArMTY4Niw3IEBACiBTVERDQUxMCiBOdFVzZXJUcmFuc2xh
dGVNZXNzYWdlKAogICBMUE1TRyBscE1zZywKLSAgRFdPUkQgVW5rbm93bjEpOworICBIS0wgZHdo
a2wgKTsKIAogRFdPUkQKIFNURENBTEwKSW5kZXg6IGxpYi9rYmR1cy9rYmR1cy5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9DVlMvUmVhY3RPUy9yZWFjdG9zL2xpYi9rYmR1cy9rYmR1cy5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtdSAtcjEuMiBrYmR1cy5jCi0tLSBsaWIva2JkdXMv
a2JkdXMuYwkxMCBBdWcgMjAwMyAwNjozMzozOSAtMDAwMAkxLjIKKysrIGxpYi9rYmR1cy9rYmR1
cy5jCTggT2N0IDIwMDMgMDU6MDU6NTYgLTAwMDAKQEAgLTgwLDEwICs4MCwxMCBAQAogICAvKiAt
IDBmIC0gKi8KICAgLyogRmlyc3QgTGV0dGVycyBSb3cgKi8KICAgVktfVEFCLCAgICAgICAnUScs
ICAgICAgICAgICdXJywgICAgICAgICAgJ0UnLAotICAnUicsICAgICAgICAgICdUJywgICAgICAg
ICAgJ1UnLCAgICAgICAgICAnSScsCi0gICdPJywgICAgICAgICAgJ1AnLCAgICAgICAgICAKKyAg
J1InLCAgICAgICAgICAnVCcsICAgICAgICAgICdZJywgICAgICAgICAgJ1UnLAorICAnSScsICAg
ICAgICAgICdPJywgICAgICAgICAgJ1AnLCAgICAgICAgICAKICAgVktfT0VNXzQsICAgICBWS19P
RU1fNiwgICAgIFZLX1JFVFVSTiwKLSAgLyogLSAxYyAtICovCisgIC8qIC0gMWQgLSAqLwogICAv
KiBTZWNvbmQgTGV0dGVycyBSb3cgKi8KICAgVktfTENPTlRST0wsICAKICAgJ0EnLCAgICAgICAg
ICAnUycsICAgICAgICAgICdEJywgICAgICAgICAgJ0YnLApAQCAtOTUsMTEgKzk1LDkgQEAKICAg
J1onLCAgICAgICAgICAnWCcsICAgICAgICAgICdDJywgICAgICAgICAgJ1YnLAogICAnQicsICAg
ICAgICAgICdOJywgICAgICAgICAgJ00nLCAgICAgICAgICBWS19PRU1fQ09NTUEsCiAgIFZLX09F
TV9QRVJJT0QsVktfT0VNXzIsICAgICBWS19SU0hJRlQsCi0gIC8qIC0gMzUgLSAqLworICAvKiAt
IDM3IC0gKi8KICAgLyogQm90dG9tIFJvdyAqLwotICBWS19FTVBUWSwgICAgICAgICAgICAgICAg
ICAgVktfUlNISUZUIHwgS0VYVCwKLSAgVktfTVVMVElQTFksICAgICAgICAgICAgICAgIFZLX0xN
RU5VLAotICAnICcsICAgICAgICAgICAgICAgICAgICAgICAgVktfQ0FQSVRBTCwKKyAgVktfTVVM
VElQTFksICBWS19MTUVOVSwgICAgIFZLX1NQQUNFLCAgICAgVktfQ0FQSVRBTCwKICAgCiAgIC8q
IC0gM2IgLSAqLwogICAvKiBGLUtleXMgKi8KQEAgLTE1Myw4ICsxNTEsNiBAQAogICB7IDAsIDAg
fSwKIH07CiAKLSNkZWZpbmUgVktfQUxUIAotCiBST1NEQVRBIFZLX1RPX0JJVCBtb2RpZmllcl9r
ZXlzW10gPSB7CiAgIHsgVktfU0hJRlQsICAgS1NISUZUIH0sCiAgIHsgVktfQ09OVFJPTCwgS0NU
UkwgfSwKQEAgLTE2NCw4ICsxNjAsOCBAQAogCiB0eXBlZGVmIHN0cnVjdCBfbXltb2QgewogICBQ
Vk9JRCBtb2Rfa2V5czsKLSAgaW50IG1heG1vZDsKLSAgaW50IG1vZF9tYXhbNF07CisgIFdPUkQg
bWF4bW9kOworICBCWVRFIG1vZF9tYXhbNF07CiB9IElOVEVSTkFMX0tCRF9NT0RJRklFUlM7CiAK
IFJPU0RBVEEgSU5URVJOQUxfS0JEX01PRElGSUVSUyBtb2RpZmllcl9iaXRzW10gPSB7CkBAIC0y
ODUsNyArMjgxLDcgQEAKIH07CiAKIFJPU0RBVEEgVlNDX0xQV1NUUiBrZXlfbmFtZXNbXSA9IHsK
LSAgeyAweDAwLCBMIkVycm9yIiB9LAorICB7IDB4MDAsIEwiIiB9LAogICB7IDB4MDEsIEwiRXNj
IiB9LAogICB7IDB4MGUsIEwiQmFja3NwYWNlIiB9LAogICB7IDB4MGYsIEwiVGFiIiB9LApAQCAt
MzY5LDcgKzM2NSw3IEBACiAvKiBGaW5hbGx5LCB0aGUgbWFzdGVyIHRhYmxlICovCiBST1NEQVRB
IEtCRFRBQkxFUyBrZXlib2FyZF9sYXlvdXRfdGFibGUgPSB7CiAgIC8qIG1vZGlmaWVyIGFzc2ln
bm1lbnRzICovCi0gIChQTU9ESUZJRVJTKW1vZGlmaWVyX2JpdHMsCisgIChQTU9ESUZJRVJTKSZt
b2RpZmllcl9iaXRzLAogICAKICAgLyogY2hhcmFjdGVyIGZyb20gdmsgdGFibGVzICovCiAgIHZr
X3RvX3djaGFyX21hc3Rlcl90YWJsZSwKSW5kZXg6IGxpYi9rZXJuZWwzMi9tZW0vaXNiYWQuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvQ1ZTL1JlYWN0T1MvcmVhY3Rvcy9saWIva2VybmVsMzIvbWVt
L2lzYmFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1yMS43IGlzYmFkLmMK
LS0tIGxpYi9rZXJuZWwzMi9tZW0vaXNiYWQuYwkxMCBKdWwgMjAwMyAxODo1MDo1MSAtMDAwMAkx
LjcKKysrIGxpYi9rZXJuZWwzMi9tZW0vaXNiYWQuYwk4IE9jdCAyMDAzIDA1OjA1OjU2IC0wMDAw
CkBAIC0yOCw3ICsyOCw3IEBACiAKIC8qIEZJWE1FOiBTdHVicy4gV2hhdCBpcyBpdCBmb3I/ICov
CiAvKgotICogQHVuaW1wbGVtZW50ZWQKKyAqIEBpbXBsZW1lbnRlZAogICovCiBVSU5UCiBzdHJu
bGVuICgKQEAgLTM2LDkgKzM2LDkgQEAKIAlVSU5UCXVpTWF4CiAJKQogewotCURQUklOVDEoInN0
cm5sZW4gc3R1YiBjYWxsZWRcbiIpOwotCi0JcmV0dXJuIDA7CisgIFVJTlQgaSA9IDA7CisgIHdo
aWxlKCBscHN6W2ldICYmIGkgPCB1aU1heCApIGkrKzsKKyAgcmV0dXJuIGk7CiB9CiAKIC8qIC0t
LSAtLS0gLS0tICovCkluZGV4OiBsaWIvdXNlcjMyL2luY2x1ZGUvdXNlcjMyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL0NWUy9SZWFjdE9TL3JlYWN0b3MvbGliL3VzZXIzMi9pbmNsdWRlL3VzZXIz
Mi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzCmRpZmYgLXUgLXIxLjEzIHVzZXIzMi5oCi0t
LSBsaWIvdXNlcjMyL2luY2x1ZGUvdXNlcjMyLmgJMjkgQXVnIDIwMDMgMDg6NDY6MjAgLTAwMDAJ
MS4xMworKysgbGliL3VzZXIzMi9pbmNsdWRlL3VzZXIzMi5oCTggT2N0IDIwMDMgMDU6MDU6NTkg
LTAwMDAKQEAgLTEwLDYgKzEwLDcgQEAKIHR5cGVkZWYgc3RydWN0IF9VU0VSMzJfVEhSRUFEX0RB
VEEKIHsKICAgTVNHIExhc3RNZXNzYWdlOworICBIS0wgS2V5Ym9hcmRMYXlvdXRIYW5kbGU7CiB9
IFVTRVIzMl9USFJFQURfREFUQSwgKlBVU0VSMzJfVEhSRUFEX0RBVEE7CiAKIFBVU0VSMzJfVEhS
RUFEX0RBVEEgVXNlcjMyR2V0VGhyZWFkRGF0YSgpOwpJbmRleDogbGliL3VzZXIzMi93aW5kb3dz
L2lucHV0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL0NWUy9SZWFjdE9TL3JlYWN0b3MvbGliL3Vz
ZXIzMi93aW5kb3dzL2lucHV0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTgKZGlmZiAtdSAt
cjEuMTggaW5wdXQuYwotLS0gbGliL3VzZXIzMi93aW5kb3dzL2lucHV0LmMJMTIgU2VwIDIwMDMg
MTI6NTQ6MjYgLTAwMDAJMS4xOAorKysgbGliL3VzZXIzMi93aW5kb3dzL2lucHV0LmMJOCBPY3Qg
MjAwMyAwNTowNTo1OSAtMDAwMApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNpbmNsdWRlIDx1c2VyMzIuaD4KICNpbmNsdWRlIDxkZWJ1Zy5oPgorI2luY2x1ZGUgPHdj
aGFyLmg+CiAKIC8qIEZVTkNUSU9OUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMTM0LDMzICsxMzUsNDcgQEAK
IAogCiAvKgotICogQHVuaW1wbGVtZW50ZWQKKyAqIEBpbXBsZW1lbnRlZAogICovCiBpbnQgU1RE
Q0FMTAogR2V0S2V5TmFtZVRleHRBKExPTkcgbFBhcmFtLAogCQlMUFNUUiBscFN0cmluZywKIAkJ
aW50IG5TaXplKQogewotICBVTklNUExFTUVOVEVEOwotICByZXR1cm4gMDsKLX0KKyAgTFBXU1RS
IGludGVybWVkaWF0ZVN0cmluZyA9IAorICAgIEhlYXBBbGxvYyhHZXRQcm9jZXNzSGVhcCgpLDAs
blNpemUgKiBzaXplb2YoV0NIQVIpKTsKKyAgaW50IHJldCA9IDA7CisgIFVJTlQgd3N0ckxlbiA9
IDA7CisgIEJPT0wgZGVmQ2hhciA9IEZBTFNFOworCisgIGlmKCAhaW50ZXJtZWRpYXRlU3RyaW5n
ICkgcmV0dXJuIDA7CisgIHJldCA9IEdldEtleU5hbWVUZXh0VyhsUGFyYW0saW50ZXJtZWRpYXRl
U3RyaW5nLG5TaXplKTsKKyAgaWYoIHJldCA9PSAwICkgeyBscFN0cmluZ1swXSA9IDA7IHJldHVy
biAwOyB9CisgIAorICB3c3RyTGVuID0gd2NzbGVuKCBpbnRlcm1lZGlhdGVTdHJpbmcgKTsKKyAg
cmV0ID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIAorCQkJICAgIGludGVybWVkaWF0
ZVN0cmluZywgd3N0ckxlbiwKKwkJCSAgICBscFN0cmluZywgblNpemUsICIuIiwgJmRlZkNoYXIg
KTsKKyAgbHBTdHJpbmdbcmV0XSA9IDA7CisgIEhlYXBGcmVlKEdldFByb2Nlc3NIZWFwKCksMCxp
bnRlcm1lZGlhdGVTdHJpbmcpOwogCisgIHJldHVybiByZXQ7Cit9CiAKIC8qCi0gKiBAdW5pbXBs
ZW1lbnRlZAorICogQGltcGxlbWVudGVkCiAgKi8KIGludCBTVERDQUxMCiBHZXRLZXlOYW1lVGV4
dFcoTE9ORyBsUGFyYW0sCiAJCUxQV1NUUiBscFN0cmluZywKIAkJaW50IG5TaXplKQogewotICBV
TklNUExFTUVOVEVEOwotICByZXR1cm4gMDsKKyAgcmV0dXJuIE50VXNlckdldEtleU5hbWVUZXh0
KCBsUGFyYW0sIGxwU3RyaW5nLCBuU2l6ZSApOwogfQogCiAKIC8qCi0gKiBAdW5pbXBsZW1lbnRl
ZAorICogQGltcGxlbWVudGVkCiAgKi8KIFNIT1JUIFNURENBTEwKIEdldEtleVN0YXRlKGludCBu
VmlydEtleSkKQEAgLTI2MSw1MiArMjc2LDQ4IEBACiAKIAogLyoKLSAqIEB1bmltcGxlbWVudGVk
CisgKiBAaW1wbGVtZW50ZWQKICAqLwogVUlOVCBTVERDQUxMCiBNYXBWaXJ0dWFsS2V5QShVSU5U
IHVDb2RlLAogCSAgICAgICBVSU5UIHVNYXBUeXBlKQogewotICBVTklNUExFTUVOVEVEOwotICBy
ZXR1cm4gMDsKKyAgcmV0dXJuIE1hcFZpcnR1YWxLZXlFeEEoIHVDb2RlLCB1TWFwVHlwZSwgR2V0
S2V5Ym9hcmRMYXlvdXQoIDAgKSApOwogfQogCiAKIC8qCi0gKiBAdW5pbXBsZW1lbnRlZAorICog
QGltcGxlbWVudGVkCiAgKi8KIFVJTlQgU1REQ0FMTAogTWFwVmlydHVhbEtleUV4QShVSU5UIHVD
b2RlLAogCQkgVUlOVCB1TWFwVHlwZSwKIAkJIEhLTCBkd2hrbCkKIHsKLSAgVU5JTVBMRU1FTlRF
RDsKLSAgcmV0dXJuIDA7CisgIHJldHVybiBNYXBWaXJ0dWFsS2V5RXhXKCB1Q29kZSwgdU1hcFR5
cGUsIGR3aGtsICk7CiB9CiAKIAogLyoKLSAqIEB1bmltcGxlbWVudGVkCisgKiBAaW1wbGVtZW50
ZWQKICAqLwogVUlOVCBTVERDQUxMCiBNYXBWaXJ0dWFsS2V5RXhXKFVJTlQgdUNvZGUsCiAJCSBV
SU5UIHVNYXBUeXBlLAogCQkgSEtMIGR3aGtsKQogewotICBVTklNUExFTUVOVEVEOwotICByZXR1
cm4gMDsKKyAgcmV0dXJuIE50VXNlck1hcFZpcnR1YWxLZXlFeCggdUNvZGUsIHVNYXBUeXBlLCAw
LCBkd2hrbCApOwogfQogCiAKIC8qCi0gKiBAdW5pbXBsZW1lbnRlZAorICogQGltcGxlbWVudGVk
CiAgKi8KIFVJTlQgU1REQ0FMTAogTWFwVmlydHVhbEtleVcoVUlOVCB1Q29kZSwKIAkgICAgICAg
VUlOVCB1TWFwVHlwZSkKIHsKLSAgVU5JTVBMRU1FTlRFRDsKLSAgcmV0dXJuIDA7CisgIHJldHVy
biBNYXBWaXJ0dWFsS2V5RXhXKCB1Q29kZSwgdU1hcFR5cGUsIEdldEtleWJvYXJkTGF5b3V0KCAw
ICkgKTsKIH0KIAogCkBAIC00MDEsNyArNDEyLDcgQEAKIAogCiAvKgotICogQHVuaW1wbGVtZW50
ZWQKKyAqIEBpbXBsZW1lbnRlZAogICovCiBpbnQgU1REQ0FMTAogVG9Vbmljb2RlKFVJTlQgd1Zp
cnRLZXksCkBAIC00MTEsOCArNDIyLDggQEAKIAkgIGludCBjY2hCdWZmLAogCSAgVUlOVCB3Rmxh
Z3MpCiB7Ci0gIFVOSU1QTEVNRU5URUQ7Ci0gIHJldHVybiAwOworICByZXR1cm4gVG9Vbmljb2Rl
RXgoIHdWaXJ0S2V5LCB3U2NhbkNvZGUsIGxwS2V5U3RhdGUsIHB3c3pCdWZmLCBjY2hCdWZmLCAK
KwkJICAgICAgd0ZsYWdzLCAwICk7CiB9CiAKIApAQCAtNDI4LDggKzQzOSw4IEBACiAJICAgIFVJ
TlQgd0ZsYWdzLAogCSAgICBIS0wgZHdoa2wpCiB7Ci0gIFVOSU1QTEVNRU5URUQ7Ci0gIHJldHVy
biAwOworICByZXR1cm4gTnRVc2VyVG9Vbmljb2RlRXgoIHdWaXJ0S2V5LCB3U2NhbkNvZGUsIGxw
S2V5U3RhdGUsIHB3c3pCdWZmLCBjY2hCdWZmLAorCQkJICAgIHdGbGFncywgZHdoa2wgKTsKIH0K
IAogCkluZGV4OiBsaWIvdXNlcjMyL3dpbmRvd3MvbWVzc2FnZS5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9DVlMvUmVhY3RPUy9yZWFjdG9zL2xpYi91c2VyMzIvd2luZG93cy9tZXNzYWdlLmMsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQKZGlmZiAtdSAtcjEuMjQgbWVzc2FnZS5jCi0tLSBsaWIv
dXNlcjMyL3dpbmRvd3MvbWVzc2FnZS5jCTE0IEF1ZyAyMDAzIDIwOjI1OjUyIC0wMDAwCTEuMjQK
KysrIGxpYi91c2VyMzIvd2luZG93cy9tZXNzYWdlLmMJOCBPY3QgMjAwMyAwNTowNjowMCAtMDAw
MApAQCAtNjk4LDcgKzY5OCw3IEBACiBXSU5CT09MIFNURENBTEwKIFRyYW5zbGF0ZU1lc3NhZ2VF
eChDT05TVCBNU0cgKmxwTXNnLCBEV09SRCB1bmspCiB7Ci0gIHJldHVybihOdFVzZXJUcmFuc2xh
dGVNZXNzYWdlKChMUE1TRylscE1zZywgdW5rKSk7CisgIHJldHVybihOdFVzZXJUcmFuc2xhdGVN
ZXNzYWdlKChMUE1TRylscE1zZywgKEhLTCl1bmspKTsKIH0KIAogCkluZGV4OiBzdWJzeXMvY3Ny
c3MvYXBpLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL0NWUy9SZWFjdE9TL3JlYWN0b3Mvc3Vic3lz
L2NzcnNzL2FwaS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMzCmRpZmYgLXUgLXIxLjMzIGFw
aS5oCi0tLSBzdWJzeXMvY3Nyc3MvYXBpLmgJMTggQXVnIDIwMDMgMTA6NTg6NDkgLTAwMDAJMS4z
MworKysgc3Vic3lzL2NzcnNzL2FwaS5oCTggT2N0IDIwMDMgMDU6MDY6MDAgLTAwMDAKQEAgLTIx
LDYgKzIxLDcgQEAKICAgTElTVF9FTlRSWSBMaXN0RW50cnk7CiAgIElOUFVUX1JFQ09SRCBJbnB1
dEV2ZW50OwogICBCT09MRUFOIEVjaG9lZDsgICAgICAgIC8vIGFscmVhZHkgYmVlbiBlY2hvZWQg
b3Igbm90CisgIEJPT0xFQU4gRmFrZTsgICAgICAgICAgLy8gc3ludGhlc2l6ZWQsIG5vdCBhIHJl
YWwgZXZlbnQKIH0gQ29uc29sZUlucHV0OwogCiAKSW5kZXg6IHN1YnN5cy9jc3Jzcy9hcGkvY29u
aW8uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvQ1ZTL1JlYWN0T1MvcmVhY3Rvcy9zdWJzeXMvY3Ny
c3MvYXBpL2NvbmlvLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTIKZGlmZiAtdSAtcjEuNTIg
Y29uaW8uYwotLS0gc3Vic3lzL2NzcnNzL2FwaS9jb25pby5jCTI4IEF1ZyAyMDAzIDEzOjM4OjIz
IC0wMDAwCTEuNTIKKysrIHN1YnN5cy9jc3Jzcy9hcGkvY29uaW8uYwk4IE9jdCAyMDAzIDA1OjA2
OjAxIC0wMDAwCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAiYXBpLmgiCiAjaW5jbHVkZSA8
bnRkbGwvcnRsLmg+CiAjaW5jbHVkZSA8ZGRrL250ZGRibHVlLmg+CisjaW5jbHVkZSA8d2luMzJr
L250dXNlci5oPgogCiAjZGVmaW5lIE5ERUJVRwogI2luY2x1ZGUgPGRlYnVnLmg+CkBAIC0yOSwx
MSArMzAsOSBAQAogLyogR0xPQkFMUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgSEFORExFIENvbnNv
bGVEZXZpY2VIYW5kbGU7Ci1zdGF0aWMgSEFORExFIEtleWJvYXJkRGV2aWNlSGFuZGxlOwogc3Rh
dGljIFBDU1JTU19DT05TT0xFIEFjdGl2ZUNvbnNvbGU7CiBDUklUSUNBTF9TRUNUSU9OIEFjdGl2
ZUNvbnNvbGVMb2NrOwogc3RhdGljIENPT1JEIFBoeXNpY2FsQ29uc29sZVNpemU7Ci1zdGF0aWMg
Qk9PTCBLZXlSZWFkSW5oaWJpdCA9IEZBTFNFOwogCiAvKiBGVU5DVElPTlMgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAK
QEAgLTE2NCwxOCArMTYzLDMwIEBACiAKIENTUl9BUEkoQ3NyRnJlZUNvbnNvbGUpCiB7CisgICBQ
Q1NSU1NfQ09OU09MRSBDb25zb2xlOworCiAgICBSZXBseS0+SGVhZGVyLk1lc3NhZ2VTaXplID0g
c2l6ZW9mKENTUlNTX0FQSV9SRVBMWSk7CiAgICBSZXBseS0+SGVhZGVyLkRhdGFTaXplID0gc2l6
ZW9mKENTUlNTX0FQSV9SRVBMWSkgLQogICAgICBzaXplb2YoTFBDX01FU1NBR0UpOwogCi0gICBp
ZiAoUHJvY2Vzc0RhdGEgPT0gTlVMTCkKKyAgIExPQ0s7CisgICBpZiAoUHJvY2Vzc0RhdGEgPT0g
TlVMTCB8fCBQcm9jZXNzRGF0YS0+Q29uc29sZSA9PSBOVUxMKQogICAgeworICAgICBVTkxPQ0s7
CiAgICAgIHJldHVybihSZXBseS0+U3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSKTsK
ICAgIH0KIAotICAgUmVwbHktPlN0YXR1cyA9IFNUQVRVU19OT1RfSU1QTEVNRU5URUQ7CisgICBD
b25zb2xlID0gUHJvY2Vzc0RhdGEtPkNvbnNvbGU7CisgICBDb25zb2xlLT5IZWFkZXIuUmVmZXJl
bmNlQ291bnQtLTsKKyAgICAgUHJvY2Vzc0RhdGEtPkNvbnNvbGUgPSAwOworICAgaWYoIENvbnNv
bGUtPkhlYWRlci5SZWZlcmVuY2VDb3VudCA9PSAwICkgeworICAgICBpZiggQ29uc29sZSAhPSBB
Y3RpdmVDb25zb2xlICkgCisgICAgICAgQ3NyRGVsZXRlQ29uc29sZSggQ29uc29sZSApOworICAg
fQorCisgICBVTkxPQ0s7CiAgICAKLSAgIHJldHVybihTVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsK
KyAgIHJldHVybihTVEFUVVNfU1VDQ0VTUyk7CiB9CiAKIENTUl9BUEkoQ3NyUmVhZENvbnNvbGUp
CkBAIC0yNDIsNyArMjUzLDkgQEAKIAkJICAgICBJbnB1dC0+RWNob2VkID0gVFJVRTsgICAvLyBt
YXJrIGFzIGVjaG9lZCBzbyB3ZSBkb24ndCBlY2hvIGl0IGJlbG93CiAJCSAgfQogCSAgICAgICAv
LyBkbyBub3QgY29weSBiYWNrc3BhY2UgdG8gYnVmZmVyCi0JICAgICAgIGVsc2UgQnVmZmVyW2ld
ID0gSW5wdXQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNjaWlDaGFyOworCSAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgQnVmZmVyW2ldID0gSW5wdXQtPklucHV0RXZl
bnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNjaWlDaGFyOworICAgICAgICAgICAgICAgfQogCSAg
ICAgICAvLyBlY2hvIHRvIHNjcmVlbiBpZiBlbmFibGVkIGFuZCB3ZSBkaWQgbm90IGFscmVhZHkg
ZWNobyB0aGUgY2hhcgogCSAgICAgICBpZiggQ29uc29sZS0+TW9kZSAmIEVOQUJMRV9FQ0hPX0lO
UFVUICYmCiAJCSAgICFJbnB1dC0+RWNob2VkICYmCkBAIC04OTUsNiArOTA4LDggQEAKICAgIENP
TlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIFNjckluZm87CiAgICAKICAgIERQUklOVCgiQ1NSOiBD
c3JJbml0Q29uc29sZVN1cHBvcnQoKVxuIik7CisKKyAgIC8qIFNob3VsZCBjYWxsIExvYWRLZXli
b2FyZExheW91dCAqLwogICAgCiAgICBSdGxJbml0VW5pY29kZVN0cmluZ0Zyb21MaXRlcmFsKCZE
ZXZpY2VOYW1lLCBMIlxcPz9cXEJsdWVTY3JlZW4iKTsKICAgIEluaXRpYWxpemVPYmplY3RBdHRy
aWJ1dGVzKCZPYmplY3RBdHRyaWJ1dGVzLApAQCAtOTEzLDIzICs5MjgsNiBAQAogCURiZ1ByaW50
KCJDU1I6IEZhaWxlZCB0byBvcGVuIGNvbnNvbGUuIEV4cGVjdCBwcm9ibGVtcy5cbiIpOwogICAg
ICB9CiAKLSAgIFJ0bEluaXRVbmljb2RlU3RyaW5nRnJvbUxpdGVyYWwoJkRldmljZU5hbWUsIEwi
XFw/P1xcS2V5Ym9hcmQiKTsKLSAgIEluaXRpYWxpemVPYmplY3RBdHRyaWJ1dGVzKCZPYmplY3RB
dHRyaWJ1dGVzLAotCQkJICAgICAgJkRldmljZU5hbWUsCi0JCQkgICAgICAwLAotCQkJICAgICAg
TlVMTCwKLQkJCSAgICAgIE5VTEwpOwotICAgU3RhdHVzID0gTnRPcGVuRmlsZSgmS2V5Ym9hcmRE
ZXZpY2VIYW5kbGUsCi0JCSAgICAgICBGSUxFX0FMTF9BQ0NFU1MsCi0JCSAgICAgICAmT2JqZWN0
QXR0cmlidXRlcywKLQkJICAgICAgICZJb3NiLAotCQkgICAgICAgMCwKLQkJICAgICAgIDApOwot
ICAgaWYgKCFOVF9TVUNDRVNTKFN0YXR1cykpCi0gICAgIHsKLQlEYmdQcmludCgiQ1NSOiBGYWls
ZWQgdG8gb3BlbiBrZXlib2FyZC4gRXhwZWN0IHByb2JsZW1zLlxuIik7Ci0gICAgIH0KLSAgIAog
ICAgQWN0aXZlQ29uc29sZSA9IDA7CiAgICBSdGxJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCAm
QWN0aXZlQ29uc29sZUxvY2sgKTsKICAgIFN0YXR1cyA9IE50RGV2aWNlSW9Db250cm9sRmlsZSgg
Q29uc29sZURldmljZUhhbmRsZSwgTlVMTCwgTlVMTCwgTlVMTCwgJklvc2IsIElPQ1RMX0NPTlNP
TEVfR0VUX1NDUkVFTl9CVUZGRVJfSU5GTywgMCwgMCwgJlNjckluZm8sIHNpemVvZiggU2NySW5m
byApICk7CkBAIC05NDEsMzAyICs5MzksNDA2IEBACiAgICBQaHlzaWNhbENvbnNvbGVTaXplID0g
U2NySW5mby5kd1NpemU7CiB9CiAKLVZPSUQgQ29uc29sZV9BcGkoIERXT1JEIFJlZnJlc2hFdmVu
dCApCi17Ci0gIC8qIGtlZXAgcmVhZGluZyBldmVudHMgZnJvbSB0aGUga2V5Ym9hcmQgYW5kIHN0
dWZmaW5nIHRoZW0gaW50byB0aGUgY3VycmVudAotICAgICBjb25zb2xlJ3MgaW5wdXQgcXVldWUg
Ki8KLSAgQ29uc29sZUlucHV0ICpLZXlFdmVudFJlY29yZDsKK3N0YXRpYyB2b2lkIENzcnBQcm9j
ZXNzQ2hhciggUENTUlNTX0NPTlNPTEUgQ29uc29sZSwKKwkJCSAgICAgQ29uc29sZUlucHV0ICpL
ZXlFdmVudFJlY29yZCApIHsKKyAgQk9PTCB1cGRvd247CisgIEJPT0wgYkNsaWVudFdha2UgPSBG
QUxTRTsKICAgQ29uc29sZUlucHV0ICpUZW1wSW5wdXQ7Ci0gIElPX1NUQVRVU19CTE9DSyBJb3Ni
OwotICBOVFNUQVRVUyBTdGF0dXM7Ci0gIEhBTkRMRSBFdmVudHNbMl07ICAgICAvLyAwID0ga2V5
Ym9hcmQsIDEgPSByZWZyZXNoCi0gIGludCBjOwotICBpbnQgdXBkb3duOwotICBQQ1NSU1NfQ09O
U09MRSBTd2FwQ29uc29sZSA9IDA7IC8vIGNvbnNvbGUgd2UgYXJlIHRoaW5raW5nIGFib3V0IHN3
YXBwaW5nIHdpdGgKIAotICBFdmVudHNbMF0gPSAwOwotICBTdGF0dXMgPSBOdENyZWF0ZUV2ZW50
KCAmRXZlbnRzWzBdLCBTVEFOREFSRF9SSUdIVFNfQUxMLCBOVUxMLCBGQUxTRSwgRkFMU0UgKTsK
LSAgaWYoICFOVF9TVUNDRVNTKCBTdGF0dXMgKSApCi0gICAgewotICAgICAgRGJnUHJpbnQoICJD
U1I6IE50Q3JlYXRlRXZlbnQgZmFpbGVkOiAleFxuIiwgU3RhdHVzICk7Ci0gICAgICBOdFRlcm1p
bmF0ZVByb2Nlc3MoIE50Q3VycmVudFByb2Nlc3MoKSwgU3RhdHVzICk7Ci0gICAgfQotICBFdmVu
dHNbMV0gPSAoSEFORExFKVJlZnJlc2hFdmVudDsKLSAgd2hpbGUoIDEgKQotICAgIHsKLSAgICAg
IEtleUV2ZW50UmVjb3JkID0gUnRsQWxsb2NhdGVIZWFwKENzcnNzQXBpSGVhcCwgCi0JCQkJICAg
ICAgIDAsCi0JCQkJICAgICAgIHNpemVvZihDb25zb2xlSW5wdXQpKTsKLSAgICAgICBpZiAoIEtl
eUV2ZW50UmVjb3JkID09IDAgKQotCXsKLQkgIERiZ1ByaW50KCAiQ1NSOiBNZW1vcnkgYWxsb2Nh
dGlvbiBmYWlsdXJlISIgKTsKLQkgIGNvbnRpbnVlOwotCX0KLSAgICAgIEtleUV2ZW50UmVjb3Jk
LT5JbnB1dEV2ZW50LkV2ZW50VHlwZSA9IEtFWV9FVkVOVDsKLSAgICAgIGlmKCAhS2V5UmVhZElu
aGliaXQgKSB7Ci0gICAgICAgIFN0YXR1cyA9IE50UmVhZEZpbGUoIEtleWJvYXJkRGV2aWNlSGFu
ZGxlLCBFdmVudHNbMF0sIE5VTEwsIE5VTEwsICZJb3NiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQsIHNpemVv
ZiggS0VZX0VWRU5UX1JFQ09SRCApLCBOVUxMLCAwICk7Ci0gICAgICB9IGVsc2UgewotCVN0YXR1
cyA9IFNUQVRVU19QRU5ESU5HOwotICAgICAgfQotICAgICAgaWYoICFOVF9TVUNDRVNTKCBTdGF0
dXMgKSApCisgIC8qIHByb2Nlc3MgQ3RybC1DIGFuZCBDdHJsLUJyZWFrICovCisgIGlmIChDb25z
b2xlLT5Nb2RlICYgRU5BQkxFX1BST0NFU1NFRF9JTlBVVCAmJgorICAgICAgS2V5RXZlbnRSZWNv
cmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktleURvd24gJiYKKyAgICAgICgoS2V5RXZl
bnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQud1ZpcnR1YWxLZXlDb2RlID09IFZL
X1BBVVNFKSB8fCAKKyAgICAgICAoS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5
RXZlbnQud1ZpcnR1YWxLZXlDb2RlID09ICdDJykpICYmCisgICAgICAoS2V5RXZlbnRSZWNvcmQt
PklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuZHdDb250cm9sS2V5U3RhdGUgJiAoTEVGVF9DVFJM
X1BSRVNTRUQgfCBSSUdIVF9DVFJMX1BSRVNTRUQpKSkKKyAgICB7CisgICAgICBQQ1NSU1NfUFJP
Q0VTU19EQVRBIGN1cnJlbnQ7CisgICAgICBQTElTVF9FTlRSWSBjdXJyZW50X2VudHJ5OworICAg
ICAgRFBSSU5UMSgiQ29uc29sZV9BcGkgQ3RybC1DXG4iKTsKKyAgICAgIExPQ0s7CisgICAgICBj
dXJyZW50X2VudHJ5ID0gQ29uc29sZS0+UHJvY2Vzc0xpc3QuRmxpbms7CisgICAgICB3aGlsZSAo
Y3VycmVudF9lbnRyeSAhPSAmQ29uc29sZS0+UHJvY2Vzc0xpc3QpCiAJewotCSAgRGJnUHJpbnQo
ICJDU1I6IFJlYWRGaWxlIG9uIGtleWJvYXJkIGRldmljZSBmYWlsZWRcbiIgKTsKLQkgIFJ0bEZy
ZWVIZWFwKCBDc3Jzc0FwaUhlYXAsIDAsIEtleUV2ZW50UmVjb3JkICk7Ci0JICBjb250aW51ZTsK
KwkgIGN1cnJlbnQgPSBDT05UQUlOSU5HX1JFQ09SRChjdXJyZW50X2VudHJ5LCBDU1JTU19QUk9D
RVNTX0RBVEEsIFByb2Nlc3NFbnRyeSk7CisJICBjdXJyZW50X2VudHJ5ID0gY3VycmVudF9lbnRy
eS0+Rmxpbms7CisJICBDc3JDb25zb2xlQ3RybEV2ZW50KChEV09SRClDVFJMX0NfRVZFTlQsIGN1
cnJlbnQpOwogCX0KLSAgICAgIGlmKCBTdGF0dXMgPT0gU1RBVFVTX1BFTkRJTkcgKQorICAgICAg
VU5MT0NLOworICAgICAgUnRsRnJlZUhlYXAoIENzcnNzQXBpSGVhcCwgMCwgS2V5RXZlbnRSZWNv
cmQgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIGlmKCBLZXlFdmVudFJlY29yZC0+SW5wdXRF
dmVudC5FdmVudC5LZXlFdmVudC5kd0NvbnRyb2xLZXlTdGF0ZSAmCisgICAgICAoIFJJR0hUX0FM
VF9QUkVTU0VEIHwgTEVGVF9BTFRfUFJFU1NFRCApICYmCisgICAgICAoIEtleUV2ZW50UmVjb3Jk
LT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LndWaXJ0dWFsS2V5Q29kZSA9PSBWS19VUCB8fAor
CUtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LndWaXJ0dWFsS2V5Q29k
ZSA9PSBWS19ET1dOKSApCisgICAgeworICAgICAgaWYoIEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2
ZW50LkV2ZW50LktleUV2ZW50LmJLZXlEb3duID09IFRSVUUgKQogCXsKLQkgIHdoaWxlKCAxICkK
LQkgICAgewotCSAgICAgIFN0YXR1cyA9IE50V2FpdEZvck11bHRpcGxlT2JqZWN0cyggMiwgRXZl
bnRzLCBXYWl0QW55LCBGQUxTRSwgTlVMTCApOwotCSAgICAgIGlmKCBTdGF0dXMgPT0gU1RBVFVT
X1dBSVRfMCArIDEgKQotCQl7Ci0JCSAgTE9DSzsKLQkJICBDc3JEcmF3Q29uc29sZSggQWN0aXZl
Q29uc29sZS0+QWN0aXZlQnVmZmVyICk7Ci0JCSAgVU5MT0NLOwotCQkgIGNvbnRpbnVlOwotCQl9
Ci0JICAgICAgZWxzZSBpZiggU3RhdHVzICE9IFNUQVRVU19XQUlUXzAgKQotCQl7Ci0JCSAgRGJn
UHJpbnQoICJDU1I6IE50V2FpdEZvck11bHRpcGxlT2JqZWN0cyBmYWlsZWQ6ICV4LCBleGl0aW5n
XG4iLCBTdGF0dXMgKTsKLQkJICBOdFRlcm1pbmF0ZVByb2Nlc3MoIE50Q3VycmVudFByb2Nlc3Mo
KSwgU3RhdHVzICk7Ci0JCX0KLQkgICAgICBlbHNlIGJyZWFrOwotCSAgICB9Ci0JfQotICAgICAg
aWYoIEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmR3Q29udHJvbEtl
eVN0YXRlICYKLSAgICAgICAgKCBSSUdIVF9BTFRfUFJFU1NFRCB8IExFRlRfQUxUX1BSRVNTRUQg
KSYmCi0gICAgICAgICAgS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQu
d1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQiApCi0JIGlmKCBLZXlFdmVudFJlY29yZC0+SW5wdXRF
dmVudC5FdmVudC5LZXlFdmVudC5iS2V5RG93biA9PSBUUlVFICkKKwkgIC8qIHNjcm9sbCB1cCBv
ciBkb3duICovCisJICBMT0NLOworCSAgaWYoIENvbnNvbGUgPT0gMCApCiAJICAgIHsKLQkgICAg
ICBBTlNJX1NUUklORyBUaXRsZTsKLQkgICAgICB2b2lkICogQnVmZmVyOwotCSAgICAgIENPT1JE
ICpwb3M7Ci0JICAgICAgCi0JICAgICAgIC8qIGFsdC10YWIsIHN3YXAgY29uc29sZXMgKi8KLQkg
ICAgICAgLy8gbW92ZSBTd2FwQ29uc29sZSB0byBuZXh0IGNvbnNvbGUsIGFuZCBwcmludCBpdHMg
dGl0bGUKLQkgICAgICBMT0NLOwotCSAgICAgIGlmKCAhU3dhcENvbnNvbGUgKQotCQlTd2FwQ29u
c29sZSA9IEFjdGl2ZUNvbnNvbGU7Ci0JICAgICAgCi0JICAgICAgaWYoIEtleUV2ZW50UmVjb3Jk
LT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmR3Q29udHJvbEtleVN0YXRlICYgU0hJRlRfUFJF
U1NFRCApCi0JCVN3YXBDb25zb2xlID0gU3dhcENvbnNvbGUtPlByZXY7Ci0JICAgICAgZWxzZSBT
d2FwQ29uc29sZSA9IFN3YXBDb25zb2xlLT5OZXh0OwotCSAgICAgIFRpdGxlLk1heGltdW1MZW5n
dGggPSBSdGxVbmljb2RlU3RyaW5nVG9BbnNpU2l6ZSggJlN3YXBDb25zb2xlLT5UaXRsZSApOwot
CSAgICAgIFRpdGxlLkxlbmd0aCA9IDA7Ci0JICAgICAgQnVmZmVyID0gUnRsQWxsb2NhdGVIZWFw
KCBDc3Jzc0FwaUhlYXAsCi0JCQkJCTAsCi0JCQkJCXNpemVvZiggQ09PUkQgKSArIFRpdGxlLk1h
eGltdW1MZW5ndGgpOwotCSAgICAgIHBvcyA9IChDT09SRCAqKUJ1ZmZlcjsKLQkgICAgICBUaXRs
ZS5CdWZmZXIgPSBCdWZmZXIgKyBzaXplb2YoIENPT1JEICk7Ci0KLSAgICAgICAgICAgICAgUnRs
VW5pY29kZVN0cmluZ1RvQW5zaVN0cmluZygmVGl0bGUsICZTd2FwQ29uc29sZS0+VGl0bGUsIEZB
TFNFKTsKLQkgICAgICBwb3MtPlkgPSBQaHlzaWNhbENvbnNvbGVTaXplLlkgLyAyOwotCSAgICAg
IHBvcy0+WCA9ICggUGh5c2ljYWxDb25zb2xlU2l6ZS5YIC0gVGl0bGUuTGVuZ3RoICkgLyAyOwot
CSAgICAgIC8vIHJlZHJhdyB0aGUgY29uc29sZSB0byBjbGVhciBvZmYgb2xkIHRpdGxlCi0JICAg
ICAgQ3NyRHJhd0NvbnNvbGUoIEFjdGl2ZUNvbnNvbGUtPkFjdGl2ZUJ1ZmZlciApOwotCSAgICAg
IFN0YXR1cyA9IE50RGV2aWNlSW9Db250cm9sRmlsZSggQ29uc29sZURldmljZUhhbmRsZSwKLQkJ
CQkJICAgICAgTlVMTCwKLQkJCQkJICAgICAgTlVMTCwKLQkJCQkJICAgICAgTlVMTCwKLQkJCQkJ
ICAgICAgJklvc2IsCi0JCQkJCSAgICAgIElPQ1RMX0NPTlNPTEVfV1JJVEVfT1VUUFVUX0NIQVJB
Q1RFUiwKLQkJCQkJICAgICAgQnVmZmVyLAotCQkJCQkgICAgICBzaXplb2YgKENPT1JEKSArIFRp
dGxlLkxlbmd0aCwKLQkJCQkJICAgICAgTlVMTCwKLQkJCQkJICAgICAgMCk7Ci0JICAgICAgaWYo
ICFOVF9TVUNDRVNTKCBTdGF0dXMgKSApCi0JCXsKLQkJICBEUFJJTlQxKCAiRXJyb3Igd3JpdGlu
ZyB0byBjb25zb2xlXG4iICk7Ci0JCX0KLQkgICAgICBSdGxGcmVlSGVhcCggQ3Nyc3NBcGlIZWFw
LCAwLCBCdWZmZXIgKTsKLQkgICAgICAKKwkgICAgICBEYmdQcmludCggIkNTUjogTm8gQWN0aXZl
IENvbnNvbGUhXG4iICk7CiAJICAgICAgVU5MT0NLOwogCSAgICAgIFJ0bEZyZWVIZWFwKCBDc3Jz
c0FwaUhlYXAsIDAsIEtleUV2ZW50UmVjb3JkICk7Ci0JICAgICAgY29udGludWU7CisJICAgICAg
cmV0dXJuOwogCSAgICB9Ci0JIGVsc2UgewotCSAgICBSdGxGcmVlSGVhcCggQ3Nyc3NBcGlIZWFw
LCAwLCBLZXlFdmVudFJlY29yZCApOwotCSAgICBjb250aW51ZTsKLQkgfQotICAgICAgZWxzZSBp
ZiggU3dhcENvbnNvbGUgJiYKLQkgICAgICAgS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZl
bnQuS2V5RXZlbnQud1ZpcnR1YWxLZXlDb2RlID09IFZLX01FTlUgJiYKLQkgICAgICAgS2V5RXZl
bnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktleURvd24gPT0gRkFMU0UgKQot
CXsKLQkgIC8vIGFsdCBrZXkgcmVsZWFzZWQsIHN3YXAgY29uc29sZXMKLQkgIFBDU1JTU19DT05T
T0xFIHRtcDsKLQotCSAgTE9DSzsKLQkgIGlmKCBTd2FwQ29uc29sZSAhPSBBY3RpdmVDb25zb2xl
ICkKKwkgIGlmKCBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC53Vmly
dHVhbEtleUNvZGUgPT0gVktfVVAgKQogCSAgICB7Ci0JICAgICAgLy8gZmlyc3QgcmVtb3ZlIHN3
YXBjb25zb2xlIGZyb20gdGhlIGxpc3QKLQkgICAgICBTd2FwQ29uc29sZS0+UHJldi0+TmV4dCA9
IFN3YXBDb25zb2xlLT5OZXh0OwotCSAgICAgIFN3YXBDb25zb2xlLT5OZXh0LT5QcmV2ID0gU3dh
cENvbnNvbGUtPlByZXY7Ci0JICAgICAgLy8gbm93IGluc2VydCBiZWZvcmUgYWN0aXZlY29uc29s
ZQotCSAgICAgIFN3YXBDb25zb2xlLT5OZXh0ID0gQWN0aXZlQ29uc29sZTsKLQkgICAgICBTd2Fw
Q29uc29sZS0+UHJldiA9IEFjdGl2ZUNvbnNvbGUtPlByZXY7Ci0JICAgICAgQWN0aXZlQ29uc29s
ZS0+UHJldi0+TmV4dCA9IFN3YXBDb25zb2xlOwotCSAgICAgIEFjdGl2ZUNvbnNvbGUtPlByZXYg
PSBTd2FwQ29uc29sZTsKKwkgICAgICAvKiBvbmx5IHNjcm9sbCB1cCBpZiB0aGVyZSBpcyByb29t
IHRvIHNjcm9sbCB1cCBpbnRvICovCisJICAgICAgaWYoIENvbnNvbGUtPkFjdGl2ZUJ1ZmZlci0+
U2hvd1kgIT0gKChDb25zb2xlLT5BY3RpdmVCdWZmZXItPkN1cnJlbnRZICsgMSkgJQorCQkJCQkJ
CSBDb25zb2xlLT5BY3RpdmVCdWZmZXItPk1heFkpICkKKwkJQ29uc29sZS0+QWN0aXZlQnVmZmVy
LT5TaG93WSA9IChDb25zb2xlLT5BY3RpdmVCdWZmZXItPlNob3dZICsKKwkJCQkJCSAgICAgIENv
bnNvbGUtPkFjdGl2ZUJ1ZmZlci0+TWF4WSAtIDEpICUgQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5N
YXhZOwogCSAgICB9Ci0JICBBY3RpdmVDb25zb2xlID0gU3dhcENvbnNvbGU7Ci0JICBTd2FwQ29u
c29sZSA9IDA7Ci0JICBDc3JEcmF3Q29uc29sZSggQWN0aXZlQ29uc29sZS0+QWN0aXZlQnVmZmVy
ICk7Ci0KKwkgIGVsc2UgaWYoIENvbnNvbGUtPkFjdGl2ZUJ1ZmZlci0+U2hvd1kgIT0gQ29uc29s
ZS0+QWN0aXZlQnVmZmVyLT5DdXJyZW50WSApCisJICAgIC8qIG9ubHkgc2Nyb2xsIGRvd24gaWYg
dGhlcmUgaXMgcm9vbSB0byBzY3JvbGwgZG93biBpbnRvICovCisJICAgIGlmKCBDb25zb2xlLT5B
Y3RpdmVCdWZmZXItPlNob3dZICUgQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5NYXhZICE9IAorCQlD
b25zb2xlLT5BY3RpdmVCdWZmZXItPkN1cnJlbnRZICkKKwkgICAgICAKKwkgICAgICBpZiggKChD
b25zb2xlLT5BY3RpdmVCdWZmZXItPkN1cnJlbnRZICsgMSkgJSBDb25zb2xlLT5BY3RpdmVCdWZm
ZXItPk1heFkpICE9IAorCQkgIChDb25zb2xlLT5BY3RpdmVCdWZmZXItPlNob3dZICsgUGh5c2lj
YWxDb25zb2xlU2l6ZS5ZKSAlIENvbnNvbGUtPkFjdGl2ZUJ1ZmZlci0+TWF4WSApCisJCUNvbnNv
bGUtPkFjdGl2ZUJ1ZmZlci0+U2hvd1kgPSAoQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5TaG93WSAr
IDEpICUKKwkJICBDb25zb2xlLT5BY3RpdmVCdWZmZXItPk1heFk7CisJICBDc3JEcmF3Q29uc29s
ZSggQ29uc29sZS0+QWN0aXZlQnVmZmVyICk7CiAJICBVTkxPQ0s7CiAJfQotICAgICAvKiBwcm9j
ZXNzIEN0cmwtQyBhbmQgQ3RybC1CcmVhayAqLwotICAgICBpZiAoQWN0aXZlQ29uc29sZS0+TW9k
ZSAmIEVOQUJMRV9QUk9DRVNTRURfSU5QVVQgJiYKLSAgICAgICAgIEtleUV2ZW50UmVjb3JkLT5J
bnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmJLZXlEb3duICYmCi0JICgoS2V5RXZlbnRSZWNvcmQt
PklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQud1ZpcnR1YWxLZXlDb2RlID09IFZLX1BBVVNFKSB8
fCAKLQkgKEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LndWaXJ0dWFs
S2V5Q29kZSA9PSAnQycpKSAmJgotCSAoS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQu
S2V5RXZlbnQuZHdDb250cm9sS2V5U3RhdGUgJiAoTEVGVF9DVFJMX1BSRVNTRUQgfCBSSUdIVF9D
VFJMX1BSRVNTRUQpKSkKLSAgICAgICAgIHsKLQkgICAgUENTUlNTX1BST0NFU1NfREFUQSBjdXJy
ZW50OwotCSAgICBQTElTVF9FTlRSWSBjdXJyZW50X2VudHJ5OwotICAgICAgICAgICAgRFBSSU5U
MSgiQ29uc29sZV9BcGkgQ3RybC1DXG4iKTsKLQkgICAgTE9DSzsKLQkgICAgY3VycmVudF9lbnRy
eSA9IEFjdGl2ZUNvbnNvbGUtPlByb2Nlc3NMaXN0LkZsaW5rOwotCSAgICB3aGlsZSAoY3VycmVu
dF9lbnRyeSAhPSAmQWN0aXZlQ29uc29sZS0+UHJvY2Vzc0xpc3QpCi0JICAgIHsKLQkJY3VycmVu
dCA9IENPTlRBSU5JTkdfUkVDT1JEKGN1cnJlbnRfZW50cnksIENTUlNTX1BST0NFU1NfREFUQSwg
UHJvY2Vzc0VudHJ5KTsKLQkJY3VycmVudF9lbnRyeSA9IGN1cnJlbnRfZW50cnktPkZsaW5rOwot
CQlDc3JDb25zb2xlQ3RybEV2ZW50KChEV09SRClDVFJMX0NfRVZFTlQsIGN1cnJlbnQpOwotCSAg
ICB9Ci0JICAgIFVOTE9DSzsKLQkgICAgUnRsRnJlZUhlYXAoIENzcnNzQXBpSGVhcCwgMCwgS2V5
RXZlbnRSZWNvcmQgKTsKLQkgICAgY29udGludWU7Ci0JIH0KLSAgICAgaWYoIEtleUV2ZW50UmVj
b3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmR3Q29udHJvbEtleVN0YXRlICYKLSAgICAg
ICAgKCBSSUdIVF9BTFRfUFJFU1NFRCB8IExFRlRfQUxUX1BSRVNTRUQgKSAmJgotICAgICAgICAo
IEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LndWaXJ0dWFsS2V5Q29k
ZSA9PSBWS19VUCB8fAotICAgICAgICAgIEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50
LktleUV2ZW50LndWaXJ0dWFsS2V5Q29kZSA9PSBWS19ET1dOKSApCi0JIHsKLQkgICAgaWYoIEtl
eUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmJLZXlEb3duID09IFRSVUUg
KQotCSAgICAgICB7Ci0JCSAgLyogc2Nyb2xsIHVwIG9yIGRvd24gKi8KLQkJICBMT0NLOwotCQkg
IGlmKCBBY3RpdmVDb25zb2xlID09IDAgKQotCQkgICAgIHsKLQkJCURiZ1ByaW50KCAiQ1NSOiBO
byBBY3RpdmUgQ29uc29sZSFcbiIgKTsKLQkgICAgCQlVTkxPQ0s7Ci0JCQlSdGxGcmVlSGVhcCgg
Q3Nyc3NBcGlIZWFwLCAwLCBLZXlFdmVudFJlY29yZCApOwotCQkJY29udGludWU7Ci0JCSAgICAg
fQotCQkgIGlmKCBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC53Vmly
dHVhbEtleUNvZGUgPT0gVktfVVAgKQotCQkgICAgIHsKLQkJCS8qIG9ubHkgc2Nyb2xsIHVwIGlm
IHRoZXJlIGlzIHJvb20gdG8gc2Nyb2xsIHVwIGludG8gKi8KLQkJCWlmKCBBY3RpdmVDb25zb2xl
LT5BY3RpdmVCdWZmZXItPlNob3dZICE9ICgoQWN0aXZlQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5D
dXJyZW50WSArIDEpICUKLSAgICAgICAgQWN0aXZlQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5NYXhZ
KSApCi0JCQkgICBBY3RpdmVDb25zb2xlLT5BY3RpdmVCdWZmZXItPlNob3dZID0gKEFjdGl2ZUNv
bnNvbGUtPkFjdGl2ZUJ1ZmZlci0+U2hvd1kgKwotICAgICAgICAgQWN0aXZlQ29uc29sZS0+QWN0
aXZlQnVmZmVyLT5NYXhZIC0gMSkgJSBBY3RpdmVDb25zb2xlLT5BY3RpdmVCdWZmZXItPk1heFk7
Ci0JCSAgICAgfQotCQkgIGVsc2UgaWYoIEFjdGl2ZUNvbnNvbGUtPkFjdGl2ZUJ1ZmZlci0+U2hv
d1kgIT0gQWN0aXZlQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5DdXJyZW50WSApCi0JCSAgICAgLyog
b25seSBzY3JvbGwgZG93biBpZiB0aGVyZSBpcyByb29tIHRvIHNjcm9sbCBkb3duIGludG8gKi8K
LQkJICAgICBpZiggQWN0aXZlQ29uc29sZS0+QWN0aXZlQnVmZmVyLT5TaG93WSAlIEFjdGl2ZUNv
bnNvbGUtPkFjdGl2ZUJ1ZmZlci0+TWF4WSAhPSAKLSAgICAgICAgICAgQWN0aXZlQ29uc29sZS0+
QWN0aXZlQnVmZmVyLT5DdXJyZW50WSApCi0KLQkJCWlmKCAoKEFjdGl2ZUNvbnNvbGUtPkFjdGl2
ZUJ1ZmZlci0+Q3VycmVudFkgKyAxKSAlIEFjdGl2ZUNvbnNvbGUtPkFjdGl2ZUJ1ZmZlci0+TWF4
WSkgIT0gCi0gICAgICAgIChBY3RpdmVDb25zb2xlLT5BY3RpdmVCdWZmZXItPlNob3dZICsgUGh5
c2ljYWxDb25zb2xlU2l6ZS5ZKSAlIEFjdGl2ZUNvbnNvbGUtPkFjdGl2ZUJ1ZmZlci0+TWF4WSAp
Ci0JCQkgICBBY3RpdmVDb25zb2xlLT5BY3RpdmVCdWZmZXItPlNob3dZID0gKEFjdGl2ZUNvbnNv
bGUtPkFjdGl2ZUJ1ZmZlci0+U2hvd1kgKyAxKSAlCi0gICAgICAgICBBY3RpdmVDb25zb2xlLT5B
Y3RpdmVCdWZmZXItPk1heFk7Ci0JCSAgQ3NyRHJhd0NvbnNvbGUoIEFjdGl2ZUNvbnNvbGUtPkFj
dGl2ZUJ1ZmZlciApOwotCQkgIFVOTE9DSzsKLQkgICAgICAgfQotCSAgICBSdGxGcmVlSGVhcCgg
Q3Nyc3NBcGlIZWFwLCAwLCBLZXlFdmVudFJlY29yZCApOwotCSAgICBjb250aW51ZTsKLQl9Ci0g
ICAgICBMT0NLOwotICAgICAgaWYoIEFjdGl2ZUNvbnNvbGUgPT0gMCApCi0JIHsKLQkgICAgRGJn
UHJpbnQoICJDU1I6IE5vIEFjdGl2ZSBDb25zb2xlIVxuIiApOwotCSAgICBVTkxPQ0s7Ci0JICAg
IFJ0bEZyZWVIZWFwKCBDc3Jzc0FwaUhlYXAsIDAsIEtleUV2ZW50UmVjb3JkICk7Ci0JICAgIGNv
bnRpbnVlOwotCSB9Ci0gICAgICAvLyBwcm9jZXNzIHNwZWNpYWwga2V5cyBpZiBlbmFibGVkCi0g
ICAgICBpZiggQWN0aXZlQ29uc29sZS0+TW9kZSAmIChFTkFCTEVfUFJPQ0VTU0VEX0lOUFVUIHwg
RU5BQkxFX0xJTkVfSU5QVVQpICkKLQkgIHN3aXRjaCggS2V5RXZlbnRSZWNvcmQtPklucHV0RXZl
bnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNjaWlDaGFyICkKLQkgICAgewotCSAgICBjYXNlICdc
cic6Ci0JICAgICAgLy8gYWRkIGEgXG4gdG8gdGhlIHF1ZXVlIGFzIHdlbGwKLQkgICAgICAvLyBm
aXJzdCBhZGQgdGhlIFxyCi0JICAgICAgdXBkb3duID0gS2V5RXZlbnRSZWNvcmQtPklucHV0RXZl
bnQuRXZlbnQuS2V5RXZlbnQuYktleURvd247Ci0JICAgICAgS2V5RXZlbnRSZWNvcmQtPkVjaG9l
ZCA9IEZBTFNFOwotCSAgICAgIEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2
ZW50LnVDaGFyLkFzY2lpQ2hhciA9ICdccic7Ci0gICAgICAgIEluc2VydFRhaWxMaXN0KCZBY3Rp
dmVDb25zb2xlLT5JbnB1dEV2ZW50cywgJktleUV2ZW50UmVjb3JkLT5MaXN0RW50cnkpOwotCSAg
ICAgIEFjdGl2ZUNvbnNvbGUtPldhaXRpbmdDaGFycysrOwotCSAgICAgIEtleUV2ZW50UmVjb3Jk
ID0gUnRsQWxsb2NhdGVIZWFwKCBDc3Jzc0FwaUhlYXAsIDAsIHNpemVvZiggQ29uc29sZUlucHV0
ICkgKTsKLQkgICAgICBpZiggIUtleUV2ZW50UmVjb3JkICkKLQkJewotCQkgIERiZ1ByaW50KCAi
Q1NSOiBGYWlsZWQgdG8gYWxsb2NhdGUgS2V5RXZlbnRSZWNvcmRcbiIgKTsKLQkJICBVTkxPQ0s7
Ci0JCSAgY29udGludWU7Ci0JCX0KLQkgICAgICBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5F
dmVudFR5cGUgPSBLRVlfRVZFTlQ7Ci0JICAgICAgS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQu
RXZlbnQuS2V5RXZlbnQuYktleURvd24gPSB1cGRvd247Ci0JICAgICAgS2V5RXZlbnRSZWNvcmQt
PklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQud1ZpcnR1YWxLZXlDb2RlID0gMDsKLQkgICAgICBL
ZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC53VmlydHVhbFNjYW5Db2Rl
ID0gMDsKLQkgICAgICBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51
Q2hhci5Bc2NpaUNoYXIgPSAnXG4nOwotCSAgICB9Ci0gICAgICAvLyBhZGQgZXZlbnQgdG8gdGhl
IHF1ZXVlCi0gICAgICBJbnNlcnRUYWlsTGlzdCgmQWN0aXZlQ29uc29sZS0+SW5wdXRFdmVudHMs
ICZLZXlFdmVudFJlY29yZC0+TGlzdEVudHJ5KTsKLSAgICAgIC8vIGlmIGxpbmUgaW5wdXQgbW9k
ZSBpcyBlbmFibGVkLCBvbmx5IHdha2UgdGhlIGNsaWVudCBvbiBlbnRlciBrZXkgZG93bgotICAg
ICAgaWYoICEoQWN0aXZlQ29uc29sZS0+TW9kZSAmIEVOQUJMRV9MSU5FX0lOUFVUICkgfHwKLQkg
IEFjdGl2ZUNvbnNvbGUtPkVhcmx5UmV0dXJuIHx8Ci0JICAoIEtleUV2ZW50UmVjb3JkLT5JbnB1
dEV2ZW50LkV2ZW50LktleUV2ZW50LnVDaGFyLkFzY2lpQ2hhciA9PSAnXG4nICYmCi0JICAgIEtl
eUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmJLZXlEb3duID09IFRSVUUg
KSApCisgICAgICBSdGxGcmVlSGVhcCggQ3Nyc3NBcGlIZWFwLCAwLCBLZXlFdmVudFJlY29yZCAp
OworICAgICAgcmV0dXJuOworICAgIH0KKyAgaWYoIENvbnNvbGUgPT0gMCApCisgICAgeworICAg
ICAgRGJnUHJpbnQoICJDU1I6IE5vIEFjdGl2ZSBDb25zb2xlIVxuIiApOworICAgICAgVU5MT0NL
OworICAgICAgUnRsRnJlZUhlYXAoIENzcnNzQXBpSGVhcCwgMCwgS2V5RXZlbnRSZWNvcmQgKTsK
KyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgaWYoIENvbnNvbGUtPk1vZGUgJiAoRU5BQkxFX1BS
T0NFU1NFRF9JTlBVVCB8IEVOQUJMRV9MSU5FX0lOUFVUKSApCisgICAgc3dpdGNoKCBLZXlFdmVu
dFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXIgKQorICAg
ICAgeworICAgICAgY2FzZSAnXHInOgorCS8vIGZpcnN0IGFkZCB0aGUgXHIKKyAgICAgICAgS2V5
RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnRUeXBlID0gS0VZX0VWRU5UOworCXVwZG93biA9
IEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmJLZXlEb3duOworCUtl
eUV2ZW50UmVjb3JkLT5FY2hvZWQgPSBGQUxTRTsKKwlLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVu
dC5FdmVudC5LZXlFdmVudC53VmlydHVhbEtleUNvZGUgPSBWS19SRVRVUk47CisJS2V5RXZlbnRS
ZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNjaWlDaGFyID0gJ1xyJzsK
KyAgICAgICAgSW5zZXJ0VGFpbExpc3QoJkNvbnNvbGUtPklucHV0RXZlbnRzLCAmS2V5RXZlbnRS
ZWNvcmQtPkxpc3RFbnRyeSk7CisJQ29uc29sZS0+V2FpdGluZ0NoYXJzKys7CisJS2V5RXZlbnRS
ZWNvcmQgPSBSdGxBbGxvY2F0ZUhlYXAoIENzcnNzQXBpSGVhcCwgMCwgc2l6ZW9mKCBDb25zb2xl
SW5wdXQgKSApOworCWlmKCAhS2V5RXZlbnRSZWNvcmQgKQorCSAgeworCSAgICBEYmdQcmludCgg
IkNTUjogRmFpbGVkIHRvIGFsbG9jYXRlIEtleUV2ZW50UmVjb3JkXG4iICk7CisJICAgIHJldHVy
bjsKKwkgIH0KKwlLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudFR5cGUgPSBLRVlfRVZF
TlQ7CisJS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktleURvd24g
PSB1cGRvd247CisJS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQud1Zp
cnR1YWxLZXlDb2RlID0gMDsKKwlLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlF
dmVudC53VmlydHVhbFNjYW5Db2RlID0gMDsKKwlLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5F
dmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXIgPSAnXG4nOworCUtleUV2ZW50UmVjb3JkLT5G
YWtlID0gVFJVRTsKKyAgICAgIH0KKyAgLy8gYWRkIGV2ZW50IHRvIHRoZSBxdWV1ZQorICBJbnNl
cnRUYWlsTGlzdCgmQ29uc29sZS0+SW5wdXRFdmVudHMsICZLZXlFdmVudFJlY29yZC0+TGlzdEVu
dHJ5KTsKKyAgQ29uc29sZS0+V2FpdGluZ0NoYXJzKys7CisgIC8vIGlmIGxpbmUgaW5wdXQgbW9k
ZSBpcyBlbmFibGVkLCBvbmx5IHdha2UgdGhlIGNsaWVudCBvbiBlbnRlciBrZXkgZG93bgorICBp
ZiggIShDb25zb2xlLT5Nb2RlICYgRU5BQkxFX0xJTkVfSU5QVVQgKSB8fAorICAgICAgQ29uc29s
ZS0+RWFybHlSZXR1cm4gfHwKKyAgICAgICggS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZl
bnQuS2V5RXZlbnQudUNoYXIuQXNjaWlDaGFyID09ICdcbicgJiYKKwlLZXlFdmVudFJlY29yZC0+
SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC5iS2V5RG93biA9PSBGQUxTRSkgKQorICAgIHsKKyAg
ICAgIGlmKCBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51Q2hhci5B
c2NpaUNoYXIgPT0gJ1xuJyApCisJQ29uc29sZS0+V2FpdGluZ0xpbmVzKys7CisgICAgICBiQ2xp
ZW50V2FrZSA9IFRSVUU7CisgICAgICBOdFNldEV2ZW50KCBDb25zb2xlLT5BY3RpdmVFdmVudCwg
MCApOworICAgIH0KKyAgS2V5RXZlbnRSZWNvcmQtPkVjaG9lZCA9IEZBTFNFOworICBpZiggQ29u
c29sZS0+TW9kZSAmIChFTkFCTEVfUFJPQ0VTU0VEX0lOUFVUIHwgRU5BQkxFX0xJTkVfSU5QVVQp
ICYmCisgICAgICBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51Q2hh
ci5Bc2NpaUNoYXIgPT0gJ1xiJyAmJgorICAgICAgS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQu
RXZlbnQuS2V5RXZlbnQuYktleURvd24gKQorICAgIHsKKyAgICAgIC8vIHdhbGsgdGhlIGlucHV0
IHF1ZXVlIGxvb2tpbmcgZm9yIGEgY2hhciB0byBiYWNrc3BhY2UKKyAgICAgIGZvciggVGVtcElu
cHV0ID0gKENvbnNvbGVJbnB1dCAqKUNvbnNvbGUtPklucHV0RXZlbnRzLkJsaW5rOworCSAgIFRl
bXBJbnB1dCAhPSAoQ29uc29sZUlucHV0ICopJkNvbnNvbGUtPklucHV0RXZlbnRzICYmCisJICAg
ICAoVGVtcElucHV0LT5JbnB1dEV2ZW50LkV2ZW50VHlwZSAhPSBLRVlfRVZFTlQgfHwKKwkgICAg
ICBUZW1wSW5wdXQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktleURvd24gPT0gRkFMU0Ug
fHwKKwkgICAgICBUZW1wSW5wdXQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNj
aWlDaGFyID09ICdcYicgKTsKKwkgICBUZW1wSW5wdXQgPSAoQ29uc29sZUlucHV0ICopVGVtcElu
cHV0LT5MaXN0RW50cnkuQmxpbmsgKTsKKyAgICAgIC8vIGlmIHdlIGZvdW5kIG9uZSwgZGVsZXRl
IGl0LCBvdGhlcndpc2UsIHdha2UgdGhlIGNsaWVudAorICAgICAgaWYoIFRlbXBJbnB1dCAhPSAo
Q29uc29sZUlucHV0ICopJkNvbnNvbGUtPklucHV0RXZlbnRzICkKIAl7Ci0JICBOdFNldEV2ZW50
KCBBY3RpdmVDb25zb2xlLT5BY3RpdmVFdmVudCwgMCApOwotCSAgaWYoIEtleUV2ZW50UmVjb3Jk
LT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LnVDaGFyLkFzY2lpQ2hhciA9PSAnXG4nICkKLQkg
ICAgIEFjdGl2ZUNvbnNvbGUtPldhaXRpbmdMaW5lcysrOworCSAgLy8gZGVsZXRlIHByZXZpb3Vz
IGtleSBpbiBxdWV1ZSwgbWF5YmUgZWNobyBiYWNrc3BhY2UgdG8gc2NyZWVuLCBhbmQgZG8gbm90
IHBsYWNlIGJhY2tzcGFjZSBvbiBxdWV1ZQorCSAgUmVtb3ZlRW50cnlMaXN0KCZUZW1wSW5wdXQt
Pkxpc3RFbnRyeSk7CisJICBpZiggVGVtcElucHV0LT5FY2hvZWQgKQorCSAgICBDc3JwV3JpdGVD
b25zb2xlKCBDb25zb2xlLT5BY3RpdmVCdWZmZXIsICZLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVu
dC5FdmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXIsIDEsIFRSVUUgKTsJCisgIFJ0bEZyZWVI
ZWFwKCBDc3Jzc0FwaUhlYXAsIDAsIFRlbXBJbnB1dCApOworCSAgUmVtb3ZlRW50cnlMaXN0KCZL
ZXlFdmVudFJlY29yZC0+TGlzdEVudHJ5KTsKKwkgIFJ0bEZyZWVIZWFwKCBDc3Jzc0FwaUhlYXAs
IDAsIEtleUV2ZW50UmVjb3JkICk7CisJICBDb25zb2xlLT5XYWl0aW5nQ2hhcnMgLT0gMjsKIAl9
Ci0gICAgICBLZXlFdmVudFJlY29yZC0+RWNob2VkID0gRkFMU0U7Ci0gICAgICBpZiggQWN0aXZl
Q29uc29sZS0+TW9kZSAmIChFTkFCTEVfUFJPQ0VTU0VEX0lOUFVUIHwgRU5BQkxFX0xJTkVfSU5Q
VVQpICYmCi0JICBLZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51Q2hh
ci5Bc2NpaUNoYXIgPT0gJ1xiJyAmJgotCSAgS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZl
bnQuS2V5RXZlbnQuYktleURvd24gKQotCSB7Ci0JICAgIC8vIHdhbGsgdGhlIGlucHV0IHF1ZXVl
IGxvb2tpbmcgZm9yIGEgY2hhciB0byBiYWNrc3BhY2UKLQkgICAgZm9yKCBUZW1wSW5wdXQgPSAo
Q29uc29sZUlucHV0ICopQWN0aXZlQ29uc29sZS0+SW5wdXRFdmVudHMuQmxpbms7Ci0JCSAgVGVt
cElucHV0ICE9IChDb25zb2xlSW5wdXQgKikmQWN0aXZlQ29uc29sZS0+SW5wdXRFdmVudHMgJiYK
LQkJICAoVGVtcElucHV0LT5JbnB1dEV2ZW50LkV2ZW50VHlwZSAhPSBLRVlfRVZFTlQgfHwKLQkJ
ICBUZW1wSW5wdXQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktleURvd24gPT0gRkFMU0Ug
fHwKLQkJICBUZW1wSW5wdXQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNjaWlD
aGFyID09ICdcYicgKTsKLQkJICBUZW1wSW5wdXQgPSAoQ29uc29sZUlucHV0ICopVGVtcElucHV0
LT5MaXN0RW50cnkuQmxpbmsgKTsKLQkgICAgLy8gaWYgd2UgZm91bmQgb25lLCBkZWxldGUgaXQs
IG90aGVyd2lzZSwgd2FrZSB0aGUgY2xpZW50Ci0JICAgIGlmKCBUZW1wSW5wdXQgIT0gKENvbnNv
bGVJbnB1dCAqKSZBY3RpdmVDb25zb2xlLT5JbnB1dEV2ZW50cyApCi0JICAgICAgIHsKLQkJICAv
LyBkZWxldGUgcHJldmlvdXMga2V5IGluIHF1ZXVlLCBtYXliZSBlY2hvIGJhY2tzcGFjZSB0byBz
Y3JlZW4sIGFuZCBkbyBub3QgcGxhY2UgYmFja3NwYWNlIG9uIHF1ZXVlCi0gICAgICBSZW1vdmVF
bnRyeUxpc3QoJlRlbXBJbnB1dC0+TGlzdEVudHJ5KTsKLQkJICBpZiggVGVtcElucHV0LT5FY2hv
ZWQgKQotCQkgICAgIENzcnBXcml0ZUNvbnNvbGUoIEFjdGl2ZUNvbnNvbGUtPkFjdGl2ZUJ1ZmZl
ciwgJktleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LnVDaGFyLkFzY2lp
Q2hhciwgMSwgVFJVRSApOwotCQkgIFJ0bEZyZWVIZWFwKCBDc3Jzc0FwaUhlYXAsIDAsIFRlbXBJ
bnB1dCApOwotICAgICAgUmVtb3ZlRW50cnlMaXN0KCZLZXlFdmVudFJlY29yZC0+TGlzdEVudHJ5
KTsKLQkJICBSdGxGcmVlSGVhcCggQ3Nyc3NBcGlIZWFwLCAwLCBLZXlFdmVudFJlY29yZCApOwot
CQkgIEFjdGl2ZUNvbnNvbGUtPldhaXRpbmdDaGFycyAtPSAyOwotCSAgICAgICB9Ci0JICAgIGVs
c2UgTnRTZXRFdmVudCggQWN0aXZlQ29uc29sZS0+QWN0aXZlRXZlbnQsIDAgKTsKLSAgIH0KICAg
ICAgIGVsc2UgewotCSAvLyBlY2hvIGNoYXJzIGlmIHdlIGFyZSBzdXBwb3NlZCB0byBhbmQgY2xp
ZW50IGlzIHdhaXRpbmcgZm9yIHNvbWUKLQkgaWYoICggQWN0aXZlQ29uc29sZS0+TW9kZSAmIEVO
QUJMRV9FQ0hPX0lOUFVUICkgJiYgQWN0aXZlQ29uc29sZS0+RWNob0NvdW50ICYmCi0JICAgICBL
ZXlFdmVudFJlY29yZC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXIg
JiYKLQkgICAgIEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LmJLZXlE
b3duID09IFRSVUUgJiYKLQkgICAgIEtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50Lktl
eUV2ZW50LnVDaGFyLkFzY2lpQ2hhciAhPSAnXHInICkKLQkgICAgewotCSAgICAgICAvLyBtYXJr
IHRoZSBjaGFyIGFzIGFscmVhZHkgZWNob2VkCi0JICAgICAgIENzcnBXcml0ZUNvbnNvbGUoIEFj
dGl2ZUNvbnNvbGUtPkFjdGl2ZUJ1ZmZlciwgJktleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2
ZW50LktleUV2ZW50LnVDaGFyLkFzY2lpQ2hhciwgMSwgVFJVRSApOwotCSAgICAgICBBY3RpdmVD
b25zb2xlLT5FY2hvQ291bnQtLTsKLQkgICAgICAgS2V5RXZlbnRSZWNvcmQtPkVjaG9lZCA9IFRS
VUU7Ci0JICAgIH0KKyAgICAgICAgICBOdFNldEV2ZW50KCBDb25zb2xlLT5BY3RpdmVFdmVudCwg
MCApOwogICAgICAgfQorICAgIH0KKyAgZWxzZSB7CisgICAgLy8gZWNobyBjaGFycyBpZiB3ZSBh
cmUgc3VwcG9zZWQgdG8gYW5kIGNsaWVudCBpcyB3YWl0aW5nIGZvciBzb21lCisgICAgaWYoICgg
Q29uc29sZS0+TW9kZSAmIEVOQUJMRV9FQ0hPX0lOUFVUICkgJiYgQ29uc29sZS0+RWNob0NvdW50
ICYmCisJS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNj
aWlDaGFyICYmCisJS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktl
eURvd24gPT0gVFJVRSAmJgorCUtleUV2ZW50UmVjb3JkLT5JbnB1dEV2ZW50LkV2ZW50LktleUV2
ZW50LnVDaGFyLkFzY2lpQ2hhciAhPSAnXHInICkKKyAgICAgIHsKKwkvLyBtYXJrIHRoZSBjaGFy
IGFzIGFscmVhZHkgZWNob2VkCisJQ3NycFdyaXRlQ29uc29sZSggQ29uc29sZS0+QWN0aXZlQnVm
ZmVyLCAmS2V5RXZlbnRSZWNvcmQtPklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNj
aWlDaGFyLCAxLCBUUlVFICk7CisJQ29uc29sZS0+RWNob0NvdW50LS07CisJS2V5RXZlbnRSZWNv
cmQtPkVjaG9lZCA9IFRSVUU7CisgICAgICB9CisgIH0KKyAgLyogQ29uc29sZS0+V2FpdGluZ0No
YXJzKys7ICovCisgIGlmKCBiQ2xpZW50V2FrZSB8fCAhKENvbnNvbGUtPk1vZGUgJiBFTkFCTEVf
TElORV9JTlBVVCkgKSB7CisgICAgTnRTZXRFdmVudCggQ29uc29sZS0+QWN0aXZlRXZlbnQsIDAg
KTsKKyAgfQorfQogCi0gICAgICAKLSAgICAgIEFjdGl2ZUNvbnNvbGUtPldhaXRpbmdDaGFycysr
OwotICAgICAgaWYoICEoQWN0aXZlQ29uc29sZS0+TW9kZSAmIEVOQUJMRV9MSU5FX0lOUFVUKSAp
Ci0JTnRTZXRFdmVudCggQWN0aXZlQ29uc29sZS0+QWN0aXZlRXZlbnQsIDAgKTsKLSAgICAgIFVO
TE9DSzsKK3N0YXRpYyBEV09SRCBDc3JwR2V0U2hpZnRTdGF0ZSggUEJZVEUgS2V5U3RhdGUgKSB7
CisgIGludCBpOworICBEV09SRCBzc091dCA9IDA7CisKKyAgZm9yKCBpID0gMDsgaSA8IDB4MTAw
OyBpKysgKSB7CisgICAgaWYoIEtleVN0YXRlW2ldICYgMHg4MCApIHsKKyAgICAgIFVJTlQgdmsg
PSBOdFVzZXJNYXBWaXJ0dWFsS2V5RXgoIGksIDMsIDAsIDAgKSAmIDB4ZmY7CisgICAgICBzd2l0
Y2goIHZrICkgeworICAgICAgY2FzZSBWS19MU0hJRlQ6CisgICAgICBjYXNlIFZLX1JTSElGVDoK
KyAgICAgIGNhc2UgVktfU0hJRlQ6CisJc3NPdXQgfD0gU0hJRlRfUFJFU1NFRDsKKwlicmVhazsK
KworICAgICAgY2FzZSBWS19MQ09OVFJPTDoKKyAgICAgIGNhc2UgVktfQ09OVFJPTDoKKwlzc091
dCB8PSBMRUZUX0NUUkxfUFJFU1NFRDsKKwlicmVhazsKKworICAgICAgY2FzZSBWS19SQ09OVFJP
TDoKKwlzc091dCB8PSBSSUdIVF9DVFJMX1BSRVNTRUQgfCBFTkhBTkNFRF9LRVk7CisJYnJlYWs7
CisKKyAgICAgIGNhc2UgVktfTE1FTlU6CisgICAgICBjYXNlIFZLX01FTlU6CisJc3NPdXQgfD0g
TEVGVF9BTFRfUFJFU1NFRDsKKwlicmVhazsKKworICAgICAgY2FzZSBWS19STUVOVToKKwlzc091
dCB8PSBSSUdIVF9BTFRfUFJFU1NFRCB8IEVOSEFOQ0VEX0tFWTsKKwlicmVhazsKKyAgICAgIH0K
ICAgICB9CisgIH0KKworICByZXR1cm4gc3NPdXQ7Cit9CisKK1ZPSUQgQ29uc29sZV9BcGkoIERX
T1JEIFJlZnJlc2hFdmVudCApCit7CisgIC8qIGtlZXAgcmVhZGluZyBldmVudHMgZnJvbSB0aGUg
a2V5Ym9hcmQgYW5kIHN0dWZmaW5nIHRoZW0gaW50byB0aGUgY3VycmVudAorICAgICBjb25zb2xl
J3MgaW5wdXQgcXVldWUgKi8KKyAgUENTUlNTX0NPTlNPTEUgU3dhcENvbnNvbGUgPSAwOyAvLyBj
b25zb2xlIHdlIGFyZSB0aGlua2luZyBhYm91dCBzd2FwcGluZyB3aXRoCisgIE1TRyBtc2c7Cisg
IENvbnNvbGVJbnB1dCAqQ29uSW5SZWM7CisgIFVJTlQgUmVwZWF0Q291bnQ7CisgIFdDSEFSIFVu
aWNvZGVDaGFyOworICBVSU5UIFZpcnR1YWxLZXlDb2RlOworICBVSU5UIFZpcnR1YWxTY2FuQ29k
ZTsKKyAgVUlOVCBBc2NpaUNoYXI7CisgIERXT1JEIFNoaWZ0U3RhdGU7CisgIEJPT0wgU3VibWl0
S2V5OworICBCT09MIERvd24gPSBGQUxTRTsKKyAgQk9PTCBFeHQgPSBGQUxTRTsKKyAgQllURSBL
ZXlTdGF0ZVsyNTZdID0geyAwIH07CisgIGludCBSZXRDaGFyczsKKyAgV0NIQVIgQ2hhcnNbMl0g
PSB7IDAgfTsKKyAgSU5QVVRfUkVDT1JEIGVyOworICBOVFNUQVRVUyBTdGF0dXM7CisgIElPX1NU
QVRVU19CTE9DSyBJb3NiOworICBCWVRFIE1hc2s7CisKKyAgLyogVGhpcyBjYWxsIGVzdGFibGlz
aGVzIG91ciBtZXNzYWdlIHF1ZXVlICovCisgIE50VXNlclBlZWtNZXNzYWdlKCAmbXNnLCAwLDAs
MCwgUE1fTk9SRU1PVkUgKTsKKyAgLyogVGhpcyBjYWxsIHJlZ2lzdGVycyBvdXIgbWVzc2FnZSBx
dWV1ZSAqLworICBOdFVzZXJDYWxsTm9QYXJhbSggTk9QQVJBTV9ST1VUSU5FX1JFR0lTVEVSX1BS
SU1JVElWRSApOworICAvKiBUaGlzIGNhbGwgdHVybnMgb24gdGhlIGlucHV0IHN5c3RlbSBpbiB3
aW4zMmsgKi8KKyAgTnRVc2VyQWNxdWlyZU9yUmVsZWFzZUlucHV0T3duZXJzaGlwKCBGQUxTRSAp
OworICAKKyAgd2hpbGUoIFRSVUUgKSB7CisgICAgTnRVc2VyR2V0TWVzc2FnZSggJm1zZywgMCww
LDAgKTsKKyAgICBOdFVzZXJUcmFuc2xhdGVNZXNzYWdlKCAmbXNnLCAwICk7CisgICAgCisgICAg
U3VibWl0S2V5ID0gRkFMU0U7CisKKyAgICBpZiggbXNnLm1lc3NhZ2UgPT0gV01fS0VZRE9XTiB8
fCBtc2cubWVzc2FnZSA9PSBXTV9LRVlVUCB8fAorCW1zZy5tZXNzYWdlID09IFdNX1NZU0tFWURP
V04gfHwgbXNnLm1lc3NhZ2UgPT0gV01fU1lTS0VZVVAgKSB7CisgICAgICBSZXBlYXRDb3VudCA9
IDE7CisgICAgICBWaXJ0dWFsU2NhbkNvZGUgPSAobXNnLmxQYXJhbSA+PiAxNikgJiAweGZmOwor
ICAgICAgVmlydHVhbEtleUNvZGUgPSBtc2cud1BhcmFtOworICAgICAgRG93biA9IG1zZy5tZXNz
YWdlID09IFdNX0tFWURPV04gfHwgbXNnLm1lc3NhZ2UgPT0gV01fU1lTS0VZRE9XTjsKKyAgICAg
IEV4dCA9IG1zZy5sUGFyYW0gJiAweDAxMDAwMDAwID8gVFJVRSA6IEZBTFNFOworCisgICAgICBp
ZiAoRXh0KQorICAgICAgICBNYXNrID0gMHg0MDsKKyAgICAgIGVsc2UKKyAgICAgICAgTWFzayA9
IDB4ODA7CisKKyAgICAgIGlmKCBEb3duICkgCisgICAgICAgIEtleVN0YXRlW1ZpcnR1YWxTY2Fu
Q29kZV0gfD0gTWFzazsKKyAgICAgIGVsc2UKKwlLZXlTdGF0ZVtWaXJ0dWFsU2NhbkNvZGVdICY9
IH5NYXNrOworCisKKyAgICAgIFNoaWZ0U3RhdGUgPSBDc3JwR2V0U2hpZnRTdGF0ZSggS2V5U3Rh
dGUgKTsKKworICAgICAgUmV0Q2hhcnMgPSBOdFVzZXJUb1VuaWNvZGVFeCggVmlydHVhbEtleUNv
ZGUsCisJCQkJICAgIFZpcnR1YWxTY2FuQ29kZSwKKwkJCQkgICAgS2V5U3RhdGUsCisJCQkJICAg
IENoYXJzLAorCQkJCSAgICAyLAorCQkJCSAgICAwLAorCQkJCSAgICAwICk7CisKKyAgICAgIGlm
KCBSZXRDaGFycyA9PSAxICkKKwlVbmljb2RlQ2hhciA9IENoYXJzWzBdOworICAgICAgZWxzZSAK
KwlVbmljb2RlQ2hhciA9IDA7CisKKyAgICAgIFVMT05HIFJlc3VsdFNpemU7CisKKyAgICAgIFJ0
bFVuaWNvZGVUb09lbU4gKCZBc2NpaUNoYXIsCisJCQkxLAorCQkJJlJlc3VsdFNpemUsCisJCQkm
VW5pY29kZUNoYXIsCisJCQkyKTsKKyAgICAgIGlmKCBSZXN1bHRTaXplID09IDAgKSBBc2NpaUNo
YXIgPSAwOworCisgICAgICBTdWJtaXRLZXkgPSBUUlVFOworICAgIH0KKworICAgIGlmKCAhU3Vi
bWl0S2V5ICkgY29udGludWU7CisKKyAgICBlci5FdmVudFR5cGUgPSBLRVlfRVZFTlQ7CisgICAg
ZXIuRXZlbnQuS2V5RXZlbnQuYktleURvd24gPSBEb3duOworICAgIGVyLkV2ZW50LktleUV2ZW50
LndSZXBlYXRDb3VudCA9IFJlcGVhdENvdW50OworLy8gICAgZXIuRXZlbnQuS2V5RXZlbnQudUNo
YXIuQXNjaWlDaGFyID0gQXNjaWlDaGFyOworLy8gICAgZXIuRXZlbnQuS2V5RXZlbnQudUNoYXIu
VW5pY29kZUNoYXIgPSBVbmljb2RlQ2hhcjsKKyAgICBlci5FdmVudC5LZXlFdmVudC51Q2hhci5V
bmljb2RlQ2hhciA9IEFzY2lpQ2hhcjsKKyAgICBlci5FdmVudC5LZXlFdmVudC5kd0NvbnRyb2xL
ZXlTdGF0ZSA9IFNoaWZ0U3RhdGU7CisgICAgZXIuRXZlbnQuS2V5RXZlbnQud1ZpcnR1YWxLZXlD
b2RlID0gVmlydHVhbEtleUNvZGU7CisgICAgZXIuRXZlbnQuS2V5RXZlbnQud1ZpcnR1YWxTY2Fu
Q29kZSA9IFZpcnR1YWxTY2FuQ29kZTsKKyAgICAKKyAgICBpZiAoU2hpZnRTdGF0ZSAmICggUklH
SFRfQUxUX1BSRVNTRUQgfCBMRUZUX0FMVF9QUkVTU0VEICkmJgorICAgICAgICBWaXJ0dWFsS2V5
Q29kZSA9PSBWS19UQUIgKQorICAgICAgeworICAgICAgICBpZiggRG93biA9PSBUUlVFICkKKwkg
IHsKKwkgICAgQU5TSV9TVFJJTkcgVGl0bGU7CisJICAgIHZvaWQgKiBCdWZmZXI7CisJICAgIENP
T1JEICpwb3M7CisJICAgICAgCisJICAgIC8qIGFsdC10YWIsIHN3YXAgY29uc29sZXMgKi8KKwkg
ICAgLy8gbW92ZSBTd2FwQ29uc29sZSB0byBuZXh0IGNvbnNvbGUsIGFuZCBwcmludCBpdHMgdGl0
bGUKKwkgICAgTE9DSzsKKwkgICAgaWYoICFTd2FwQ29uc29sZSApCisJICAgICAgeworCSAgCVN3
YXBDb25zb2xlID0gQWN0aXZlQ29uc29sZTsKKwkgICAgICB9CisJICAgICAgCisJICAgIGlmKCBT
aGlmdFN0YXRlICYgU0hJRlRfUFJFU1NFRCApCisJICAgICAgeworICAgICAgICAgICAgICAgIFN3
YXBDb25zb2xlID0gU3dhcENvbnNvbGUtPlByZXY7CisJICAgICAgfQorCSAgICBlbHNlIAorCSAg
ICAgIHsKKwkJU3dhcENvbnNvbGUgPSBTd2FwQ29uc29sZS0+TmV4dDsKKwkgICAgICB9CisJICAg
IFRpdGxlLk1heGltdW1MZW5ndGggPSBSdGxVbmljb2RlU3RyaW5nVG9BbnNpU2l6ZSggJlN3YXBD
b25zb2xlLT5UaXRsZSApOworCSAgICBUaXRsZS5MZW5ndGggPSAwOworCSAgICBCdWZmZXIgPSBS
dGxBbGxvY2F0ZUhlYXAoIENzcnNzQXBpSGVhcCwKKwkJICAgICAgICAgICAgICAgICAgICAgIDAs
CisJCQkJICAgICAgc2l6ZW9mKCBDT09SRCApICsgVGl0bGUuTWF4aW11bUxlbmd0aCk7CisJICAg
IHBvcyA9IChDT09SRCAqKUJ1ZmZlcjsKKwkgICAgVGl0bGUuQnVmZmVyID0gQnVmZmVyICsgc2l6
ZW9mKCBDT09SRCApOworCisgICAgICAgICAgICBSdGxVbmljb2RlU3RyaW5nVG9BbnNpU3RyaW5n
KCZUaXRsZSwgJlN3YXBDb25zb2xlLT5UaXRsZSwgRkFMU0UpOworCSAgICBwb3MtPlkgPSBQaHlz
aWNhbENvbnNvbGVTaXplLlkgLyAyOworCSAgICBwb3MtPlggPSAoIFBoeXNpY2FsQ29uc29sZVNp
emUuWCAtIFRpdGxlLkxlbmd0aCApIC8gMjsKKwkgICAgLy8gcmVkcmF3IHRoZSBjb25zb2xlIHRv
IGNsZWFyIG9mZiBvbGQgdGl0bGUKKwkgICAgQ3NyRHJhd0NvbnNvbGUoIEFjdGl2ZUNvbnNvbGUt
PkFjdGl2ZUJ1ZmZlciApOworCSAgICBTdGF0dXMgPSBOdERldmljZUlvQ29udHJvbEZpbGUoIENv
bnNvbGVEZXZpY2VIYW5kbGUsCisJCQkJCSAgICBOVUxMLAorCQkJCQkgICAgTlVMTCwKKwkJCQkJ
ICAgIE5VTEwsCisJCQkJCSAgICAmSW9zYiwKKwkJCQkJICAgIElPQ1RMX0NPTlNPTEVfV1JJVEVf
T1VUUFVUX0NIQVJBQ1RFUiwKKwkJCQkJICAgIEJ1ZmZlciwKKwkJCQkJICAgIHNpemVvZiAoQ09P
UkQpICsgVGl0bGUuTGVuZ3RoLAorCQkJCQkgICAgTlVMTCwKKwkJCQkJICAgIDApOworCSAgICBp
ZiggIU5UX1NVQ0NFU1MoIFN0YXR1cyApICkKKwkgICAgICB7CisJICAgICAgICBEUFJJTlQxKCAi
RXJyb3Igd3JpdGluZyB0byBjb25zb2xlXG4iICk7CisJICAgICAgfQorCSAgICBSdGxGcmVlSGVh
cCggQ3Nyc3NBcGlIZWFwLCAwLCBCdWZmZXIgKTsKKwkgICAgICAKKwkgICAgVU5MT0NLOworCSAg
fQorCWNvbnRpbnVlOworICAgICAgfQorICAgIGVsc2UgaWYoIFN3YXBDb25zb2xlICYmIFZpcnR1
YWxLZXlDb2RlID09IFZLX01FTlUgJiYgIURvd24pCisgICAgICB7CisgICAgICAgIC8vIGFsdCBr
ZXkgcmVsZWFzZWQsIHN3YXAgY29uc29sZXMKKwlQQ1NSU1NfQ09OU09MRSB0bXA7CisKKwlMT0NL
OworCWlmKCBTd2FwQ29uc29sZSAhPSBBY3RpdmVDb25zb2xlICkKKwkgIHsKKwkgICAgLy8gZmly
c3QgcmVtb3ZlIHN3YXBjb25zb2xlIGZyb20gdGhlIGxpc3QKKwkgICAgU3dhcENvbnNvbGUtPlBy
ZXYtPk5leHQgPSBTd2FwQ29uc29sZS0+TmV4dDsKKwkgICAgU3dhcENvbnNvbGUtPk5leHQtPlBy
ZXYgPSBTd2FwQ29uc29sZS0+UHJldjsKKwkgICAgLy8gbm93IGluc2VydCBiZWZvcmUgYWN0aXZl
Y29uc29sZQorCSAgICBTd2FwQ29uc29sZS0+TmV4dCA9IEFjdGl2ZUNvbnNvbGU7CisJICAgIFN3
YXBDb25zb2xlLT5QcmV2ID0gQWN0aXZlQ29uc29sZS0+UHJldjsKKwkgICAgQWN0aXZlQ29uc29s
ZS0+UHJldi0+TmV4dCA9IFN3YXBDb25zb2xlOworCSAgICBBY3RpdmVDb25zb2xlLT5QcmV2ID0g
U3dhcENvbnNvbGU7CisJICB9CisJQWN0aXZlQ29uc29sZSA9IFN3YXBDb25zb2xlOworCVN3YXBD
b25zb2xlID0gMDsKKwlDc3JEcmF3Q29uc29sZSggQWN0aXZlQ29uc29sZS0+QWN0aXZlQnVmZmVy
ICk7CisJVU5MT0NLOworCWNvbnRpbnVlOworICAgICAgfQorCisgICAgTE9DSzsKKyAgICBpZiAo
QWN0aXZlQ29uc29sZSA9PSBOVUxMKSAKKyAgICAgIHsKKwlVTkxPQ0s7CisJY29udGludWU7Cisg
ICAgICB9CisKKyAgICBDb25JblJlYyA9IFJ0bEFsbG9jYXRlSGVhcChDc3Jzc0FwaUhlYXAsIDAs
IHNpemVvZihDb25zb2xlSW5wdXQpKTsKKworICAgIGlmKENvbkluUmVjID09IE5VTEwpCisgICAg
ICB7CisJVU5MT0NLOworCWJyZWFrOworICAgICAgfQorICAgIAorICAgIENvbkluUmVjLT5JbnB1
dEV2ZW50ID0gZXI7CisgICAgQ29uSW5SZWMtPkZha2UgPSBGQUxTRTsKKyAgICBDb25JblJlYy0+
RWNob2VkID0gRkFMU0U7CisgICAgCisgICAgQ3NycFByb2Nlc3NDaGFyKCBBY3RpdmVDb25zb2xl
LCBDb25JblJlYyApOworICAgIFVOTE9DSzsKKyAgfQorCisgIE50VXNlckFjcXVpcmVPclJlbGVh
c2VJbnB1dE93bmVyc2hpcCggVFJVRSApOwogfQogCiBDU1JfQVBJKENzckdldFNjcmVlbkJ1ZmZl
ckluZm8pCkBAIC0xNDQ1LDYgKzE1NDcsNyBAQAogICAgUExJU1RfRU5UUlkgQ3VycmVudEVudHJ5
OwogICAgUENTUlNTX0NPTlNPTEUgQ29uc29sZTsKICAgIE5UU1RBVFVTIFN0YXR1czsKKyAgIEJP
T0xFQU4gRG9uZSA9IEZBTFNFOwogICAgQ29uc29sZUlucHV0ICpJbnB1dDsKICAgIAogICAgUmVw
bHktPkhlYWRlci5NZXNzYWdlU2l6ZSA9IHNpemVvZihDU1JTU19BUElfUkVQTFkpOwpAQCAtMTQ2
Miw1MCArMTU2NSwzNiBAQAogICAgICAgfQogCiAgICAvLyBvbmx5IGdldCBpbnB1dCBpZiB0aGVy
ZSBpcyBhbnkKLSAgIGlmKCBDb25zb2xlLT5JbnB1dEV2ZW50cy5GbGluayAhPSAmQ29uc29sZS0+
SW5wdXRFdmVudHMgKQorICAgd2hpbGUoIENvbnNvbGUtPklucHV0RXZlbnRzLkZsaW5rICE9ICZD
b25zb2xlLT5JbnB1dEV2ZW50cyAmJgorCSAgIURvbmUgKQogICAgICB7CiAgICAgICAgQ3VycmVu
dEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJkNvbnNvbGUtPklucHV0RXZlbnRzKTsKICAgICAgICBJ
bnB1dCA9IENPTlRBSU5JTkdfUkVDT1JEKEN1cnJlbnRFbnRyeSwgQ29uc29sZUlucHV0LCBMaXN0
RW50cnkpOworICAgICAgIERvbmUgPSAhSW5wdXQtPkZha2U7CiAgICAgICAgUmVwbHktPkRhdGEu
UmVhZElucHV0UmVwbHkuSW5wdXQgPSBJbnB1dC0+SW5wdXRFdmVudDsKIAogICAgICAgIGlmKCBJ
bnB1dC0+SW5wdXRFdmVudC5FdmVudFR5cGUgPT0gS0VZX0VWRU5UICkKIAkgewogCSAgIGlmKCBD
b25zb2xlLT5Nb2RlICYgRU5BQkxFX0xJTkVfSU5QVVQgJiYKLQkgICAgICAgSW5wdXQtPklucHV0
RXZlbnQuRXZlbnQuS2V5RXZlbnQuYktleURvd24gPT0gRkFMU0UgJiYKLQkgICAgICAgSW5wdXQt
PklucHV0RXZlbnQuRXZlbnQuS2V5RXZlbnQudUNoYXIuQXNjaWlDaGFyID09ICdcbicgKQorCSAg
ICAgICBJbnB1dC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC5iS2V5RG93biA9PSBUUlVFICYm
CisJICAgICAgIElucHV0LT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LnVDaGFyLkFzY2lpQ2hh
ciA9PSAnXHInICkgewogCSAgICAgQ29uc29sZS0+V2FpdGluZ0xpbmVzLS07CisgICAgICAgICAg
IH0KIAkgICBDb25zb2xlLT5XYWl0aW5nQ2hhcnMtLTsKIAkgfQogICAgICAgIFJ0bEZyZWVIZWFw
KCBDc3Jzc0FwaUhlYXAsIDAsIElucHV0ICk7CiAKLSAgICAgICBpZiAoQ29uc29sZS0+SW5wdXRF
dmVudHMuRmxpbmsgIT0gJkNvbnNvbGUtPklucHV0RXZlbnRzICYmCi0JICAgUmVwbHktPkRhdGEu
UmVhZElucHV0UmVwbHkuSW5wdXQuRXZlbnRUeXBlID09IEtFWV9FVkVOVCAmJgotCSAgIFJlcGx5
LT5EYXRhLlJlYWRJbnB1dFJlcGx5LklucHV0LkV2ZW50LktleUV2ZW50LnVDaGFyLkFzY2lpQ2hh
ciA9PSAnXHInKQotICAgICAgIHsKLSAgICAgICAgICBJbnB1dCA9IENPTlRBSU5JTkdfUkVDT1JE
KENvbnNvbGUtPklucHV0RXZlbnRzLkZsaW5rLCBDb25zb2xlSW5wdXQsIExpc3RFbnRyeSk7Ci0J
ICBpZiAoSW5wdXQtPklucHV0RXZlbnQuRXZlbnRUeXBlID09IEtFWV9FVkVOVCAmJgotICAgICAg
ICAgICAgICBJbnB1dC0+SW5wdXRFdmVudC5FdmVudC5LZXlFdmVudC51Q2hhci5Bc2NpaUNoYXIg
PT0gJ1xuJyAmJiAKLSAgICAgICAgICAgICAgKChJbnB1dC0+SW5wdXRFdmVudC5FdmVudC5LZXlF
dmVudC5iS2V5RG93biAmJiBSZXBseS0+RGF0YS5SZWFkSW5wdXRSZXBseS5JbnB1dC5FdmVudC5L
ZXlFdmVudC5iS2V5RG93bikgfHwKLSAgICAgICAgICAgICAgKElucHV0LT5JbnB1dEV2ZW50LkV2
ZW50LktleUV2ZW50LmJLZXlEb3duPT1GQUxTRSAmJiBSZXBseS0+RGF0YS5SZWFkSW5wdXRSZXBs
eS5JbnB1dC5FdmVudC5LZXlFdmVudC5iS2V5RG93bj09RkFMU0UpKSkKLQkgIHsKLQkgICAgaWYo
Q29uc29sZS0+TW9kZSAmIEVOQUJMRV9MSU5FX0lOUFVUICYmCi0JICAgICAgIElucHV0LT5JbnB1
dEV2ZW50LkV2ZW50LktleUV2ZW50LmJLZXlEb3duID09IEZBTFNFICYmCi0JICAgICAgIElucHV0
LT5JbnB1dEV2ZW50LkV2ZW50LktleUV2ZW50LnVDaGFyLkFzY2lpQ2hhciA9PSAnXG4nICkKLQkg
ICAgIENvbnNvbGUtPldhaXRpbmdMaW5lcy0tOwotCSAgICBDb25zb2xlLT5XYWl0aW5nQ2hhcnMt
LTsKLQkgICAgUmVtb3ZlSGVhZExpc3QoJkNvbnNvbGUtPklucHV0RXZlbnRzKTsKLSAgICAgICAg
ICAgIFJ0bEZyZWVIZWFwKCBDc3Jzc0FwaUhlYXAsIDAsIElucHV0ICk7Ci0JICB9Ci0gICAgICAg
fQotCiAgICAgICAgUmVwbHktPkRhdGEuUmVhZElucHV0UmVwbHkuTW9yZUV2ZW50cyA9IChDb25z
b2xlLT5JbnB1dEV2ZW50cy5GbGluayAhPSAmQ29uc29sZS0+SW5wdXRFdmVudHMpID8gVFJVRSA6
IEZBTFNFOwogICAgICAgIFN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwogICAgICAgIENvbnNvbGUt
PkVhcmx5UmV0dXJuID0gRkFMU0U7IC8vIGNsZWFyIGVhcmx5IHJldHVybgogICAgICB9Ci0gICBl
bHNlIHsKLSAgICAgIFN0YXR1cyA9IFNUQVRVU19QRU5ESU5HOwotICAgICAgQ29uc29sZS0+RWFy
bHlSZXR1cm4gPSBUUlVFOyAgLy8gbWFyayBmb3IgZWFybHkgcmV0dXJuCi0gICB9CisgICAKKyAg
IGlmKCAhRG9uZSApCisgICAgIHsKKyAgICAgICBTdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAg
ICAgICBDb25zb2xlLT5FYXJseVJldHVybiA9IFRSVUU7ICAvLyBtYXJrIGZvciBlYXJseSByZXR1
cm4KKyAgICAgfQorCiAgICBVTkxPQ0s7CiAgICByZXR1cm4gUmVwbHktPlN0YXR1cyA9IFN0YXR1
czsKIH0KQEAgLTI0MjQsMTQgKzI1MTMsMTQgQEAKICAgIFJlYWRSZWdpb24uQm90dG9tID0gUmVh
ZFJlZ2lvbi5Ub3AgKyBTaXplWTsKICAgIFJlYWRSZWdpb24uUmlnaHQgPSBSZWFkUmVnaW9uLkxl
ZnQgKyBTaXplWDsKIAotICAgQ3NycEluaXRSZWN0KFNjcmVlblJlY3QsIDAsIDAsIFNjcmVlbkJ1
ZmZlci0+TWF4WSAtIDEsIFNjcmVlbkJ1ZmZlci0+TWF4WCAtIDEpOworICAgQ3NycEluaXRSZWN0
KFNjcmVlblJlY3QsIDAsIDAsIFNjcmVlbkJ1ZmZlci0+TWF4WSwgU2NyZWVuQnVmZmVyLT5NYXhY
KTsKICAgIGlmICghQ3NycEdldEludGVyc2VjdGlvbigmUmVhZFJlZ2lvbiwgU2NyZWVuUmVjdCwg
UmVhZFJlZ2lvbikpCiAgICB7CiAgICAgICBVTkxPQ0s7CiAgICAgICBSZXBseS0+U3RhdHVzID0g
U1RBVFVTX1NVQ0NFU1M7CiAgICAgICByZXR1cm4gUmVwbHktPlN0YXR1czsKICAgIH0KLSAgIAor
CiAgICBmb3IoaSA9IDAsIFkgPSBSZWFkUmVnaW9uLlRvcDsgWSA8IFJlYWRSZWdpb24uQm90dG9t
OyArK2ksICsrWSkKICAgIHsKICAgICAgQ3VyQ2hhckluZm8gPSBDaGFySW5mbyArIChpICogQnVm
ZmVyU2l6ZS5YKTsKQEAgLTI1MDksOSArMjU5OCwxMyBAQAogICAgICAgICAgUmVwbHktPlN0YXR1
cyA9IFNUQVRVU19JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTOwogICAgICAgICAgcmV0dXJuIFJlcGx5
LT5TdGF0dXM7CiAgICAgICB9Ci0gICAgICAKKworICAgICAgUmVjb3JkLT5FY2hvZWQgPSBGQUxT
RTsKKyAgICAgIFJlY29yZC0+RmFrZSA9IEZBTFNFOwogICAgICAgUmVjb3JkLT5JbnB1dEV2ZW50
ID0gKklucHV0UmVjb3JkKys7Ci0gICAgICBJbnNlcnRUYWlsTGlzdCgmQ29uc29sZS0+SW5wdXRF
dmVudHMsICZSZWNvcmQtPkxpc3RFbnRyeSk7CisgICAgICBpZiggUmVjb3JkLT5JbnB1dEV2ZW50
LkV2ZW50VHlwZSA9PSBLRVlfRVZFTlQgKSB7CisJICBDc3JwUHJvY2Vzc0NoYXIoIENvbnNvbGUs
IFJlY29yZCApOworICAgICAgfQogICAgfQogICAgICAgCiAgICBVTkxPQ0s7CkBAIC0yNTQyLDE1
ICsyNjM1LDYgQEAKICAgIGlmICggKENPTlNPTEVfSEFSRFdBUkVfU1RBVEVfR0RJX01BTkFHRUQg
PT0gQ29uc29sZUh3U3RhdGUpCiAgICAgICB8fChDT05TT0xFX0hBUkRXQVJFX1NUQVRFX0RJUkVD
VCA9PSBDb25zb2xlSHdTdGF0ZSkpCiAgICB7Ci0gICAgICAvKiBJbmhpYml0IGtleWJvYXJkIGlu
cHV0IHdoZW4gaGFyZHdhcmUgc3RhdGUgPT0KLSAgICAgICAqIENPTlNPTEVfSEFSRFdBUkVfU1RB
VEVfR0RJX01BTkFHRUQgKi8KLSAgICAgIGlmIChDT05TT0xFX0hBUkRXQVJFX1NUQVRFX0dESV9N
QU5BR0VEID09IENvbnNvbGVId1N0YXRlKSB7Ci0gICAgICAgICBEYmdQcmludCggIktleWJvYXJk
IEluaGliaXRlZC5cbiIgKTsKLSAgICAgICAgIEtleVJlYWRJbmhpYml0ID0gVFJVRTsKLSAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICBEYmdQcmludCggIktleWJvYXJkIEVuYWJsZWQuXG4iICk7Ci0g
ICAgICAgICBLZXlSZWFkSW5oaWJpdCA9IEZBTFNFOwotICAgICAgfQogICAgICAgaWYgKENvbnNv
bGUtPkhhcmR3YXJlU3RhdGUgIT0gQ29uc29sZUh3U3RhdGUpCiAgICAgICB7CiAJIC8qIFRPRE86
IGltcGxlbWVudCBzd2l0Y2hpbmcgZnJvbSBmdWxsIHNjcmVlbiB0byB3aW5kb3dlZCBtb2RlICov
CkluZGV4OiBzdWJzeXMvd2luMzJrL2VuZy9tZW0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvQ1ZT
L1JlYWN0T1MvcmVhY3Rvcy9zdWJzeXMvd2luMzJrL2VuZy9tZW0uYyx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4xMgpkaWZmIC11IC1yMS4xMiBtZW0uYwotLS0gc3Vic3lzL3dpbjMyay9lbmcvbWVt
LmMJMjYgU2VwIDIwMDMgMTA6NDU6NDQgLTAwMDAJMS4xMgorKysgc3Vic3lzL3dpbjMyay9lbmcv
bWVtLmMJOCBPY3QgMjAwMyAwNTowNjowMyAtMDAwMApAQCAtODEsNiArODEsNyBAQAogICBVTE9O
RyBNZW1TaXplID0gc2l6ZW9mKFVTRVJNRU1IRUFERVIpICsgY2o7CiAgIFBVU0VSTUVNSEVBREVS
IEhlYWRlcjsKIAorICBEYmdQcmludCgiRW5nQWxsb2NVc2VyTWVtXG4iKTsKICAgU3RhdHVzID0g
WndBbGxvY2F0ZVZpcnR1YWxNZW1vcnkoTnRDdXJyZW50UHJvY2VzcygpLCAmTmV3TWVtLCAwLCAm
TWVtU2l6ZSwgTUVNX0NPTU1JVCwgUEFHRV9SRUFEV1JJVEUpOwogCiAgIGlmICghIE5UX1NVQ0NF
U1MoU3RhdHVzKSkKSW5kZXg6IHN1YnN5cy93aW4zMmsvaW5jbHVkZS9pbnB1dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9DVlMvUmVhY3RPUy9yZWFjdG9zL3N1YnN5cy93aW4zMmsvaW5jbHVkZS9p
bnB1dC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtdSAtcjEuMiBpbnB1dC5oCi0t
LSBzdWJzeXMvd2luMzJrL2luY2x1ZGUvaW5wdXQuaAkxOCBNYXkgMjAwMyAxNzoxNjoxNyAtMDAw
MAkxLjIKKysrIHN1YnN5cy93aW4zMmsvaW5jbHVkZS9pbnB1dC5oCTggT2N0IDIwMDMgMDU6MDY6
MDMgLTAwMDAKQEAgLTEsNyArMSwxMiBAQAogI2lmbmRlZiBfX1dJTjMyS19NT1VTRV9ICiAjZGVm
aW5lIF9fV0lOMzJLX01PVVNFX0gKIAorI2luY2x1ZGUgPGludGVybmFsL2tiZC5oPgorCiBOVFNU
QVRVUyBGQVNUQ0FMTAogSW5pdElucHV0SW1wbChWT0lEKTsKK1BVU0VSX01FU1NBR0VfUVVFVUUg
VzMya0dldFByaW1pdGl2ZU1lc3NhZ2VRdWV1ZShWT0lEKTsKK1BLQkRUQUJMRVMgVzMya0dldERl
ZmF1bHRLZXlMYXlvdXQoVk9JRCk7CitWT0lEIEZBU1RDQUxMIFczMmtLZXlQcm9jZXNzTWVzc2Fn
ZShMUE1TRyBNc2csIFBLQkRUQUJMRVMgS2V5TGF5b3V0KTsKIAogI2VuZGlmIC8qIF9fV0lOMzJL
X01PVVNFX0ggKi8KSW5kZXg6IHN1YnN5cy93aW4zMmsvbWFpbi9kbGxtYWluLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL0NWUy9SZWFjdE9TL3JlYWN0b3Mvc3Vic3lzL3dpbjMyay9tYWluL2RsbG1h
aW4uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NApkaWZmIC11IC1yMS40NCBkbGxtYWluLmMK
LS0tIHN1YnN5cy93aW4zMmsvbWFpbi9kbGxtYWluLmMJMTkgQXVnIDIwMDMgMTE6NDg6NDkgLTAw
MDAJMS40NAorKysgc3Vic3lzL3dpbjMyay9tYWluL2RsbG1haW4uYwk4IE9jdCAyMDAzIDA1OjA2
OjAzIC0wMDAwCkBAIC03Myw2ICs3Myw3IEBACiAgICAgICBJbml0aWFsaXplTGlzdEhlYWQoJldp
bjMyUHJvY2Vzcy0+TWVudUxpc3RIZWFkKTsKICAgICAgIEV4SW5pdGlhbGl6ZUZhc3RNdXRleCgm
V2luMzJQcm9jZXNzLT5NZW51TGlzdExvY2spOyAgICAgIAogCisgICAgICBXaW4zMlByb2Nlc3Mt
PktleWJvYXJkTGF5b3V0ID0gVzMya0dldERlZmF1bHRLZXlMYXlvdXQoKTsKICAgICAgIFdpbjMy
UHJvY2Vzcy0+V2luZG93U3RhdGlvbiA9IE5VTEw7CiAgICAgICBpZiAoUHJvY2Vzcy0+V2luMzJX
aW5kb3dTdGF0aW9uICE9IE5VTEwpCiAJewpAQCAtMTI1LDYgKzEyNiw3IEBACiAjZW5kaWYKIAog
ICAgICAgV2luMzJUaHJlYWQtPk1lc3NhZ2VRdWV1ZSA9IE1zcUNyZWF0ZU1lc3NhZ2VRdWV1ZSgp
OworICAgICAgV2luMzJUaHJlYWQtPktleWJvYXJkTGF5b3V0ID0gVzMya0dldERlZmF1bHRLZXlM
YXlvdXQoKTsKICAgICAgIEluaXRpYWxpemVMaXN0SGVhZCgmV2luMzJUaHJlYWQtPldpbmRvd0xp
c3RIZWFkKTsKICAgICAgIEV4SW5pdGlhbGl6ZUZhc3RNdXRleCgmV2luMzJUaHJlYWQtPldpbmRv
d0xpc3RMb2NrKTsKIApJbmRleDogc3Vic3lzL3dpbjMyay9udHVzZXIvaW5wdXQuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvQ1ZTL1JlYWN0T1MvcmVhY3Rvcy9zdWJzeXMvd2luMzJrL250dXNlci9p
bnB1dC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzCmRpZmYgLXUgLXIxLjEzIGlucHV0LmMK
LS0tIHN1YnN5cy93aW4zMmsvbnR1c2VyL2lucHV0LmMJMzAgU2VwIDIwMDMgMjI6MDQ6MjQgLTAw
MDAJMS4xMworKysgc3Vic3lzL3dpbjMyay9udHVzZXIvaW5wdXQuYwk4IE9jdCAyMDAzIDA1OjA2
OjAzIC0wMDAwCkBAIC01MCw2ICs1MCw3IEBACiBzdGF0aWMgSEFORExFIEtleWJvYXJkRGV2aWNl
SGFuZGxlOwogc3RhdGljIEtFVkVOVCBJbnB1dFRocmVhZHNTdGFydDsKIHN0YXRpYyBCT09MRUFO
IElucHV0VGhyZWFkc1J1bm5pbmcgPSBGQUxTRTsKK1BVU0VSX01FU1NBR0VfUVVFVUUgcG1Qcmlt
aXRpdmVNZXNzYWdlUXVldWUgPSAwOwogCiAvKiBGVU5DVElPTlMgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTg0
LDExICs4NSwxMyBAQAogICAgICAgLyoKICAgICAgICAqIFdhaXQgdG8gc3RhcnQgaW5wdXQuCiAg
ICAgICAgKi8KKyAgICAgIERiZ1ByaW50KCAiSW5wdXQgVGhyZWFkIFdhaXRpbmcgZm9yIHN0YXJ0
IGV2ZW50XG4iICk7CiAgICAgICBTdGF0dXMgPSBLZVdhaXRGb3JTaW5nbGVPYmplY3QoJklucHV0
VGhyZWFkc1N0YXJ0LAogCQkJCSAgICAgMCwKIAkJCQkgICAgIFVzZXJNb2RlLAogCQkJCSAgICAg
VFJVRSwKIAkJCQkgICAgIE5VTEwpOworICAgICAgRGJnUHJpbnQoICJJbnB1dCBUaHJlYWQgU3Rh
cnRpbmcuLi5cbiIgKTsKIAogICAgICAgLyoKICAgICAgICAqIFJlY2VpdmUgYW5kIHByb2Nlc3Mg
a2V5Ym9hcmQgaW5wdXQuCkBAIC05Niw4ICs5OSw4IEBACiAgICAgICB3aGlsZSAoSW5wdXRUaHJl
YWRzUnVubmluZykKIAl7CiAJICBLRVlfRVZFTlRfUkVDT1JEIEtleUV2ZW50OwotCSAgTFBBUkFN
IGxQYXJhbTsKLSAgICBCT09MRUFOIFN5c0tleTsKKwkgIExQQVJBTSBsUGFyYW0gPSAwOworCSAg
Qk9PTEVBTiBTeXNLZXk7CiAJICAKIAkgIFN0YXR1cyA9IE50UmVhZEZpbGUgKEtleWJvYXJkRGV2
aWNlSGFuZGxlLCAKIAkJCSAgICAgICBOVUxMLApAQCAtMTQ0LDggKzE0Nyw5IEBACiAgICAgICAg
ICAgICBsUGFyYW0gfD0gKDEgPDwgMjkpOyAgLyogQ29udGV4dCBtb2RlLiAxIGlmIEFMVCBpZiBw
cmVzc2VkIHdoaWxlIHRoZSBrZXkgaXMgcHJlc3NlZCAqLwogICAgICAgICAgIH0KIAotCSAgICAg
IE1zcVBvc3RLZXlib2FyZE1lc3NhZ2UoU3lzS2V5ID8gV01fU1lTS0VZRE9XTiA6IFdNX0tFWURP
V04sIEtleUV2ZW50LndWaXJ0dWFsS2V5Q29kZSwgCi0JCQkJICAgICBsUGFyYW0pOworCU1zcVBv
c3RLZXlib2FyZE1lc3NhZ2UoU3lzS2V5ID8gV01fU1lTS0VZRE9XTiA6IFdNX0tFWURPV04sIAor
CQkJICAgICAgIEtleUV2ZW50LndWaXJ0dWFsS2V5Q29kZSwgCisJCQkgICAgICAgbFBhcmFtKTsK
IAkgICAgfQogCSAgZWxzZQogCSAgICB7CkBAIC0xNjYsMTYgKzE3MCwxOSBAQAogCQkJCSAgICAg
bFBhcmFtKTsKIAkgICAgfQogCX0KKyAgICAgIERiZ1ByaW50KCAiSW5wdXQgVGhyZWFkIFN0b3Bw
ZWQuLi5cbiIgKTsKICAgICB9CiB9CiAKIE5UU1RBVFVTIFNURENBTEwKIE50VXNlckFjcXVpcmVP
clJlbGVhc2VJbnB1dE93bmVyc2hpcChCT09MRUFOIFJlbGVhc2UpCiB7Ci0gIGlmIChSZWxlYXNl
ICYmIElucHV0VGhyZWFkc1J1bm5pbmcpCisgIGlmIChSZWxlYXNlICYmIElucHV0VGhyZWFkc1J1
bm5pbmcgJiYgIXBtUHJpbWl0aXZlTWVzc2FnZVF1ZXVlKQogICAgIHsKKyAgICAgIERiZ1ByaW50
KCAiUmVsZWFzaW5nIGlucHV0OiBQTSA9ICUwOHhcbiIsIHBtUHJpbWl0aXZlTWVzc2FnZVF1ZXVl
ICk7CiAgICAgICBLZUNsZWFyRXZlbnQoJklucHV0VGhyZWFkc1N0YXJ0KTsKICAgICAgIElucHV0
VGhyZWFkc1J1bm5pbmcgPSBGQUxTRTsKKyAgICAgIAogICAgICAgTnRBbGVydFRocmVhZChLZXli
b2FyZFRocmVhZEhhbmRsZSk7CiAgICAgfQogICBlbHNlIGlmICghUmVsZWFzZSAmJiAhSW5wdXRU
aHJlYWRzUnVubmluZykKQEAgLTE4Myw2ICsxOTAsNyBAQAogICAgICAgSW5wdXRUaHJlYWRzUnVu
bmluZyA9IFRSVUU7CiAgICAgICBLZVNldEV2ZW50KCZJbnB1dFRocmVhZHNTdGFydCwgSU9fTk9f
SU5DUkVNRU5ULCBGQUxTRSk7CiAgICAgfQorCiAgIHJldHVybihTVEFUVVNfU1VDQ0VTUyk7CiB9
CiAKQEAgLTMwMyw2ICszMTEsNSBAQAogICBVTklNUExFTUVOVEVECiAgIHJldHVybiAwOwogfQot
CiAKIC8qIEVPRiAqLwpJbmRleDogc3Vic3lzL3dpbjMyay9udHVzZXIva2V5Ym9hcmQuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvQ1ZTL1JlYWN0T1MvcmVhY3Rvcy9zdWJzeXMvd2luMzJrL250dXNl
ci9rZXlib2FyZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkKZGlmZiAtdSAtcjEuOSBrZXli
b2FyZC5jCi0tLSBzdWJzeXMvd2luMzJrL250dXNlci9rZXlib2FyZC5jCTE5IEF1ZyAyMDAzIDEx
OjQ4OjQ5IC0wMDAwCTEuOQorKysgc3Vic3lzL3dpbjMyay9udHVzZXIva2V5Ym9hcmQuYwk4IE9j
dCAyMDAzIDA1OjA2OjAzIC0wMDAwCkBAIC00NCw5ICs0NCw4IEBACiAjZGVmaW5lIE5ERUJVRwog
I2luY2x1ZGUgPGRlYnVnLmg+CiAKLURXT1JEIE1vZEJpdHMgPSAwOwogQllURSBRdWV1ZUtleVN0
YXRlVGFibGVbMjU2XTsKLXN0YXRpYyBQVk9JRCBwa0tleWJvYXJkTGF5b3V0ID0gMDsKK1BLQkRU
QUJMRVMgcGtLZXlib2FyZExheW91dCA9IDA7CiAKIC8qIGFydHkgLS0gVGhlc2Ugc2hvdWxkIGJl
IHBoYXNlZCBvdXQgZm9yIHRoZSBnZW5lcmFsIGtiZHh4LmRsbCB0YWJsZXMgKi8KIApAQCAtMTcx
LDY4ICsxNzAsMTQxIEBACiAKIC8qKiogU3RhdGljcyB1c2VkIGJ5IFRyYW5zbGF0ZU1lc3NhZ2Ug
KioqLwogCitzdGF0aWMgVUlOVCBEb250RGlzdGluZ3Vpc2hTaGlmdHMoIFVJTlQgcmV0ICkgewor
ICAgIGlmKCByZXQgPT0gVktfTFNISUZUIHx8IHJldCA9PSBWS19SU0hJRlQgKSByZXQgPSBWS19T
SElGVDsKKyAgICBpZiggcmV0ID09IFZLX0xDT05UUk9MIHx8IHJldCA9PSBWS19SQ09OVFJPTCAp
IHJldCA9IFZLX0NPTlRST0w7CisgICAgaWYoIHJldCA9PSBWS19MTUVOVSB8fCByZXQgPT0gVktf
Uk1FTlUgKSByZXQgPSBWS19NRU5VOworICAgIHJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBWT0lE
IFNURENBTEwgU2V0S2V5U3RhdGUoRFdPUkQga2V5LCBCT09MIGRvd24pIHsKLSAgaWYoIGtleSA+
PSAnYScgJiYga2V5IDw9ICd6JyApIGtleSArPSAnQScgLSAnYSc7Ci0gIFF1ZXVlS2V5U3RhdGVU
YWJsZVtrZXldID0gZG93bjsKKyAgUXVldWVLZXlTdGF0ZVRhYmxlW2tleV0gPSBkb3duID8gMHg4
MCA6IDA7CiB9CiAKLXN0YXRpYyBCT09MIFNldE1vZEtleSggUEtCRFRBQkxFUyBwa0tULCBXT1JE
IHdWSywgQk9PTCBkb3duICkgeworVk9JRCBEdW1wS2V5U3RhdGUoIFBCWVRFIEtleVN0YXRlICkg
ewogICBpbnQgaTsKLSAgCi0gIGZvciggaSA9IDA7IHBrS1QtPnBDaGFyTW9kaWZpZXJzLT5wVmtU
b0JpdFtpXS5WazsgaSsrICkgewotICAgIERiZ1ByaW50KCAidmtbJWRdID0geyAlMDR4LCAleCB9
XG4iLCBpLCAKLQlwa0tULT5wQ2hhck1vZGlmaWVycy0+cFZrVG9CaXRbaV0uVmssCi0JcGtLVC0+
cENoYXJNb2RpZmllcnMtPnBWa1RvQml0W2ldLk1vZEJpdHMgKTsKLSAgICBpZiggcGtLVC0+cENo
YXJNb2RpZmllcnMtPnBWa1RvQml0W2ldLlZrID09IHdWSyApIHsKLSAgICAgIGlmKCBkb3duICkg
TW9kQml0cyB8PSBwa0tULT5wQ2hhck1vZGlmaWVycy0+cFZrVG9CaXRbaV0uTW9kQml0czsKLSAg
ICAgIGVsc2UgTW9kQml0cyAmPSB+cGtLVC0+cENoYXJNb2RpZmllcnMtPnBWa1RvQml0W2ldLk1v
ZEJpdHM7Ci0gICAgICBEYmdQcmludCggIk1vZEJpdHM6ICV4XG4iLCBNb2RCaXRzICk7Ci0gICAg
ICByZXR1cm4gVFJVRTsKKworICBEYmdQcmludCggIktleVN0YXRlIHsgIiApOworICBmb3IoIGkg
PSAwOyBpIDwgMHgxMDA7IGkrKyApIHsKKyAgICBpZiggS2V5U3RhdGVbaV0gKSBEYmdQcmludCgg
IiUwMngoJTAyeCkgIiwgaSwgS2V5U3RhdGVbaV0gKTsKKyAgfQorICBEYmdQcmludCggIn07XG4i
ICk7Cit9CisKK3N0YXRpYyBCWVRFIEtleXNTZXQoIFBLQkRUQUJMRVMgcGtLVCwgUEJZVEUgS2V5
U3RhdGUsIAorCQkgICAgIGludCBNb2QsIGludCBGYWtlTW9kTGVmdCwgaW50IEZha2VNb2RSaWdo
dCApIHsKKyAgaW50IGk7CisKKyAgaWYoICFLZXlTdGF0ZSB8fCAhcGtLVCApIHJldHVybiAwOwor
CisgIGZvciggaSA9IDA7IGkgPCBwa0tULT5iTWF4VlNDdG9WSzsgaSsrICkgeworICAgIGlmKCBL
ZXlTdGF0ZVtpXSAmIDB4QzAgJiYKKwkoKHBrS1QtPnB1c1ZTQ3RvVktbaV0gJiAweGZmKSA9PSBN
b2QgfHwKKwkgKHBrS1QtPnB1c1ZTQ3RvVktbaV0gJiAweGZmKSA9PSBGYWtlTW9kTGVmdCB8fAor
CSAocGtLVC0+cHVzVlNDdG9WS1tpXSAmIDB4ZmYpID09IEZha2VNb2RSaWdodCApICkgeworICAg
ICAgcmV0dXJuIEtleVN0YXRlW2ldOwogICAgIH0KICAgfQogCi0gIHJldHVybiBGQUxTRTsKKyAg
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBEV09SRCBNb2RCaXRzKCBQS0JEVEFCTEVTIHBrS1QsIFBC
WVRFIEtleVN0YXRlICkgeworICBpbnQgaTsKKyAgRFdPUkQgTW9kQml0cyA9IDA7CisgIEJZVEUg
TWFzazsKKworICBpZiggIUtleVN0YXRlICkgcmV0dXJuIDA7CisKKyAgLyogRHVtcEtleVN0YXRl
KCBLZXlTdGF0ZSApOyAqLworCisgIGZvciggaSA9IDA7IHBrS1QtPnBDaGFyTW9kaWZpZXJzLT5w
VmtUb0JpdFtpXS5WazsgaSsrICkgeworICAgIGludCBWayA9IHBrS1QtPnBDaGFyTW9kaWZpZXJz
LT5wVmtUb0JpdFtpXS5WazsKKyAgICBzd2l0Y2goVmspCisgICAgICB7CisgICAgICAgIGNhc2Ug
VktfU0hJRlQ6CisJICBNYXNrID0gS2V5c1NldCggcGtLVCwgS2V5U3RhdGUsIFZrLCBWS19MU0hJ
RlQsIFZLX1JTSElGVCApOworICAgICAgICAgIGlmIChNYXNrICYgMHhjMCkKKwkgICAgTW9kQml0
cyB8PSBwa0tULT5wQ2hhck1vZGlmaWVycy0+cFZrVG9CaXRbaV0uTW9kQml0czsKKwkgIGJyZWFr
OworICAgICAgICBjYXNlIFZLX0NPTlRST0w6CisJICBNYXNrID0gS2V5c1NldCggcGtLVCwgS2V5
U3RhdGUsIFZrLCBWS19MQ09OVFJPTCwgVktfUkNPTlRST0wgKTsKKyAgICAgICAgICBpZiAoTWFz
ayAmIDB4YzApCisJICAgIE1vZEJpdHMgfD0gcGtLVC0+cENoYXJNb2RpZmllcnMtPnBWa1RvQml0
W2ldLk1vZEJpdHM7CisJICBicmVhazsKKyAgICAgICAgY2FzZSBWS19NRU5VOgorCSAgTWFzayA9
IEtleXNTZXQoIHBrS1QsIEtleVN0YXRlLCBWaywgVktfTE1FTlUsIFZLX1JNRU5VICk7CisgICAg
ICAgICAgaWYgKE1hc2sgJiAweGMwKQorCSAgICBNb2RCaXRzIHw9IHBrS1QtPnBDaGFyTW9kaWZp
ZXJzLT5wVmtUb0JpdFtpXS5Nb2RCaXRzOworICAgICAgICAgIGlmIChNYXNrICYgMHg0MCkKKyAg
ICAgICAgICAgIE1vZEJpdHMgfD0gMHgwMiAvKiBLQ1RSTCAqLzsKKwkgIGJyZWFrOworCWRlZmF1
bHQ6CisJICBNYXNrID0gS2V5c1NldCggcGtLVCwgS2V5U3RhdGUsIFZrLCAwLCAwICk7CisgICAg
ICAgICAgaWYgKE1hc2sgJiAweDgwKQorCSAgICBNb2RCaXRzIHw9IHBrS1QtPnBDaGFyTW9kaWZp
ZXJzLT5wVmtUb0JpdFtpXS5Nb2RCaXRzOworCSAgYnJlYWs7CisgICAgICB9CisgIH0KKworICBE
UFJJTlQoICJDdXJyZW50IE1vZCBCaXRzOiAleFxuIiwgTW9kQml0cyApOworCisgIHJldHVybiBN
b2RCaXRzOwogfQogCi1zdGF0aWMgQk9PTCBUcnlUb1RyYW5zbGF0ZUNoYXIoIFdPUkQgd1ZpcnRL
ZXksCi0JCQkJUFZLX1RPX1dDSEFSX1RBQkxFIHZ0d1RibCwgCi0JCQkJRFdPUkQgTW9kQml0cywK
LQkJCQlQQk9PTCBwYkRlYWQsCi0JCQkJUEJPT0wgcGJMaWdhdHVyZSwKLQkJCQlQV0NIQVIgcHdj
VHJhbnNsYXRlZENoYXIgKSB7Ci0gIGludCBpLGo7Ci0gIHNpemVfdCBzaXplX3RoaXNfZW50cnkg
PSB2dHdUYmwtPmNiU2l6ZTsKLSAgaW50IG5TdGF0ZXMgPSB2dHdUYmwtPm5Nb2RpZmljYXRpb25z
Oworc3RhdGljIEJPT0wgVHJ5VG9UcmFuc2xhdGVDaGFyKFdPUkQgd1ZpcnRLZXksCisJCQkgICAg
ICAgRFdPUkQgTW9kQml0cywKKwkJCSAgICAgICBQQk9PTCBwYkRlYWQsCisJCQkgICAgICAgUEJP
T0wgcGJMaWdhdHVyZSwKKwkJCSAgICAgICBQV0NIQVIgcHdjVHJhbnNsYXRlZENoYXIsCisJCQkg
ICAgICAgUEtCRFRBQkxFUyBrZXlMYXlvdXQgKSAKK3sKKyAgUFZLX1RPX1dDSEFSX1RBQkxFIHZ0
d1RibDsKICAgUFZLX1RPX1dDSEFSUzEwIHZrUHRyOworICBzaXplX3Qgc2l6ZV90aGlzX2VudHJ5
OworICBpbnQgbk1vZCwgc2hpZnQ7CisKKyAgRFBSSU5UICggIlRyeVRvVHJhbnNsYXRlOiAlMDR4
ICV4XG4iLCB3VmlydEtleSwgTW9kQml0cyApOyAKKworICBpZiAoTW9kQml0cyA+IGtleUxheW91
dC0+cENoYXJNb2RpZmllcnMtPndNYXhNb2RCaXRzKQorICAgIHsKKyAgICAgIHJldHVybiBGQUxT
RTsKKyAgICB9CisgIHNoaWZ0ID0ga2V5TGF5b3V0LT5wQ2hhck1vZGlmaWVycy0+TW9kTnVtYmVy
W01vZEJpdHNdOwogCi0gIGZvciggaSA9IDA7OyBpKysgKSB7Ci0gICAgdmtQdHIgPSAoUFZLX1RP
X1dDSEFSUzEwKQotICAgICAgKCgoQllURSAqKXZ0d1RibC0+cFZrVG9XY2hhcnMpICsgaSAqIHNp
emVfdGhpc19lbnRyeSk7Ci0KLSAgICBpZiggIXZrUHRyLT5WaXJ0dWFsS2V5ICkgcmV0dXJuIEZB
TFNFOwotICAgIGlmKCB3VmlydEtleSA9PSB2a1B0ci0+VmlydHVhbEtleSApIHsKLSAgICAgIGZv
ciggaiA9IDA7IGogPCBuU3RhdGVzOyBqKysgKSB7Ci0JaWYoIGogPT0gKGludCkgTW9kQml0cyAp
IHsgLyogT0ssIHdlIGZvdW5kIGEgd2NoYXIgd2l0aCB0aGUgY29ycmVjdAotCQkJCXNoaWZ0IHN0
YXRlIGFuZCB2ayAqLwotCSAgKnBiRGVhZCA9IHZrUHRyLT53Y2hbal0gPT0gV0NIX0RFQUQ7Ci0J
ICAqcGJMaWdhdHVyZSA9IHZrUHRyLT53Y2hbal0gPT0gV0NIX0xHVFI7Ci0JICAqcHdjVHJhbnNs
YXRlZENoYXIgPSB2a1B0ci0+d2NoW2pdOwotCSAgaWYoICpwYkRlYWQgKSB7Ci0JICAgIGkrKzsK
LQkgICAgdmtQdHIgPSAoUFZLX1RPX1dDSEFSUzEwKQotCSAgICAgICgoKEJZVEUgKil2dHdUYmwt
PnBWa1RvV2NoYXJzKSArIGkgKiBzaXplX3RoaXNfZW50cnkpOwotCSAgICBpZiggdmtQdHItPlZp
cnR1YWxLZXkgIT0gMHhmZiApIHsKLQkgICAgICBEUFJJTlQoICJGb3VuZCBkZWFkIGtleSB3aXRo
IG5vIHRyYWlsZXIgaW4gdGhlIHRhYmxlLlxuIiApOwotCSAgICAgIERQUklOVCggIlZLOiAlMDR4
LCBBRERSOiAlMDh4XG4iLCB3VmlydEtleSwgKGludCl2a1B0ciApOwotCSAgICAgIHJldHVybiBG
QUxTRTsKKyAgZm9yIChuTW9kID0gMDsga2V5TGF5b3V0LT5wVmtUb1djaGFyVGFibGVbbk1vZF0u
bk1vZGlmaWNhdGlvbnM7IG5Nb2QrKykKKyAgICB7CisgICAgICBpZiAoc2hpZnQgPj0ga2V5TGF5
b3V0LT5wVmtUb1djaGFyVGFibGVbbk1vZF0ubk1vZGlmaWNhdGlvbnMpCisgICAgICAgIHsKKwkg
IGNvbnRpbnVlOworCX0KKyAgICAgIHZ0d1RibCA9ICZrZXlMYXlvdXQtPnBWa1RvV2NoYXJUYWJs
ZVtuTW9kXTsKKyAgICAgIHNpemVfdGhpc19lbnRyeSA9IHZ0d1RibC0+Y2JTaXplOworICAgICAg
dmtQdHIgPSAoUFZLX1RPX1dDSEFSUzEwKSgoQllURSAqKXZ0d1RibC0+cFZrVG9XY2hhcnMpOwor
ICAgICAgd2hpbGUodmtQdHItPlZpcnR1YWxLZXkpCisgICAgICAgIHsKKyAgICAgICAgICBpZigg
d1ZpcnRLZXkgPT0gdmtQdHItPlZpcnR1YWxLZXkgKSAKKwkgICAgeworCSAgICAgICpwYkRlYWQg
PSB2a1B0ci0+d2NoW3NoaWZ0XSA9PSBXQ0hfREVBRDsKKwkgICAgICAqcGJMaWdhdHVyZSA9IHZr
UHRyLT53Y2hbc2hpZnRdID09IFdDSF9MR1RSOworCSAgICAgICpwd2NUcmFuc2xhdGVkQ2hhciA9
IHZrUHRyLT53Y2hbc2hpZnRdOworCSAgICAgIGlmKCAqcGJEZWFkICkgCisJICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICB2a1B0ciA9IChQVktfVE9fV0NIQVJTMTApKCgoQllURSAqKXZrUHRy
KSArIHNpemVfdGhpc19lbnRyeSk7CisJICAgICAgICAgIGlmKCB2a1B0ci0+VmlydHVhbEtleSAh
PSAweGZmICkgCisJICAgICAgICAgICAgeworCSAgICAgICAgICAgICAgRFBSSU5UKCAiRm91bmQg
ZGVhZCBrZXkgd2l0aCBubyB0cmFpbGVyIGluIHRoZSB0YWJsZS5cbiIgKTsKKwkgICAgICAgICAg
ICAgIERQUklOVCggIlZLOiAlMDR4LCBBRERSOiAlMDh4XG4iLCB3VmlydEtleSwgKGludCl2a1B0
ciApOworCSAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCQkgICAgfQorCSAgICAgICAgICAq
cHdjVHJhbnNsYXRlZENoYXIgPSB2a1B0ci0+d2NoW3NoaWZ0XTsKKwkgICAgICAgIH0KKwkgICAg
ICAgIHJldHVybiBUUlVFOwogCSAgICB9Ci0JICAgICpwd2NUcmFuc2xhdGVkQ2hhciA9IHZrUHRy
LT53Y2hbal07Ci0JICB9Ci0JICByZXR1cm4gVFJVRTsKKyAgICAgICAgICB2a1B0ciA9IChQVktf
VE9fV0NIQVJTMTApKCgoQllURSAqKXZrUHRyKSArIHNpemVfdGhpc19lbnRyeSk7CiAJfQotICAg
ICAgfQogICAgIH0KLSAgfQorICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0YXRpYwpAQCAtMjQzLDM4
ICszMTUsMzIgQEAKIAkgICAgICAgTFBXU1RSIHB3c3pCdWZmLAogCSAgICAgICBpbnQgY2NoQnVm
ZiwKIAkgICAgICAgVUlOVCB3RmxhZ3MsCi0JICAgICAgIERXT1JEIE1vZEJpdHMsCiAJICAgICAg
IFBLQkRUQUJMRVMgcGtLVCkKIHsKLSAgaW50IGk7Ci0KLSAgRGJnUHJpbnQoIndWaXJ0S2V5PSUw
OHgsIHdTY2FuQ29kZT0lMDh4LCBscEtleVN0YXRlPVtdLCAiCi0JICAgInB3c3pCdWZmPSVTLCBj
Y2hCdWZmPSVkLCB3RmxhZ3M9JXhcbiIsCi0JICAgd1ZpcnRLZXksIHdTY2FuQ29kZSwgLyogbHBL
ZXlTdGF0ZSwgKi8gcHdzekJ1ZmYsCi0JICAgY2NoQnVmZiwgd0ZsYWdzICk7Ci0KLSAgZm9yKCBp
ID0gMDsgcGtLVC0+cFZrVG9XY2hhclRhYmxlW2ldLm5Nb2RpZmljYXRpb25zOyBpKysgKSB7Ci0g
ICAgV0NIQVIgd2NUcmFuc2xhdGVkQ2hhcjsKLSAgICBCT09MIGJEZWFkOwotICAgIEJPT0wgYkxp
Z2F0dXJlOwotCi0gICAgaWYoIFRyeVRvVHJhbnNsYXRlQ2hhciggd1ZpcnRLZXksCi0JCQkgICAg
JnBrS1QtPnBWa1RvV2NoYXJUYWJsZVtpXSwgCi0JCQkgICAgTW9kQml0cywKLQkJCSAgICAmYkRl
YWQsCi0JCQkgICAgJmJMaWdhdHVyZSwKLQkJCSAgICAmd2NUcmFuc2xhdGVkQ2hhciApICkgewot
ICAgICAgaWYoIGJMaWdhdHVyZSApIHsKLQlEUFJJTlQoIk5vdCBoYW5kbGluZyBsaWdhdHVyZSAo
eWV0KVxuIiApOwotCXJldHVybiAwOwotICAgICAgfQorICBXQ0hBUiB3Y1RyYW5zbGF0ZWRDaGFy
OworICBCT09MIGJEZWFkOworICBCT09MIGJMaWdhdHVyZTsKKworICBpZiggIXBrS1QgKSByZXR1
cm4gMDsKKworICBpZiggVHJ5VG9UcmFuc2xhdGVDaGFyKCB3VmlydEtleSwKKwkJCSAgTW9kQml0
cyggcGtLVCwgbHBLZXlTdGF0ZSApLAorCQkJICAmYkRlYWQsCisJCQkgICZiTGlnYXR1cmUsCisJ
CQkgICZ3Y1RyYW5zbGF0ZWRDaGFyLCAKKwkJCSAgcGtLVCApICkgCisgICAgeworICAgICAgaWYo
IGJMaWdhdHVyZSApIAorICAgICAgICB7CisJICBEUFJJTlQoIk5vdCBoYW5kbGluZyBsaWdhdHVy
ZSAoeWV0KVxuIiApOworCSAgcmV0dXJuIDA7CisgICAgICAgIH0KIAorICAgICAgLyogRGJnUHJp
bnQoICJUcmFuczogJTA0eFxuIiwgd2NUcmFuc2xhdGVkQ2hhciApOyAqLwogICAgICAgaWYoIGNj
aEJ1ZmYgPiAwICkgcHdzekJ1ZmZbMF0gPSB3Y1RyYW5zbGF0ZWRDaGFyOwogCi0gICAgICBpZigg
YkRlYWQgKSByZXR1cm4gLTE7Ci0gICAgICBlbHNlIHJldHVybiAxOworICAgICAgcmV0dXJuIGJE
ZWFkID8gLTEgOiAxOwogICAgIH0KLSAgfQogCiAgIHJldHVybiAwOwogfQpAQCAtMjg2LDExICsz
NTIsMzAgQEAKIHsKICAgRFdPUkQgcmV0OwogCi0gICAgaWYgKGtleSA+PSAnYScgJiYga2V5IDw9
ICd6Jykga2V5ICs9ICdBJyAtICdhJzsKKyAgaWYoIGtleSA8IDB4MTAwICkgewogICAgIHJldCA9
ICgoRFdPUkQpKFF1ZXVlS2V5U3RhdGVUYWJsZVtrZXldICYgM